使用Scapy从pcap获取HTTP响应代码

2024-09-27 09:23:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用scapy读取一个pcap文件,我对发现异常感兴趣,比如异常的TCP标志或HTTP代码,比如403429等等

我可以使用TCP端口发现这个流量属于HTTP,但是如何获得HTTP的状态码和TCP的标志呢?你知道吗

这就是我目前所做的:

for pkt in PcapReader(pcap):
    if (TCP in pkt and (pkt[TCP].sport == 80 or pkt[TCP].dport === 80)):
        pList.append(pkt)

Tags: 文件端口代码inhttpfor标志状态
1条回答
网友
1楼 · 发布于 2024-09-27 09:23:41

如果您使用scapy2.4.3+,您可以启用HTTP插件并简化代码。请参见:

另外,为了使用TCPSession自动处理HTTP数据包,我将使用sniff(prn=)而不是PcapReader。他们做同样的事。你知道吗

from scapy.layers.http import *
from scapy.sessions import TCPSession
from scapy.sendrecv import sniff
plist = []

def func(pkt):
    # called on each packet
    if HTTP in pkt:
        if HTTPResponse in pkt:
            # status codes are only in responses
            status = pkt[HTTPResponse].Status_Code
            if int(status) in [403, 429]: # check code
                plist.append(pkt)

sniff(offline="./my_file.pcap", prn=func, store=False, session=TCPSession)

相关问题 更多 >

    热门问题