2011-02-05 45 views
32

我有一个自定义协议,我正在wireshark中查看。 我认为这会很有用,如果wireshark可以为我解决它,这样我就不必解码十六进制。尽管我在程序日志中这样做,wireshark通过计时信息捕捉整个对话,所以它在那里会更有用。如何将自定义协议分析器添加到wireshark?

这可以很容易地完成?

回答

14

这取决于你对“容易”的定义。这绝对是可行的 - Wireshark对可插拔解析器有很好的支持。

README.developer显然是解剖器发展的“最佳手册”。看一看,然后自己决定。

+2

谢谢,这是我以后。我也发现了这个链接:http://www.wireshark.org/docs/wsdg_html_chunked/ChapterDissection.html – Matt 2011-02-05 03:47:19

26

您可以使用Wireshark的LUA API编写解剖器。这样你就可以在不下载Wireshark的代码甚至是编译器的情况下编写一个快速且肮脏的解析器。 一个非常简单而强大的示例显示为in the documentation。 这样的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 - 一个从C结构定义生成Lua解析器以用于Wireshark的工具。