用lua语言编写Wireshark插件解析自定义协议.doc

用lua语言编写Wireshark插件解析自定义协议.doc

ID:50186696

大小:351.00 KB

页数:8页

时间:2020-03-06

用lua语言编写Wireshark插件解析自定义协议.doc_第1页
用lua语言编写Wireshark插件解析自定义协议.doc_第2页
用lua语言编写Wireshark插件解析自定义协议.doc_第3页
用lua语言编写Wireshark插件解析自定义协议.doc_第4页
用lua语言编写Wireshark插件解析自定义协议.doc_第5页
资源描述:

《用lua语言编写Wireshark插件解析自定义协议.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、用lua语言编写Wireshark插件解析自定义协议(y001115922012-01)Wireshark默认支持大量网络协议,我们可以在Wireshark主菜单“Internals>SupportProtocols(slow!)”查看当前支持的所有协议。Wireshark1.6.2版本已支持1170种协议,包括我们熟悉的Diameter、GTP、FTP、SCTP等协议。上述都是业界的通用协议,然而对我们产品的自定义协议,Wireshark是不得而知的,抓包后只能看到一串二进制码流,导致开发调试或者测试分析效率较低。有什么办法让Wireshar

2、k也能解析自定义协议呢?本文介绍的用lua编写Wireshark解析器插件就是一种常用方法。Wireshark软件内嵌一个lua语言执行引擎并提供一系列lua函数接口,从而满足用户各种各样的协议解析目的。下面以一个简单的自定义协议为例,演示如何编写Wireshark解析插件。不过本文只是业余学习的笔记和简单实践,不能覆盖“lua编写Wireshark解析器插件”的所有知识点(更全面的介绍请参考Wireshark软件自带手册第11章“LuaSupportinWireshark”,只是开源软件的手册似乎总是不够详尽。)。1.配置Wireshark执

3、行lua脚本通过Wireshark主菜单“Help>AboutWireshark”可以查看当前安装版本已经内嵌Lua5.1执行引擎。默认安装情况下Wireshark会在安装路径下生成一个init.lua,它是Wireshark启动过程执行的第一个lua脚本。一般来说,我们可以在此文件中添加dofile函数调用其他lua脚本,实现各种扩展目的。例如,默认安装后init.lua文件末尾有一句:dofile(DATA_DIR.."console.lua")此语句执行了安装目录下的console.lua脚本,该脚本也是Wireshark自带的,用途是在

4、主菜单Tool下创建一个子菜单Lua。我们甚至可以在上述语句之前添加注释--符来取消它。dofile是lua基础库提供的一个函数,用途如下:dofile(filename)OpensthenamedfileandexecutesitscontentsasaLuachunk.Whencalledwithoutarguments,dofileexecutesthecontentsofthestandardinput(stdin).Returnsallvaluesreturnedbythechunk.Incaseoferrors,dofileprop

5、agatestheerrortoitscaller(thatis,dofiledoesnotruninprotectedmode).我们下来编写的解析器也是以.lua脚本形式保存,然后在init.lua文件末尾中添加一个dofile调用即可。2.需要解析的自定义协议假设我们需要基于UDP协议实现一种根据员工ID查询员工姓名的信息服务,客户端向服务器端的12345端口发送QueryRequest,服务器返回应答QueryResponse,数据结构如下:消息名称消息结构QueryRequestUint16usMsgType;//消息类型,查询请求=

6、0Uint32uiEmployeeID;//员工工号QueryResponseUint16usMsgType;//消息类型,查询应答=1Uint32uiEmployeeID;//员工工号Uint16usQueryResult;//查询操作结果,成功=0,失败=1Char[32]szEmployeeName;//查询结果,如果成功,填写员工姓名;否则填写失败原因假设员工数据库信息有两条记录如下:员工ID员工姓名1LiuDehua2ZhangXueyou将上述协议实现之后,服务器端部署在192.168.56.1,客户端在192.168.56.22。

7、以下就是启动1次查询过程的Wireshark抓包结果:上图是QueryRequest消息,uEmployeeID指定为1。上图是QueryResponse消息,返回uEmployeeID=1的查询结果。从上面2个图可见,Wireshark已经自动地把以太网帧、IP报文、UDP数据报都解析出来,唯独我们自定义协议的消息无法解析,以Data来显示。把上述抓包结果保存到一个pcap文件中。下面我们逐步实现对该协议的解析。3.Wireshark的lua函数接口3.1.Proto协议在Wireshark中Proto主要用途是声明一个新的协议,进而可以给它

8、编写解析器函数。3.1.1.Proto.new:声明一个新的协议例如:my_proto=Proto("myProto","MyProtocolforQ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。