有没有办法使用 Scapy 从 pcap 文件加载特定包?
我知道我可以使用“嗅探”函数和计数属性加载特定数量的包,例如。 G。'
sniff(offline='file.pcap', prn=action, count=31)
但是,我需要获取第 30 个数据包而不加载前面的数据包。 换句话说,我对这样的例子并不满意:
packages = (pkt for pkt in sniff (offline=path, prn=action, count=31)
print(packages[30])
尝试加载百万分之一的包时间太长。
最佳答案
每个数据包 header 都说明了它的长度。一旦解析器读取了该 header ,它就可以计算下一个 header 的位置。据我所知,您无法打开 pcap 文件并立即找到数据包 30;您需要解析前 29 个 header 。
但是您也不必将所有数据包保留在内存中,只要在接收时处理它们即可。
i = 0
for pkt in sniff(offline=path, prn=action):
if i == 30:
print pkt
break
关于python - 使用 Scapy 模块 (python) 从 pcap 文件获取特定包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071959/