tldr ; Передайте tshark вывод в любом формате (-T
) в вашу программу на python и проанализируйте его там.
В настоящее время я работаю над проектом под названием pdml2flow , который также может помочь вам. В проекте я использую вывод pdml (XML) из tshark. Который передается в pdml2flow:
$ tshark -i interface -Tpdml | pdml2flow +json
Я выбрал pdml, потому что он был наиболее полным и стабильным при запуске. Но в наши дни также возможны многие форматы вывода, такие как json или postscript. От tshark (1) :
-T ek|fields|json|jsonraw|pdml|ps|psml|tabs|text
Установите формат вывода при просмотре декодированных пакетных данных. Возможны следующие варианты:
ek
: формат JSON с разделителями новой строки для массового импорта в Elasticsearch. Может использоваться с -j
или -J
, включая фильтр JSON
или с -x
для включения необработанных шестнадцатеричных данных пакета. Если указано -P
он будет печатать только сводку пакетов, с -P
и -V
распечатайте резюме пакета и детали пакета. Если ни -P
, ни -V
не
используется он будет печатать только детали пакета. Пример использования для импорта
данные в Elasticsearch:
$ tshark -T ek -j "http tcp ip" -P -V -x -r file.pcap > file.json
$ curl -H "Content-Type: application/x-ndjson" -XPOST http://elasticsearch:9200/_bulk --data-binary "@file.json"
Elastic требует, чтобы файл сопоставления был загружен как шаблон для пакетов- * index, чтобы преобразовать типы wireshark в эластичные типы.
Этот файл может быть сгенерирован автоматически с помощью команды tshark -G
elastic-mapping
. Поскольку файл сопоставления может быть огромным, протоколы могут быть
выбирается с помощью опции --elastic-mapping-filter
:
tshark -G elastic-mapping --elastic-mapping-filter ip,udp,dns
fields
: Значения полей, указанных с помощью параметра -e
, в форме, указанной с помощью параметра -E
. Например,
tshark -T fields -E separator=, -E quote=d
будет генерировать выходные данные с разделителями-запятыми (CSV), подходящие для импорта в вашу любимую программу электронных таблиц.
json
: формат файла JSON. Его можно использовать с -j
или -J
, включая фильтр JSON, или с опцией -x
для включения необработанных шестнадцатеричных данных пакета.
Пример использования:
$ tshark -T json -r file.pcap
$ tshark -T json -j "http tcp ip" -x -r file.pcap
jsonraw
: формат файла JSON, включающий только необработанные данные в шестнадцатеричном формате. Он может использоваться с -j
, включая или -J
опцией фильтра JSON.
Пример использования:
$ tshark -T jsonraw -r file.pcap
$ tshark -T jsonraw -j "http tcp ip" -x -r file.pcap
pdml
: язык разметки сведений о пакете, основанный на XML формат для деталей декодированного пакета. Эта информация эквивалентна
детали пакета печатаются с опцией -V
. Использование опции --color
добавит атрибуты цвета в вывод pdml. Эти атрибуты
нестандартный.
ps
: PostScript для удобочитаемой однострочной сводки каждого из пакетов или многострочного представления деталей каждого из пакетов,
в зависимости от того, была ли указана опция -V
.
psml
: язык разметки сводных пакетов, основанный на XML формат для сводной информации о декодированном пакете. Эта информация
эквивалентно информации, отображаемой в однострочном резюме, напечатанном
дефолт. Использование опции --color
добавит атрибуты цвета в pdml
выход. Эти атрибуты нестандартны.
tabs
: аналогично текстовому отчету по умолчанию, за исключением того, что для каждого пакета удобочитаемое резюме в одну строку будет содержать горизонтальную вкладку ASCII
(0x09) символ в качестве разделителя между каждым столбцом.
text
: текст удобочитаемой однострочной сводки каждого из пакетов или многострочное представление деталей каждого из пакетов,
в зависимости от того, была ли указана опция -V. Это значение по умолчанию.
Это означает, что ничто не мешает вам написать собственный синтаксический анализатор для любого из этих форматов вывода:
$ tshark -i interface -Tjson | python your_program.py
Для удобства pdml2flow уже анализирует pdml для вложенного dict
Python и предоставляет его вашему коду, реализованному в виде плагина . В таком плагине вы получаете полный доступ к каждому кадру и потоку и можете делать все, что пожелаете.
Пример плагинов:
Следующий скриншот демонстрирует, как создать и запустить новый плагин за считанные секунды:
pdml2flow реализует все строительные блоки, чтобы вы быстро приступили к обработке фреймов в python. Я надеюсь, что это помогло, и я ценю любые отзывы. Спасибо.