Фильтруйте первые десять минут 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