Как добавить пользовательский анализатор протоколов в wirehark?
У меня есть собственный протокол, который я просматриваю в wirehark.
Я подумал, что было бы полезно, если wirehark может отредактировать это для меня, так что мне не нужно расшифровывать гекс. Хотя я делаю это в своих журналах программ, wirehark фиксирует весь разговор с информацией о времени, поэтому было бы более полезно там.
Легко ли это сделать?
Ответы
Ответ 1
Это зависит от вашего определения "легко". Это определенно выполнимо - Wireshark имеет большую поддержку подключаемых диссексуалов.
README.developer, по-видимому, является "лучшим руководством" для разработки диссектора. Взгляните и решите для себя.
Ответ 2
Вы можете писать диссекторы с использованием Wireshark LUA API. Таким образом, вы можете написать быстрый и грязный диссектор без загрузки кода Wireshark или даже компилятора.
Очень простой, но мощный пример показан в документации.
Такой рассеиватель LUA отлично подходит для отладки и даже распространения с вашим проектом.
Если вы намерены передать своего диссектора официальному репозиторию Wireshark, вам следует, конечно, реализовать его в C по соображениям производительности и интеграции.
Чтобы использовать ваш диссектор, создайте файл my_dissector.lua
и вызовите Wireshark следующим образом: wireshark -X lua_script:my_dissector.lua
Ответ 3
В качестве альтернативы вместо написания собственного диссектора есть несколько проектов, которые генерируют анализатор протокола из определения или предоставляют DSL поверх API:
- wssdl - библиотека Lua, которая определяет язык, специфичный для домена, построенный поверх Lua с целью определения протоколов.
- wsgd - общий диссектор, который анализирует определение протокола и использует его для анализа сообщений.
- asn2wrs - инструмент, который компилирует спецификацию ASN.1 и некоторый C-клей для диссектора Wireshark.
- csjark - инструмент для генерации диссеекторов Lua из определений структуры C для использования с Wireshark.