wiresharkcmppv25lua解析器开发

wiresharkcmppv25lua解析器开发

ID:31708206

大小:63.74 KB

页数:5页

时间:2019-01-17

wiresharkcmppv25lua解析器开发_第1页
wiresharkcmppv25lua解析器开发_第2页
wiresharkcmppv25lua解析器开发_第3页
wiresharkcmppv25lua解析器开发_第4页
wiresharkcmppv25lua解析器开发_第5页
资源描述:

《wiresharkcmppv25lua解析器开发》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、对于协议的开发,无论用什么语言,如何用数据结构来表达协议是非常重要的。在这里,将介绍用lua进行应用层协议开发的一些心得。Wireshark的Lua插件一些基本知识,就不多说了,其他地方已经有很多了。直接介绍一些有价值的东西。大家都知道CMPP,而且wireshark中也已经有CMPP3.0的解析功能了。但是在现网测试中发现,居然无法正确解析某些信息。研究后发现,原來现网中运行的大都是CMPPV2.5的协议。阿阿,CMPPWiresharkPlugin的开发者,还买了个关子,居然不解析最常用的V2.5,只解析V3.0的。没关系,正好现在

2、我就来用Lua对CMPPV2.5进行解析。1.首先是协议的定义:如何用lua来表达CMPP2.5呢?我的回答是Table,即Lua的关联数组。我的目的是要将CMPPV2.5协议进行正确解析,所以需要了解CMPPV2.5的消息结构。根据CMPPV2.5的协议定义,映射成Lua内部的数据结构。结构可以分成两部分,一部分是字段的含义,样例如下:CMPPv2FieldProtos={MBMM■Cmd={[0x00000001]=,,CMPPv2_CONNECT,,/[0x80000001]=”CMPPv2_CONNECT_RESP“,[0x00

3、000002]="CMPPv2_TERMINATE,'/[0x80000002]=,,CMPPv2_TERMINATE_RESP"}Reg_Delivery={[0]="NoNeedReport",[1]="NeedReport",[2]=HGenSMCCDR",};另一部分是,各类消息的字段属性。由于,CMPP的消息字段没有白描述类型的字段。所以定义起来方便不少。采用数字下标,有利于用循环来处理消息屮的所有字段解析。CMPPv2_MsgDef={CMPPv2CONNECTS[1]={Name=,,Source_Addr,,/Lengt

4、h=6,Type=,,Stringl,/Display=true};[2]={Name=nAuthenticatorSource”丄ength=16,Type="RAW,,/DisplayType=,,Normal,l/Abbr="ausrc",Display=true};[3]={Name="Version"/Length=l,Type="Version,,/DisplayType="Bitfield"/Abbr=,,ver,,zDisplay=true};[4]={Name=,,TimeStampn,Length=4,Type=Hl

5、nteger1:DisplayType=,,Normal,,/Abbr="tstamp",Display=true};};CMPPv2__CONNECT_RESP={[1]={Name="Status",Length=l,Type=,,lnteger,,/DisplayType二“Status”,Abbr="stat"/Display=true,};[2]={Name=',AuthenticatorlSMG"/Length=16/Type="RAW,,/DisplayType="Normal"/Abbr="auismg"zDisplay

6、=true,};[3]={Name="Version"/Length=l,Type=Hlnteger1:DisplayType="Normal"/Abbr="ver",Display=true,};};}1.解析部分2.1初始化协议--protocolregisterCMPPv2_proto=Proto("cmppv2',/,,CMPPv2Protocol")CMPPv2_CMPPv2_CONNECT=Proto("cmppv2.connect,7,CMPPv2CONNECTRequest")CMPPv2_CMPPv2_CONNECT_

7、RESP=Proto(,,cmppv2.connect_resp"/"CMPPv2CONNECTResponse")CMPPv2_CMPPv2_SUBMIT=Proto(,,cmppv2.submit,,;,CMPPv2SUBMITRequest")CMPPv2_CMPPv2_SUBMIT_RESP=Proto(,,cmppv2.submit_resp,,;,CMPPv2SUBMITResponse")-protocolfielddefinitionspf=CMPPv2_proto.fieldspf.length=ProtoField.

8、uint32("cmppv2.length"/'ProtocolLength",base.DEC)pfxmd=ProtoField.uint32(ncmppv2.cmd_id,,/,,CommandID^b

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

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

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