Wireshark EtherCAT解析插件开发日志

本日志主要是记录学习wireshark插件开发的过程,以便以后查看,以及供像我一样对wireshark插件开发不了解的朋友的参考。

最近在学习ethercat协议,但是目前wireshark中的ethercat插件没有对从站(ESC)的寄存器进行解析(从git log来看新版的会增加),所以需要增加寄存器解析这一部分。The Tao Of Fieldbus里提供了一个有ESC寄存器解析功能的插件,不过不太符合我的需求,而且在我工作用的XP系统上不能用。XP只能装1.10版的wireshark。

找了一下写wireshark解析插件的方法,其中有一种是C语言编写的,比如生成ethercat.dll,然后放放wireshark的plugins目录下,这种效率比较高但是编译什么的比较复杂,等以后再用这种方法吧。另一种就是采用lua写,简单的也几十行就可以完成,比如用Lua语言编写Wireshark dissector插件

首先在Wireshark安装目录C:Program FilesWireshark下建立ecatesc.lua。
然后在init.lua中添加dofile(DATA_DIR.."ecatesc.lua")

《Wireshark EtherCAT解析插件开发日志》
图中可以看到可以通过按下Ctrl+Shift+L来重新载入Lua插件,这样就可以看到代码修改后的效果,不用每次修改后都重启wireshark。

首先从console.lua中抄一段代码到ecatesc.lua中,验证lua可以正常运行,就当是hello world吧。

do
    function segment_fault()
        browser_open_url("https://segmentfault.com")
    end
    register_menu("Lua/SegmentFault", segment_fault, MENU_TOOLS_UNSORTED)
end

打开wireshark按下Ctrl+Shift+L快捷键重新载入lua后可以看到菜单 工具-lua 中多了一个SegmentFault,点击会打开SegmentFault网站。

《Wireshark EtherCAT解析插件开发日志》

看了几个例子好像都需要注册到一个DissectorTable里,如果只能这样的话,ethercat就不能这样做了。

    local udp_encap_table = DissectorTable.get("udp.port")
    udp_encap_table:add(1127,p_ScoreBoard)

还好,通过git拉下来的代码编译成功了,编译出来的版本里有有关于ESC寄存器的解析。
嗯,既然编译成功了,那我先研究一下C语言的版本吧。等我熟悉了解析插件开发的流程后再研究一下lua版本吧。

这个类型的文章应该放到日志里吧,放错了,下一篇放日志里吧。

之前我一直以为可以只编译一个插件,而不用把wireshark全部编译了,不过研究了好久没有成功,目前先全部编译吧。

首先git clone一下wireshark的源代码,然后按照Win32/64: Step-by-Step Guide里面的步骤一步一步的做。编译的过程中产生了error C2220的错误,warning产生的错误,然后在产生错误的文件里面添加类似#pragma warning(disable: 4047)有语句,终于编译成功了。

然后把msbuild64\run\RelWithDebInfo\plugins里的ethercat.dll复制到我已经安装的wireshark的plugins\2.0.4\目录里面,但是会提示

无法定位程序输入点call_data_dissector于动态链接库

不知道为什么,难道我编译的是Debug版吗,对这个还不太了解。

用Dependency Walker看了一下原来的ethercat.dll(2.0.4版)和新版的ethercat.dll(从git仓库编译的2016-06-19)发现原来的ethercat.dll没有调用libwireshark.dll中的call_data_dissector。用DLL Export Viewer 看了一下原来的libwireshakr.dll中并没有call_data_dissector这个函数,而新版的有。看来我是不能将新版本的dll放到原来的wireshark里用了,更不用说用在XP版上了。还是lua版的比较通用吧。不过我还是要继续看下去的。继续研究下怎么编写wireshark的插件。
原版

《Wireshark EtherCAT解析插件开发日志》

新版

《Wireshark EtherCAT解析插件开发日志》

    原文作者:gbcwbz
    原文地址: https://segmentfault.com/a/1190000005749198
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞