Python Scapy vs dp

2024-05-13 17:24:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一开始就使用Python的Scapy来分析数据包。在最近的搜索中,我发现python中还有一个名为dpkt的模块。有了这个模块,我可以解析包的层,创建包,读取.pcap文件并写入.pcap文件。我发现他们之间的区别是:

  1. dpkt

    中缺少实时数据包嗅探器
  2. 一些字段需要使用struct.unpackdpkt中解压。

我还有其他的区别吗?在


Tags: 模块文件pcap数据包structscapy嗅探器区别
2条回答

我不明白为什么人们说斯凯比表现更好。我很快检查如下所示,赢家是dpkt。是dpkt>;scapy>;pyshark。在

我用于测试的输入pcap文件大约是12.5mb。时间是用bash time命令time python testing.py导出的。在每个片段中,我确保包确实是从原始比特解码的。可以用所需的pcap文件名指定变量FILENAME。在

dpkt

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

^{pr2}$

平均时间约为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))

平均时间约为4.5秒。在


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分钟,这是可以忍受的,而我甚至不会等待其他库完成。至少,这是我的第一印象。如果我有新的信息,我会更新帖子。在

Scapydpkt表现更好。

  1. 您可以使用scapy创建、嗅探、修改和发送数据包。而dpkt只能分析和创建数据包。要发送它们,您需要原始套接字。在
  2. 正如你提到的,斯卡比可以现场嗅。它可以从网络中嗅探,也可以使用rdpcap方法或sniff方法的offline参数读取{}文件。在
  3. Scapy通常用于创建包分析器和注射器。它的模块可用于创建特定用途的特定应用程序。在

可能还有许多其他的区别。在

相关问题 更多 >