Как фильтровать файлы pcap (например, tcpdump) по регулярному выражению содержимого? - PullRequest
0 голосов
/ 01 марта 2012

У меня есть несколько больших файлов pcap (сбор пакетов), собранных с помощью tcpdump.Я хотел бы отфильтровать пакеты, которые содержат определенную строку.Я хочу, чтобы мой вывод все еще был в формате pcap.Я нашел несколько способов отображения пакетов, соответствующих регулярному выражению, из файла pcap, но мне нужно отфильтровать такие файлы, а не отфильтровать отображение (например, stdout) пакетов.Выходными данными должны быть файлы pcap с удаленными сопоставленными пакетами.

Я подозреваю, что dpkt (модуль python) может помочь, но я бы предпочел сделать это, используя существующий (C / C ++) инструмент, если это возможно.Я приму код в качестве ответа (может быть, хороший пример с тестами на dpkt убедит меня просто пойти по этому пути ;-)).

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

Ответ:

Согласно ответу Нима, это можно сделать через Wireshark / tshark.Для справки других людей, вот пример командной строки, где я проверяю совпадение строк в пакетах udp (этот пример может быть построен для поиска по полям протокола или конкретного протокола):

tshark -r infile  -R 'not udp matches "my_search_string"' -w outfile

Еще раз спасибо!

1 Ответ

2 голосов
/ 01 марта 2012

Этот веб-сайт имеет очень хороший пример того, как вы можете прочитать файл pcap в C, быстрый поиск в Google покажет, как вы можете переписать файл.

В качестве альтернативы AFAIK Wireshark может позволить вам сделать это уже - то есть открыть файл, применить фильтр и сохранить файл (и быстрый просмотр через Wireshark - показывает, что он действительно предлагает это).

...