2024-05-13 17:24:49 发布
网友
我试图从一开始就使用Python的Scapy来分析数据包。在最近的搜索中,我发现python中还有一个名为dpkt的模块。有了这个模块,我可以解析包的层,创建包,读取.pcap文件并写入.pcap文件。我发现他们之间的区别是:
Scapy
dpkt
.pcap
一些字段需要使用struct.unpack在dpkt中解压。
struct.unpack
我还有其他的区别吗?在
我不明白为什么人们说斯凯比表现更好。我很快检查如下所示,赢家是dpkt。是dpkt>;scapy>;pyshark。在
我用于测试的输入pcap文件大约是12.5mb。时间是用bash time命令time python testing.py导出的。在每个片段中,我确保包确实是从原始比特解码的。可以用所需的pcap文件名指定变量FILENAME。在
time python testing.py
from dpkt.pcap import * from dpkt.ethernet import * import os readBytes = 0 fileSize = os.stat(FILENAME).st_size with open(FILENAME, 'rb') as f: for t, pkt in Reader(f): readBytes += len(Ethernet(pkt)) print("%.2f" % (float(readBytes) / fileSize * 100))
平均时间约为0.3秒。在
scapy使用pcaReader
平均时间约为4.5秒。在
scapy使用RawPcapReader
from scapy.all import * import os readBytes = 0 fileSize = os.stat(FILENAME).st_size for pkt, (sec, usec, wirelen, c) in RawPcapReader(FILENAME): readBytes += len(Ether(pkt)) print("%.2f" % (float(readBytes) / fileSize * 100))
import pyshark import os filtered_cap = pyshark.FileCapture(FILENAME) readBytes = 0 fileSize = os.stat(FILENAME).st_size for pkt in filtered_cap: readBytes += int(pkt.length) print("%.2f" % (float(readBytes) / fileSize * 100))
平均时间约为12秒。在
我根本不做dpkt的广告我不在乎。关键是我现在需要解析8GB的文件。因此,我检查了使用dpkt,上面为8gbpcap文件编写的代码需要4.5分钟,这是可以忍受的,而我甚至不会等待其他库完成。至少,这是我的第一印象。如果我有新的信息,我会更新帖子。在
Scapy比dpkt表现更好。
rdpcap
sniff
offline
可能还有许多其他的区别。在
我不明白为什么人们说斯凯比表现更好。我很快检查如下所示,赢家是dpkt。是dpkt>;scapy>;pyshark。在
我用于测试的输入pcap文件大约是12.5mb。时间是用bash time命令
time python testing.py
导出的。在每个片段中,我确保包确实是从原始比特解码的。可以用所需的pcap文件名指定变量FILENAME。在dpkt
平均时间约为0.3秒。在
scapy使用pcaReader
^{pr2}$平均时间约为4.5秒。在
scapy使用RawPcapReader
平均时间约为4.5秒。在
平均时间约为12秒。在
我根本不做dpkt的广告我不在乎。关键是我现在需要解析8GB的文件。因此,我检查了使用dpkt,上面为8gbpcap文件编写的代码需要4.5分钟,这是可以忍受的,而我甚至不会等待其他库完成。至少,这是我的第一印象。如果我有新的信息,我会更新帖子。在
Scapy
比dpkt
表现更好。rdpcap
方法或sniff
方法的offline
参数读取{可能还有许多其他的区别。在
相关问题 更多 >
编程相关推荐