如何为自定义协议创建 Wireshark 解剖器,而无需重新编译 Wireshark

Fer*_*ndo 3 c++ lua wireshark wireshark-dissector

我一直在寻找一种编译和运行自定义 Wireshark 解剖器的方法,而无需重新编译整个 Wireshark 项目。Web 上的许多地方都要求开发人员编写他们的插件并链接到 Wireshark。

但是,我发现有些人能够使用 Wireshark 的插件系统编写解剖器并使其运行,其路径可在 Wireshark 帮助/关于部分中找到。

尽管这些人在 Lua 和 C++ 中成功编写了解剖器,但我尝试了很多教程,但我真的很迷茫。

有人可以帮助我在 Ubuntu 16.04 64bit 上制作一个非常简单的 Wireshark 解剖器的步骤吗?

小智 6

可以通过三种方式为 Wireshark 编写自定义解剖器:

  1. C++
  2. 路亚
  3. Wireshark 通用解剖器

几年前,我需要为我公司使用的自定义协议编写一个解析器。我比较了这三个选项,并对它们有所了解。C++ 执行速度最快,但最难学习和使用。Lua 和 WSGD 在执行速度上差不多。Lua dissector 是 Wireshark 内置的,但是我发现它更难学,因为你需要学习一种语言(Lua),然后如何用这种语言编写解剖器。WSGD 是一种专为编写解剖器而设计的语言。它更像是一种结构定义,而不是一种流程控制语言。WSGD 网站有文档和示例。很难找到 Lua 的文档和示例以及如何在其中编写解剖器。

2015 年,Graham Bioice 在 Sharkfest 上发表了“使用 WSGD、Lua 和 C 编写 Wireshark 解剖器”。这是关于该主题的非常全面的介绍,尽管为时已晚,无法帮助我。您可以在以下位置获取幻灯片并查看演示文稿:

由于我上面列出的原因,我选择了 WSGD。我已经写了几千行来为 WSGD 中的三个自定义协议创建解剖器。我强烈推荐它。WSGD 网站是http://wsgd.free.fr