欢迎来到天天文库
浏览记录
ID:32735970
大小:202.08 KB
页数:9页
时间:2019-02-15
《用lua语言编写wireshark插件解析自定义协议》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用lua语言编写Wireshark插件解析自定义协议(yOOl115922012-01)Wireshark默认支持大量网络协议,我们川以在Wireshark主菜单“Internals>S叩podProtocols(slow!)"杳看当前支持的所有协议。Wireshark1.6.2版木已支持117()种协议,包括我们熟悉的Diameter、GTP、FTP、SCTP等协议。上述都是业界的通用协议,然而対我们产品的口定义协议,Wireshark是不得而知的,抓包后只能看到一串二进制码流,导致开发调试或者测试分析效率较低。有什么办法让Wireshark也能解析自定义协议呢?本文介绍
2、的川lua编写Wireshark解析器插件就是一种常用方法。Wireshark软件内嵌一个lua语言执行引擎并提供一系列lua函数接口,从而满足用户各种各样的协议解析目的。下面以一个简单的口定义协议为例,演示如何编写Wireshark解析插件。不过本文只是业余学习的笔记和简单实践,不能覆盖“lua编写Wireshark解析器插件”的所冇知识点(更全面的介绍请参考Wireshark软件自带手册第11章“LuaSupportinWireshark”,只是开源软件的手册似乎总是不够详尽。)。1.配置Wireshark执行lua脚本通过Wireshark主菜单"Help>About
3、WiresharknnJ'以查看当前安装版本己经内缺Lua5.1执行引擎。默认安装情况卜Wireshark会在安装路径下生成一个init.lua,它是Wireshark启动过程执行的第一个lua脚本。一•般來说,我们可以在此文件中添加dofile函数调用其他lua•阴1迹匚失地勺赴巴展旦®」列处「站0、兰装叵1呼」巴史述屋肖二^:dofile(DATA_DIR.."console.luaH)此语句执行了安装冃录下的console.lua脚本,该脚本也是Wireshark自带的,川途是在主菜单Tool下创建一个子菜单Luao我们羡至可以在上述语句之前添加注释-符來取消它。do
4、file是lua基础库提供的一个函数,用途如卜•:;dofile(filename):OpensthenamedfileandexecutesitscontentsasaLuachunk.Whencalledwithoutarguments,:dofileexecutesthecontentsofthestandardinput(stdin).Returnsallvaluesreturnedbythechunk.:Incaseoferrors,dofilepropagatestheerrortoitscaller(thatis,dofiledoesnotruninprote
5、cted:mode).……義彳亍F亲鏑号甬誦崭菽五亘GHua厨禾呢交祈石「荻后否嚅匚皿文祚亲丿2币漏川二不…dofile调用即口J。2.需要解析的自定义协议假设我们需要基于UDP协议实现一种根据员工ID杳询员工姓名的信息服务,客户端向服务器端的12345端口发送QueryRequest,服务器返冋应答QueryResponse,数据结构如下:消息名称消息结构QueryRequestUintl6usMsgType;〃消息类型,查询请求二0Uint32uiEmployeelD;〃员工工号QucryRcsponscUintl6usMsgType;〃消息类型,查询应答=1Uint3
6、2uiEmployeelD;〃员工工号Uintl6usQueryResult;//查询操作结果,成功=0,失败=1CharL32JszEmployeeName;//查询结果,如果成功,填写员工姓名;否则填写失败原因假设员工数据库信息有两条记录如下:员工ID员工姓名1LiuDehua2ZhangXueyou将上述协议实现之后,服务器端部署在192.168.56.1,客户端在192.168.56.22o以下就是启动1次査询过程的Wireshark抓包结果:♦Frame3:48bytesonwire(384bits),48bytescaptured(384bits)令Ethern
7、etII,Src:08:00:27:f8:35:22(08:00:27:f8:35:22),Dst:08:00:27:00:14:3c(08:00:27:00:14:3cSinternetProtocolVersion4,Src:192.168.56.22(192.168.56.22),Dst:192.168.56.1(192.168.56.1)±userDatagramProtocol,SrcPort:23456(23456),DstPort:12345(12345)Data(6bytes)Data:000001
此文档下载收益归作者所有