pythonscapy vs dpkt
我从一开始就试图使用Python的pythonscapy vs dpkt,python,scapy,dpkt,Python,Scapy,Dpkt,我从一开始就试图使用Python的Scapy分析数据包。在最近的搜索中,我发现python中还有另一个模块名为dpkt。有了这个模块,我可以解析数据包的层,创建数据包,读取.pcap文件并写入.pcap文件。我发现他们之间的区别是: dpkt中缺少实时数据包嗅探器 一些字段需要使用dpkt中的struct.unpack解包 我还缺少其他方面的差异吗?Scapy的表现优于dpkt 您可以使用scapy创建、嗅探、修改和发送数据包。而dpkt只能分析并创建数据包。要发送它们,您需要原始套接字 正如你
Scapy
分析数据包。在最近的搜索中,我发现python中还有另一个模块名为dpkt
。有了这个模块,我可以解析数据包的层,创建数据包,读取.pcap
文件并写入.pcap
文件。我发现他们之间的区别是:
dpkt中缺少实时数据包嗅探器
dpkt
中的struct.unpack
解包我还缺少其他方面的差异吗?
Scapy
的表现优于dpkt
rdpcap
方法或sniff
方法的offline
参数读取.pcap
文件可能还有很多其他的不同之处。我不明白为什么人们说Scapy的表现更好。如下图所示,我很快进行了检查,获胜者是dpkt。这是dpkt>scapy>pyshark 我用于测试的输入pcap文件大约为12.5MB。时间是通过bash-time命令
time-python-testing.py
派生的。在每个片段中,我确保数据包确实是从原始比特解码的。可以使用所需的pcap文件名分配变量FILENAME
dpkt
从dpkt.pcap导入*
从dpkt.ethernet导入*
导入操作系统
readBytes=0
fileSize=os.stat(FILENAME).st\u size
将open(FILENAME,'rb')作为f:
对于t,读取器中的pkt(f):
readBytes+=len(以太网(pkt))
打印(“%.2f”%(浮点(读字节)/文件大小*100))
平均时间约为0.3秒
scapy——使用PcapReader
从scapy.all导入*
导入操作系统
readBytes=0
fileSize=os.stat(FILENAME).st\u size
对于PcapReader中的pkt(文件名):
readBytes+=len(pkt)
打印(“%.2f”%(浮点(读字节)/文件大小*100))
平均时间约为4.5秒
scapy——使用RawPcapReader
从scapy.all导入*
导入操作系统
readBytes=0
fileSize=os.stat(FILENAME).st\u size
对于RawPcapReader(文件名)中的pkt(sec、usec、wirelen、c):
readBytes+=len(以太(pkt))
打印(“%.2f”%(浮点(读字节)/文件大小*100))
平均时间约为4.5秒
pyshark
导入pyshark
导入操作系统
filtered_cap=pyshark.FileCapture(文件名)
readBytes=0
fileSize=os.stat(FILENAME).st\u size
对于过滤盖中的pkt:
readBytes+=int(pkt.length)
打印(“%.2f”%(浮点(读字节)/文件大小*100))
平均时间约为12秒
我根本不为dpkt做广告——我不在乎。关键是我目前需要解析8GB文件。所以我检查了一下,使用dpkt,上面为8GB pcap文件编写的代码完成了4.5分钟,这是可以接受的,而我甚至不会等待其他库完成。至少,这是我的第一印象。如果我有一些新的信息,我会更新帖子 表演怎么样?您测试过它们了吗?Scapy提供了比dpkt.Hmm更好的性能,但永远不要忘记数据包捕获接口缓冲。您必须解决这一问题,否则将因实时监控而遭受巨大的性能损失。以上内容是错误的。Scapy是纯粹的pythonther,不应该有比较。一般来说,您可能不应该使用任何基于Python的软件来快速处理大量数据
dpkt
速度更快,但在scapy
中添加自己的图层更容易pyshark
wrappstshark
=wireshark,因此您根本无法添加任何内容,但它得益于wireshark的稳定性和多样性。FTR如果您尝试使用pypy,它会加快速度。好的,dpkt要快得多,对于某些(相当常见的)操作来说,它的速度大约是10倍。我在15分钟内处理了大约5000万个数据包,并进行了一些相对基本的操作,但仍然需要。我没有准备好等待我之前完成的scapy实现。@AdamKalisz我同意。但是对SCAPI有一点调整,Saby和DPKT的性能相当。只需将一些常见操作更改为内置函数。如果您能指出您提到的这些更改的摘要,并将其合并到主要的Scapy文档中,那就太好了。