首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python对dpkt

Python对dpkt
EN

Stack Overflow用户
提问于 2015-06-14 05:07:23
回答 2查看 10.4K关注 0票数 8

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

  1. dpkt中丢失实时数据包嗅探器
  2. 有些字段需要使用struct.unpackdpkt中解压缩。

我还有什么不同之处吗?

EN

回答 2

Stack Overflow用户

发布于 2016-06-22 09:30:53

Scapy dpkt**.**表现更好

  1. 你可以创建,嗅探,修改和发送一个数据包使用替罪羊。而dpkt只能对数据包进行分析和创建。要发送它们,您需要原始套接字。
  2. 正如你所提到的,Scapy能嗅到活着的气息。它可以从网络中嗅探,也可以使用rdpcap方法或sniff方法的offline参数读取sniff文件。
  3. Scapy通常用于创建数据包分析器和注入器。其模块可用于为特定目的创建特定的应用程序。

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

票数 7
EN

Stack Overflow用户

发布于 2019-05-13 21:07:53

我不明白为什么人们说Scapy表现得更好。我迅速检查了如下所示,获胜者是dpkt。是dpkt >替罪羊>大鲨鱼。

用于测试的输入pcap大约为12.5 MB。时间由bash命令time python testing.py导出。在每个片段中,我确保数据包确实是从原始数据中解码的。可以用所需的pcap名称分配变量文件名。

dpkt

代码语言:javascript
复制
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秒。

替罪羊--使用PcapReader

代码语言:javascript
复制
from scapy.all import *
import os

readBytes = 0
fileSize  = os.stat(FILENAME).st_size

for pkt in PcapReader(FILENAME):

    readBytes += len(pkt)
    print("%.2f" % (float(readBytes) / fileSize * 100))

平均时间约为4.5秒。

替罪羊--使用RawPcapReader

代码语言:javascript
复制
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秒。

石竹( pyshark )

代码语言:javascript
复制
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秒。

我根本不做广告--我不在乎。关键是我需要解析当前的8GB文件。所以我用dpkt检查了上面为一个8GB pcap编写的代码,它完成了4.5分钟,这是可以忍受的,而我甚至不会等待其他库完成。至少这是我快速的第一印象。如果我有新的信息,我会更新这篇文章。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30826123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档