[发明专利]基于XML的Wireshark用协议解析方法在审
| 申请号: | 201910554328.0 | 申请日: | 2019-06-25 |
| 公开(公告)号: | CN110266702A | 公开(公告)日: | 2019-09-20 |
| 发明(设计)人: | 曹威 | 申请(专利权)人: | 上海电气泰雷兹交通自动化系统有限公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
| 代理公司: | 上海湾谷知识产权代理事务所(普通合伙) 31289 | 代理人: | 肖进 |
| 地址: | 201206 上海市*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 协议解析 数据报文协议 内存 处理数据 解析结果 树形结构 自动调用 自动解析 报文 引擎 保存 | ||
1.一种基于XML的Wireshark用协议解析方法,其特征在于,包括:
根据ICD中描述的数据报文协议的需求,采用XML的树形结构描述数据报文协议的内容,并形成XML文档;
XML协议引擎自动解析所述XML文档,生成对应的协议解析树,并保存于内存中;
Wireshark在处理数据报文时,自动调用内存中的所述协议解析树,生成对应的解析结果。
2.根据权利要求1所述的基于XML的Wireshark用协议解析方法,其特征在于,所述的XML协议引擎自动解析XML文档,包括:
读取XML文档;
XML协议引擎从顶层元素开始依次解析XML文档的各元素:
判断当前元素是否为简单类型,若是,该元素解析完成;若否,继续判断:
若当前元素是xs:sequence类型,在当前元素中生成子元素数组,并依次解析数组中的各子元素;xs:sequence代表定义在其中的元素集合在数据报文中依次出现;
若当前元素是xs:choice类型,在当前元素中根据xs:choice元素中selected Id生成以selected Id为索引的键值对,并依次解析键值对中的各元素;xs:choice代表定义在其中的元素集合中只有一个元素出现在数据报文中;selected Id表示出现在xs:choice元素集合之中的当前元素的ID。
3.根据权利要求1或2所述的基于XML的Wireshark用协议解析方法,其特征在于,所述的Wireshark处理数据报文,包括:
使用DFS遍历算法,从根节点开始遍历各元素;
如果当前元素是简单类型,直接从当前的数据流中取出对应的长度,算出这个元素的值,并保存起来;
如果当前元素是复杂类型,执行:
若当前元素是xs:sequence类型,继续依次遍历当前的元素数组;
xs:sequence代表定义在其中的元素集合在数据报文中依次出现;
若当前元素是xs:choice类型,先根据selector的定义取出对应的接下来要选择元素的ID,然后再从xs:choice元素集合中找出符合的元素开始解析;xs:choice代表定义在其中的元素集合中只有一个元素出现在数据报文中;selector表示接下来要选择元素的id;
当所有的元素都已经遍历结束,并且数据报文也结束时,那么则遍历成功,否则遍历失败。
4.根据权利要求1所述的基于XML的Wireshark用协议解析方法,其特征在于,预先定义XML协议引擎:
XML标签设计:
xs:element,用于表示数据报文中的元素;
xs:complexType,用于定义多个xs:element,自定义的复杂类型;
xs:simpleType,用于定义枚举类型,自定义的简单类型;
xs:sequence,代表定义在其中的元素集合在数据报文中依次出现;
xs:choice,代表定义在其中的元素集合中只有一个元素出现在数据报文中;
xs:restriction,用于定义枚举值的集合;
xs:enumeration,单个的枚举值定义;
XML属性设计:
Name,用于指定标签的名字;
type,用于指定元素的类型;
unit,用于指定元素的单位;
length,用于指定元素的长度,手动设定或根据数据报文动态获取,需要动态获取时语法:length=”return${element name}”,表示当前元素长度由其他元素的值决定;
occurs,表示当前元素连续重复出现的次数,可手动设定或根据数据报文动态获取,需要动态获取时语法:occurs=”return${element name}”,表示当前元素的连续出现的次数长度由其他元素的值决定;
value,出现在枚举值的定义中,表示枚举的整形数值;
text,出现在枚举值的定义中,表示枚举值的文本值;
selected Id,出现在xs:choice元素集合之中,表示当前元素的ID;
selector,只有在当前元素的类型为xs:choice时才有效,表示接下来要选择元素的id,语法如下:selector=”return${element name}”,选择器的值由其他元素指定;
supportSplit,表示当前元素是否支持拆包,如果支持拆包那么此元素的值将分拆后出现在多个数据报文中;
packet Id,配合supportSplit使用,仅在当元素支持拆包时被定义,语法:packetId=”return${tsn name}”,表示当前的packet Id实际来源于哪一包数据;
packetSequence,配合supportSplit使用,仅在当元素支持拆包时被定义,语法:packetSequence=“return${element name}”,表示当前包是第几个拆包后的子包;
packetNumber,配合supportSplit使用,仅在当元素支持拆包时被定义,语法:packetSequence=“return${element name}”,表示当前元素一共分拆到几个数据报文中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海电气泰雷兹交通自动化系统有限公司,未经上海电气泰雷兹交通自动化系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910554328.0/1.html,转载请声明来源钻瓜专利网。





