0

我正在阅读一个 pcap 文件,scapy并且我有兴趣查找异常,例如异常的 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)
4

1 回答 1

0

如果您使用 Scapy 2.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)
于 2019-11-12T16:45:42.343 回答