python - 更快的解析 .pcap 的方法

标签 python packet scapy tcpdump dpkt

我正在尝试解析巨大的 .pcap 文件(每个大约 1-2GB)。我曾尝试使用 scapy,但到目前为止速度很慢。我使用以下具有不同计数值的代码对时间进行了基准测试

from scapy.all import *
from scapy.layers.dns import DNSRR, DNS, DNSQR
import time
t0 = time.time()
pcap = 'output.pcap'
pkts = rdpcap(pcap, count=1000000)
t1 = time.time()
print(t1-t0)

似乎 rdpcap() 每秒只能处理大约 800 个数据包。是否有针对 scapy、其他工具或扩展此过程的好方法的优化?每个数据包都应该是 DNS。

最佳答案

为了真正给您可靠的反馈,我需要您发布更多的代码。但据我所知:

我的第一个想法是使用线程(如果可能的话:我不确定你的代码的其余部分是什么样的)

我的第二个想法是检查 rdpcap() 函数的返回类型并查看该变量类型的最大大小。可能是您试图将比可用空间更多的数据放入缓冲区。

关于python - 更快的解析 .pcap 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317092/

相关文章:

python - 如何直接从命令行登录应用程序,即通过在 Pytest 的命令行中提供 URL、用户名、密码

python - 索引错误: index 3 is out of bounds for axis 0 with size 3 pygame

linux - 碎片(DF位)对rtt和ttl的影响

c# - C# 中提取/插入运算符重载的类似替代方案存在于 C++ 中

python - matplotlib/seaborn 带颜色图的 fiddle 图

python - 如何使用 python 将 utf-8 字符正确插入 MySQL 表

ffmpeg - 如何使用 AVPacket 中编码的数据填写 RTMP_Packet 并发送到 RTMP 服务器

python - 将 Packet.show() 表示形式放入字符串变量中

python - Scapy sniff() 在一个子类 threading.Thread() 的类中

python - 使用 scapy、iftop 样式计算每个 IP 的带宽使用情况