Как переслать данные, обработанные Wireshark, на python?в каком методе? - PullRequest
1 голос
/ 22 апреля 2019

Wireshark - это мощный инструмент для анализа сетевого трафика.Но из моей практики, он может экспортировать только обработанные данные (что означает, что вы говорите, какая часть, например, «данные»: 123456 и т. Д.), В файл .pcap, но я хотел бы выводить сегмент «данные» в каждомПакет TCP в реальном времени (или 90% в реальном времени) для другого приложения, такого как мой скрипт на python для дальнейшего использования (может быть через TCP forward? Pipe?)

Я не знаю, как его получитьсделано точно.Кто-нибудь хочет помочь мне с этим?Спасибо ~

ps: не удалось получить снимок, потому что мне нечего показать, даже код ...

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

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 и предоставляет его вашему коду, реализованному в виде плагина . В таком плагине вы получаете полный доступ к каждому кадру и потоку и можете делать все, что пожелаете.

Пример плагинов:

Следующий скриншот демонстрирует, как создать и запустить новый плагин за считанные секунды:

asciicast

pdml2flow реализует все строительные блоки, чтобы вы быстро приступили к обработке фреймов в python. Я надеюсь, что это помогло, и я ценю любые отзывы. Спасибо.

0 голосов
/ 23 апреля 2019

Рассмотрите возможность использования именованных каналов в качестве буфера для межпроцессного взаимодействия.

...