Как хранить данные захвата пакетов (* .pcap) для анализа

Я собрал несколько мегабайт сетевого трафика и хочу провести анализ. Проблема, с которой я столкнулся, заключается в том, что я хочу сохранить его таким образом, чтобы уменьшить временную сложность при поиске.

Самая первая идея, которая у меня возникла, заключалась в том, чтобы поместить ее в базу данных со всеми возможными атрибутами в столбцах, но затем я понял, что в таблице будет много значений NULL, это замедлит производительность базы данных. Даже если снижение производительности для небольшой базы данных будет незначительным, когда я проанализирую большой файл * .pcap (более 1 ГБ), ухудшение резко повлияет на производительность базы данных. Поскольку размер базы данных увеличится, а также количество значений NULL в таблице.

Итак, есть ли лучший способ сохранить файл * .pcap для анализа, я рассматривал XML-дерево как решение, но я не уверен в этом. Я использую python для этого, и я использую модуль dpkt для извлечения данных из файла * .pcap

Заранее спасибо


person thecreator232    schedule 03.10.2013    source источник
comment
Какую производительность вы получаете при разборе pcap? какой производительности вы надеетесь достичь?   -  person tMC    schedule 03.10.2013
comment
Какие у вас планы с проанализированными данными? Вы хотите его просмотреть? Ищете что-нибудь? Отфильтровать определенные пакеты?   -  person Milo    schedule 03.10.2013
comment
@Milo: я хочу запустить поиск по данным, чтобы получить соответствующие пакеты. а также фильтровать определенные пакеты. Основная работа - запустить поиск по данным.   -  person thecreator232    schedule 03.10.2013
comment
@tMC: Я не смог ни во что разобрать данные, так как у меня нет подходящего способа их хранения. Итак, в основном я просто разобрал файл pcap в текстовый файл. Что касается производительности, то сейчас это отстой.   -  person thecreator232    schedule 03.10.2013
comment
Я написал анализатор транспортного потока MPEG-2 (файлы TS огромны), и мой подход заключался в создании специальной карты для файла. Это был простой список в памяти, содержащий некоторую основную информацию о пакетах и ​​быстром синтаксическом анализе. И когда мне нужна была подробная информация, я проанализировал выбранный пакет (и несколько других, окружающих его) из файла TS. Я думаю, что это можно применить и здесь: например, если вы хотите отфильтровать пакеты UDP или TCP, добавьте эту информацию на карту. Это просто идея.   -  person Milo    schedule 03.10.2013


Ответы (1)


Возможно, вы можете сделать это в два этапа:

Сначала используйте инструмент tshark для преобразования файлов pcap в .csv; Например:

tshark -r input_file.pcap -n -T fields -E separator=, -e frame.time -e ip.src -e ip.dst -e ip.proto -e tcp.port >outfile.csv

Затем используйте модуль csv в Python, чтобы прочитать его и провести анализ.

 import csv
 with open("outfile.csv", "r") as f:
     reader = csv.reader(f, delimiter=",")
     for row in reader:
         # do whatever with the data row...

Надеюсь это поможет.

person mguijarr    schedule 04.10.2013