使用 Scapy 模块 (python) 从 pcap 文件中获取特定包



有没有办法使用 Scapy 从 pcap 文件加载特定包?

我知道我可以使用'嗅探'函数和计数属性加载特定数量的包,例如。

sniff(offline='file.pcap', prn=action, count=31)

但是,我需要在不加载以前的数据包的情况下获取第 30 个数据包。换句话说,我对这样的例子不满意:

packages = (pkt for pkt in sniff (offline=path, prn=action, count=31) 
print(packages[30])

加载百万分之一包的尝试太长。

每个数据包标头都说明它有多长。一旦解析器读取了该标头,它就可以计算下一个标头的位置。所以据我所知,你不能打开一个pcap文件并立即找到数据包30;您需要解析前 29 个标头。

但是您也不必将所有数据包保留在内存中,只要您在接收时处理它们即可。

i = 0
for pkt in sniff(offline=path, prn=action):
    if i == 30:
        print pkt
        break

最新更新