如何向wireshark添加自定义协议分析器?

时间:2011-02-05 03:41:19

标签: wireshark wireshark-dissector

我有一个自定义协议,我正在wireshark中查看。 我认为如果wireshark可以为我解读它,那么我将不需要解码十六进制。虽然我在程序日志中执行此操作,但wireshark会使用时间信息捕获整个会话,因此在那里会更有用。

这可以轻松完成吗?

3 个答案:

答案 0 :(得分:27)

您可以使用Wireshark的LUA API编写解剖器。这样你就可以编写一个快速而肮脏的解剖器而无需下载Wireshark的代码,甚至是编译器。 显示了一个非常简单但功能强大的示例in the documentation。 这样的LUA解剖器非常适合调试使用,甚至可以与您的项目一起分发。

如果您打算将解剖器提交到Wireshark官方存储库,您当然应该在性能和集成方面用C实现它。

要使用解剖器,请创建一个文件my_dissector.lua并像这样调用Wireshark:wireshark -X lua_script:my_dissector.lua

答案 1 :(得分:18)

这取决于您对“轻松”的定义。这绝对可行 - Wireshark对可插拔的解剖器有很大的支持。

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

答案 2 :(得分:4)

或者,有些项目不是编写自己的解剖器,而是根据定义生成协议解析器或在API之上提供DSL:

  • wssdl - 一个Lua库,它定义了一个基于Lua构建的特定于域的语言,用于定义协议解析器。
  • wsgd - 一种解析协议定义并使用它来剖析消息的通用解析器。
  • asn2wrs - 一个编译ASN.1规范和一些C粘合到Wireshark解剖器的工具。
  • csjark - 用于从C struct定义生成Lua解剖器以与Wireshark一起使用的工具。