我正在尝试解析巨大的 .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/