Как определить, из какого файла пришел пакет после слияния файлов

Я имею дело с большим количеством файлов pcap из многочисленных источников коллекции. Мне нужно программно фильтровать, и я использую для этого tshark, поэтому сначала я объединяю все файлы вместе, используя mergecap. Проблема в том, что мне также нужна информация о точке сбора, которая доступна только в имени файла захвата. Я попытался использовать editpcap для добавления комментариев к каждому пакету с указанием исходного файла, однако это несостоятельно (объяснение см. Ниже). Любые идеи, как отслеживать исходный файл после слияния файлов pcap?

почему решение editcap не работает. Я рассматривал возможность использования editcap для добавления комментариев к каждому пакету перед объединением (Как добавить комментарий ко всем пакетам в многочисленных файлах pcap перед объединением в один файл), однако проблема с этим подходом заключается в том, что editcap требует индивидуального указания каждого комментария пакета в командной строке (вы не можете указать диапазон пакетов). Это сотни тысяч комментариев, и командная строка этого не поддержит. Кроме того, если я пытаюсь запустить editpcap всего с несколькими комментариями за раз, он каждый раз перезаписывает весь файл, что приводит к тысячам перезаписей файлов. Тоже нежизнеспособен.


person Greysquall    schedule 23.06.2020    source источник


Ответы (1)


Если исходные файлы захвата имеют формат .pcapng, то каждый из них содержит блок описания интерфейса или IDB. Когда вы запускаете mergecap для их объединения, вы можете указать, что IDB не быть объединены с помощью опции -I none. Таким образом, номер интерфейса будет уникальным для исходного файла, и вы можете добавить столбец, показывающий эту информацию, чтобы легко различать источник каждого пакета по идентификатору интерфейса, или вы можете применить фильтр отображения, чтобы изолировать только те пакеты из определенного файл захвата.

Используемым фильтром или столбцом будет поле frame.interface_id, но вы также можете фильтровать по frame.interface_name или frame.interface_description, если они все значения полей также имеют разные значения, но нет гарантии, что эти поля будут уникальными, поскольку имя и/или описание интерфейса могут содержать одинаковую информацию, даже если файлы захвата происходят с разных компьютеров.

person Christopher Maynard    schedule 24.06.2020
comment
к сожалению, файлы захвата - это pcap, а не pcapng, и, как вы сказали, я не могу полагаться на уникальность IDB из-за «бизнес-логики». Тем не менее, это заставляет меня задаться вопросом, могу ли я после сбора перебрать все файлы pcap, добавить описание IDB и сохранить как новый pcapng, а затем объединить все pcapng вместе. Можно ли добавить описания IDB после сбора аналогично комментариям IDB? И можно ли это сделать программно? - person Greysquall; 01.07.2020
comment
В настоящее время, когда вы конвертируете файлы pcap в pcapng с помощью editcap, добавляется фиктивный IDB Ethernet. («Editcap» — это инструмент командной строки, поэтому преобразование можно выполнить по сценарию.) К сожалению, все файлы pcapng, созданные таким образом, не будут содержать interface_description и будут известны только как interface_name; тем не менее, mergecap будет перечислять все интерфейсы, поэтому каждый пакет будет по крайней мере указывать идентификатор перечисляемого интерфейса, из которого он пришел, в поле interface_id, поэтому вы должны иметь возможность использовать эту информацию, чтобы узнать, какой пакет пришел из какого исходного файла и точки захвата. - person Christopher Maynard; 04.07.2020