2

巨大な .pcap ファイル (それぞれ ~1 ~ 2GB) を解析しようとしています。私はscapyを使用しようとしましたが、これまでのところ遅くなります。count の値が異なる次のコードを使用して、タイミングをベンチマークしました。

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 であると想定されます。

4

1 に答える 1

0

本当に確かなフィードバックを提供するには、コードのより大きなチャンクを投稿する必要があります. しかし、私が見ることができるものから:

私の最初の考えは、スレッドを使用することです(可能であれば、コードの残りの部分がどのように見えるかわかりません)

2 番目に考えたのは、rdpcap() 関数の戻り値の型を確認し、その変数の型の最大サイズを確認することです。使用可能なスペースよりも多くのデータをバッファーに収めようとしている可能性があります。

于 2016-09-01T15:59:23.323 に答える