Как добавить пользовательский анализатор протоколов в wireshark?

У меня есть пользовательский протокол, который я смотрю в Wireshark. Я подумал, что было бы полезно, если бы wireshark мог отключить его для меня, чтобы мне не пришлось декодировать гекс. Хотя я делаю это в своих журналах программ, wireshark захватывает весь разговор с информацией о времени, поэтому там было бы более полезно.

Это можно легко сделать?

3 ответов


Это зависит от вашего определения "легко". Это определенно выполнимо-Wireshark имеет отличную поддержку подключаемых диссекторов.

README.разработчик по-видимому, "лучшее руководство" для разработки диссектора. Взгляните и решите сами.


вы можете писать диссекторы с помощью API Lua Wireshark. Таким образом, вы можете написать быстрый и грязный диссектор без загрузки кода Wireshark или даже компилятора. Очень простой, но мощный пример документации. Такой Lua-диссектор отлично подходит для отладки и даже распространения с вашим проектом.

Если вы намерены зафиксировать свой диссектор в официальном репозитории Wireshark, вы должны, конечно, реализовать его в C для повышения производительности и интеграции.

чтобы использовать ваш диссектор, создайте файл my_dissector.lua и вызовите Wireshark следующим образом:wireshark -X lua_script:my_dissector.lua


кроме того, вместо написания собственного диссектора есть некоторые проекты, которые генерируют диссектор протокола из определения или предоставляют DSL поверх API:

  • wssdl -- библиотека Lua, которая определяет доменный язык, построенный поверх Lua для определения рассекателей протокола.
  • wsgd -- универсальный рассекатель, который анализирует определение протокола и использует его для рассечения сообщения.
  • asn2wrs -- инструмент, который компилирует ASN.1 спецификация и некоторый клей C к рассекателю Wireshark.
  • csjark -- инструмент для генерации Lua-диссекторов из определений структуры C для использования с Wireshark.