Изменение файла pcap на основе длины пакета и других параметров

Я согласен с тем, что на этом сайте много сообщений о редактировании файлов .pcap. Однако мне не удалось найти редактор .pcap, который мог бы эффективно удалять записи в зависимости от определенных условий.

Например, я хочу удалить все пакеты длиной 172 байта через время = 2 секунды. Есть ли инструмент, обеспечивающий такой уровень гибкости?

Если нет, есть ли способ получить доступ к файлу .pcap с помощью С++, а затем отредактировать его и сохранить обратно как файл .pcap?


person V-Red    schedule 31.05.2017    source источник
comment
Недавно я написал инструмент Java на основе Pcap4J для этой цели: github.com/jvmk/pcap-trimmer   -  person Janus Varmarken    schedule 16.03.2019


Ответы (1)


Решение №1

Самый гибкий подход — это написание собственного кода для подобных вещей. Чтение pcap-файла очень просто на большинстве языков программирования, использующих специальные библиотеки. В C++ это можно сделать с помощью libpcap (см. этот ответ)

Решение №2

Если файл pcap не слишком велик, вы можете использовать Wireshark. Просто загрузите файл в Wireshark и введите следующий фильтр отображения, а затем Enter: !(frame.time_relative > 2 && frame.len == 172). Затем перейдите в File -> Export Specified Packets.. и выберите displayed, введите имя файла и сохраните результат:

введите здесь описание изображения

Решение №3

Если размер файла большой, но не огромный, или если вам нужно решение командной строки, вы можете использовать tshark, версия Wireshark для командной строки. Просто прочитайте исходный файл (-r), примените тот же фильтр отображения (-Y) и запишите полученный файл в новое место (-w):

Что-то типа:

tshark -r input.pcap -Y "!(frame.time_relative > 2 && frame.len == 172)" -w output.pcap

Решение №4

Последнее решение, которое я могу предложить, это использование libtrace (здесь на github). Однако это немного сложно, поскольку вам нужно фильтровать как свойства пакета, так и время.

Одним из способов будет использование следующей последовательности шагов:

  1. сначала разделите файл pcap с помощью tracesplit на два файла - A.pcap и B.pcap где A.pcap будет содержать пакеты до отметки 2 секунды, а B будет содержать остальную часть трассировки.

  2. Используйте tracefilter для фильтрации A.pcap, поэтому будут обрабатываться только пакеты длиной менее 172 байт. остаются - строка фильтра len != 172

  3. Используйте tracemerge, чтобы объединить отфильтрованные файлы A.pcap и B.pcap в один файл. .

person Malt    schedule 03.06.2017