Более быстрый способ разбора .pcap

Я пытаюсь разобрать огромные файлы .pcap (~ 1-2 ГБ каждый). Я пытался использовать 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.


person deltap    schedule 11.07.2016    source источник


Ответы (1)


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

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

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

person keelyn roberts    schedule 01.09.2016