Wireshark EtherCAT解析插件开发日志

发表于:2019-1-16 13:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:gbcwbz    来源:思否

  本日志主要是记录学习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")。
  
  图中可以看到可以通过按下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网站。
  
  看了几个例子好像都需要注册到一个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的插件。
  原版
 
  新版
 

       上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号