编写Wireshark协议解析器插件(一)

容易忘事,把解决的问题记下来。只是草稿。

参考资料

wireshark是开源软件,可以在版权许可下进行二次开发。有三种方式为其添加协议解析(protocol dissection)功能:

  • 内置解析器
  • 动态链接库形式的插件解析器
  • Lua或Python语言的插件解析器

前两种如何开发,Developer’s Guide里已经有了一些简单的介绍,Angela的书里有更详细的说明。事实上,在开发方法上它们几乎是相同的,只是在构建上和分发上有所区别。

后一种如何开发,网络上也可以找到一些文章。比如“阳光男孩”的《用Lua语言编写Wireshark dissector插件》。

但是关于windows下如何编译第二种即DLL的插件,没有什么资料。(网络分析专家论坛有一篇《Ethereal外置解码器(插件)简介》,但是成文于2005年,已经不适用于当前版本了。

事实上很简单,假设我们要为其建立一个名为claud的dissector:

  1. 搭建wireshark编译环境,将其编译一次。具体方法在Developer’s Guide中已经有很详细的介绍。
  2. 在plugins目录下建立claud文件夹,将代码命名为packet-claud.c和packet-claud.h。
  3. 复制plugins/gryphon目录下的下列文件到plugins/claud:
    • Makefile.common
    • Makefile.nmake
    • moduleinfo.h
    • moduleinfo.nmake
    • plugin.rc.in
    • plugin.c
  4. 修改上述文件,具体为:修改其中的版权信息、将前面四个文件中的gryphon替换为claud、修改moduleinfo.*中的版本信息、修改plugin.rc.in中的描述内容。
  5. 来到plugins目录,打开Makefile.in和Makefile.am,在SUBDIRS后面按格式添加claud。
  6. 到根目录,make -f Makefile.nmake all,不用再distclean。

先到这里,接下来遇到问题并解决了再写。

另外,如果有同学遇到了在trunk最新的rivision中,nmake -f Makefile.nmake verify_tools,bash报0x7e错误,并且搞定了,希望能告诉我是怎么解决的,先谢谢了。

Leave a Reply

Your email address will not be published. Required fields are marked *