使用 Scapy 模块从 pcap 文件中获取特定包 (python)
Getting a particular package from the pcap file using the Scapy module (python)
有没有办法使用 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,它就可以计算下一个的位置。据我所知,您无法打开 pcap 文件并 立即 定位数据包 30;您需要解析前 29 个的 header。
但是您也不必将所有数据包都保存在内存中,只要您在接收时处理它们即可。
i = 0
for pkt in sniff(offline=path, prn=action):
if i == 30:
print pkt
break
有没有办法使用 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,它就可以计算下一个的位置。据我所知,您无法打开 pcap 文件并 立即 定位数据包 30;您需要解析前 29 个的 header。
但是您也不必将所有数据包都保存在内存中,只要您在接收时处理它们即可。
i = 0
for pkt in sniff(offline=path, prn=action):
if i == 30:
print pkt
break