43

我在wireshark 中查看了一个自定义协议。我认为如果wireshark可以为我解析它会很有用,这样我就不必解码十六进制。虽然我在我的程序日志中这样做了,但wireshark 会使用时间信息捕获整个对话,因此它在那里会更有用。

这很容易做到吗?

4

3 回答 3

34

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

如果您打算将解析器提交到官方 Wireshark 存储库,出于性能和集成原因,您当然应该在 C 中实现它。

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

于 2012-09-22T00:18:02.093 回答
22

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

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

于 2011-02-05T03:45:34.880 回答
8

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

  • wssdl——一个 Lua 库,它定义了一种基于 Lua 构建的特定领域语言,用于定义协议解析器。
  • wsgd——解析协议定义并使用它来解析消息的通用解析器。
  • asn2wrs -- 一种将 ASN.1 规范和一些 C 粘合到 Wireshark 解析器的工具。
  • csjark -- 一种用于从 C 结构定义生成 Lua 解析器以与 Wireshark 一起使用的工具。
于 2016-10-31T19:05:13.787 回答