Как добавить пользовательский анализатор протоколов в 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.