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

标签 python offline scapy packet

有没有办法使用 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/

相关文章:

python - Django - 应用程序由什么构成?

apache - .NET Core Web 应用程序 - app_offline 等效/安全停止 Web 应用程序进行维护

python - Scapy 查看传输的 Html

python - scapy "TypeError: ' IP'对象不可调用”

javascript - 如何检查设备是在线还是离线 Phonegap

python-3.x - Scapy 和 Python 3.2

python - 使用 Tkinter,如何让按钮在选择单选选项时出现,然后在不再选择该单选选项时消失?

python - 用于实现 Python str.count 函数的算法

python - 可重新部署的 conda 环境

javascript - 如何在连接可用时离线启动应用程序并同步