Фильтруйте первые десять минут pcap

У меня большой файл pcap, и я хотел бы создать новый pcap, который содержит только первые десять минут трафика. Могу ли я сделать это с tcpdump? я видел editcap упоминается в Интернете, но я хотел бы использовать tcpdump если возможно.

1 ответ

Вы можете сделать это с tcpdump; Тем не менее, было бы гораздо проще с editcap потому что единственный практический способ сделать это с tcpdump что я могу думать, это использовать Wireshark (или tshark) сначала найти номер кадра пакета, который занимает не менее 10 минут в файле захвата. Как только у вас есть номер кадра, tcpdump может использоваться только для сохранения пакетов до этого кадра, эффективно ограничивая выходной файл требуемой 10-минутной продолжительностью. Вот как:

Сначала найдите первый пакет, который находится в файле захвата не менее 10 минут (здесь я проиллюстрирую tshark, но можно использовать и Wireshark):

tshark -r bigfile.pcap -Y "frame.time_relative <= 600.0"

Запишите номер кадра последнего отображенного пакета. (Номер кадра - это первый номер каждой строки в предположении стандартного tshark столбцы.) Для наглядности предположим, что это номер кадра 21038.

Во-вторых, использовать tcpdump сохранить только первые 21038 кадров в новый файл:

tcpdump -r bigfile.pcap -c 21038 -w bigfile_first10min.pcap

Но с тех пор editcap поставляется с комплектом Wireshark, вы можете гораздо проще выполнить аналогичный процесс, используя следующую команду, которая разбивает большой файл захвата на файлы захвата продолжительностью 10 минут (кроме последнего, который может быть меньше):

editcap -F pcap -i 600 bigfile.pcap bigfile_split10min.pcap

Если вас интересует только первый файл, не обращайте внимания на остальные.

Конечно, как отметил @madmax1, вы также можете применить простую модификацию к вышеупомянутому tshark Команда для записи пакетов, соответствующих фильтру, в новый файл:

tshark -r bigfile.pcap -Y "frame.time_relative <= 600.0" -w bigfile_first10min.pcap
Другие вопросы по тегам