2016-07-11 18 views
1

Я пытаюсь разобрать огромные файлы .pcap (~ 1-2 ГБ каждый). Я попытался использовать scapy, но до сих пор это очень медленно. Я протестированные тайминги, используя следующий код с различными значениями для подсчетаУскоренный способ разбора .pcap

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.

ответ

0

Чтобы действительно дать вам солидную обратную связь, мне нужно, чтобы вы разместили большую часть вашего кода. Но от чего я могу видеть:

Моя первая мысль была бы использовать многопоточность (если это возможно: Я не уверен, что остальная часть кода выглядит)

Моя вторая мысль была бы проверить возвращение тип вашей функции rdpcap() и максимальный размер для этого типа переменной. Возможно, вы пытаетесь вставить больше данных в буфер, чем у вас есть свободное место.