CN108076017B - 一种数据包的协议解析方法及装置 - Google Patents

一种数据包的协议解析方法及装置 Download PDF

Info

Publication number
CN108076017B
CN108076017B CN201611009744.5A CN201611009744A CN108076017B CN 108076017 B CN108076017 B CN 108076017B CN 201611009744 A CN201611009744 A CN 201611009744A CN 108076017 B CN108076017 B CN 108076017B
Authority
CN
China
Prior art keywords
data packet
protocol
analyzed
length
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611009744.5A
Other languages
English (en)
Other versions
CN108076017A (zh
Inventor
朱辉云
陈焕葵
张少愚
覃竞才
曾岳锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201611009744.5A priority Critical patent/CN108076017B/zh
Publication of CN108076017A publication Critical patent/CN108076017A/zh
Application granted granted Critical
Publication of CN108076017B publication Critical patent/CN108076017B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种数据包的协议解析方法,用于对所传输的任意数据包进行协议解析,该方法包括:获取待解析数据包;接收协议文档;根据所述协议文档生成协议解码函数;将所述待解析数据包输入所述协议解码函数,获得所述待解析数据包中所包括的字段名称以及所述字段名称的取值。本发明还公开了一种数据包的协议解析装置。

Description

一种数据包的协议解析方法及装置
技术领域
本发明涉及通信技术领域,具体涉及一种数据包的协议解析方法及装置。
背景技术
协议是指在通讯和计算机网络中为了进行数据交换而建立的规则、标准或约定的集合,也即在通讯和计算机网络中所传输的数据包均按协议规定的格式进行拼接。在现有技术中,在某些应用场景中使用的可能是固定的协议进行数据传输,则可以根据已知的协议对数据包各个协议字段进行解析。但是,在另一些应用场景中,所传输的数据包可能使用的是未知的协议,例如使用的是自定义的协议,在现有技术中无法对所传输的任意数据包进行协议解析。
发明内容
有鉴于此,本发明提供一种数据包的协议解析方法及装置,以解决现有技术中无法对所传输的任意数据包进行协议解析的技术问题。
为解决上述问题,本发明提供的技术方案如下:
一种数据包的协议解析方法,所述方法包括:
获取待解析数据包;
接收协议文档;
根据所述协议文档生成协议解码函数;
将所述待解析数据包输入所述协议解码函数,获得所述待解析数据包中所包括的字段名称以及所述字段名称的取值。
相应的,所述获取待解析数据包,包括:
在数据传输链路上抓取数据包,获得所抓取的数据包;
将所述所抓取的数据包还原为二进制数据包作为待解析数据包。
相应的,所述根据所述协议文档生成协议解码函数,包括:
根据所述协议文档确定数据包长度类型,所述数据包长度类型包括定长数据包类型以及变长数据包类型;
当所述数据包长度类型为定长数据包类型时,根据所述协议文档中的结构体信息以及所述待解析数据包的长度生成协议解码函数;
当所述数据包长度类型为变长数据包类型时,根据所述协议文档中的类型-长度-取值TLV信息生成协议解码函数,或者,根据所述协议文档中的协议类型定义调用所述与所述协议类型定义对应的解码函数作为协议解码函数。
相应的,所述根据所述协议文档中的结构体信息以及所述待解析数据包的长度生成协议解码函数,包括:
根据所述协议文档中的结构体信息以及所述待解析数据包的长度,确定所述待解析数据包中的数据包包头以及所述待解析数据包中的用户数据;
判断是否需要对所述数据包包头进行解析;
如果需要对所述数据包包头进行解析,根据所述结构体信息生成对所述数据包包头进行解码的包头解析函数以及对所述用户数据进行解码的用户数据解析函数,所述包头解析函数以及所述用户数据解析函数作为协议解码函数;
如果不需要对数据包包头进行解析,根据所述结构体信息生成对所述用户数据进行解码的用户数据解析函数,所述用户数据解析函数作为协议解码函数。
相应的,所述方法还包括:
将所述待解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称。
一种数据包的协议解析装置,所述装置包括:
获取单元,用于获取待解析数据包;
接收单元,用于接收协议文档;
生成单元,用于根据所述协议文档生成协议解码函数;
获得单元,用于将所述待解析数据包输入所述协议解码函数,获得所述待解析数据包中所包括的字段名称以及所述字段名称对应的取值。
相应的,所述获取单元包括:
抓取子单元,用于在数据传输链路上抓取数据包,获得所抓取的数据包;
还原子单元,用于将所述所抓取的数据包还原为二进制数据包作为待解析数据包。
相应的,所述生成单元包括:
第一确定子单元,用于根据所述协议文档确定数据包长度类型,所述数据包长度类型包括定长数据包类型以及变长数据包类型;
第一生成子单元,用于当所述数据包长度类型为定长数据包类型时,根据所述协议文档中的结构体信息以及所述待解析数据包的长度生成协议解码函数;
第二生成子单元,当所述数据包长度类型为变长数据包类型时,根据所述协议文档中的类型-长度-取值TLV信息生成协议解码函数,或者,根据所述协议文档中的协议类型定义调用所述与所述协议类型定义对应的解码函数作为协议解码函数。
相应的,所述第一生成子单元包括:
第二确定子单元,用于当所述数据包长度类型为定长数据包类型时,根据所述协议文档中的结构体信息以及所述待解析数据包的长度,确定所述待解析数据包中的数据包包头以及所述待解析数据包中的用户数据;
判断子单元,用于判断是否需要对所述数据包包头进行解析;
第三生成子单元,用于如果所述判断子单元的判断结果为需要对所述数据包包头进行解析,根据所述结构体信息生成对所述数据包包头进行解码的包头解析函数以及对所述用户数据进行解码的用户数据解析函数,所述包头解析函数以及所述用户数据解析函数作为协议解码函数;
第四生成子单元,用于如果所述判断子单元的判断结果为不需要对数据包包头进行解析,根据所述结构体信息生成对所述用户数据进行解码的用户数据解析函数,所述用户数据解析函数作为协议解码函数。
相应的,所述装置还包括:
比较单元,用于将所述待解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称。
由此可见,本发明实施例具有如下有益效果:
本发明实施例在获取待解析数据包以及协议文档之后,根据协议文档生成协议解码函数,将待解析数据包输入该协议解码函数,解码出待解析数据包中所包括的字段名称以及各个字段名称的取值,根据协议文档自动生成协议解码函数,则可以对所传输的任意数据包进行协议解析。另外,本发明实施例还可以将解析出的解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称,从而加快对数据包的问题定位速度。
附图说明
图1为本发明实施例中提供的数据包的协议解析方法实施例一的流程图;
图2为本发明实施例中提供的数据包的协议解析方法实施例二的流程图;
图3为本发明实施例中提供的数据包的协议解析装置实施例的示意图;
图4为本发明实施例中提供的一种终端实施例的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
在一些应用场景中,所传输的数据包可能使用的是未知的协议,例如在开发联调的过程中,服务的调用端向服务的提供端发送数据包请求调用某些服务,在这两端之间传输的数据包可以使用自定义的协议,如果服务的调用端声称数据包是按照自定义的协议进行的数据包拼接,但调用服务就是失败,在现有技术中服务的提供端无法对接收到的数据包中各个协议字段进行翻译,就无法进一步确定是所接收到的数据包存在问题,还是所调用的服务存在问题。也即在现有技术中无法对所传输的任意数据包进行协议解析。
为此本发明实施例提供一种数据包的协议解析方法及装置,将抓取的数据包翻译出所包括的字段名称以及字段名称的取值,可以协助判断在开发联调过程中,数据包是否按协议正确拼装,以此来帮助开发者快速确定收到或者发送的数据包是否有问题以及是什么参数存在问题,从而加快问题定位和开发效率。
本发明实施例将从数据包的协议解析装置的角度进行描述,该数据包的协议解析装置具体可以集成在客户端中,该客户端可以装载在终端中,该终端具体可以为平板电脑、膝上型便携计算机和台式计算机等等。
参见图1所示,本发明实施例中提供的数据包的协议解析方法实施例一,可以包括以下步骤:
步骤101:获取待解析数据包。
在本发明的一些可能的实现方式中,本步骤获取待解析数据包的具体实现可以包括:
在数据传输链路上抓取数据包,获得所抓取的数据包;
将所抓取的数据包还原为二进制数据包作为待解析数据包。
可以利用抓包软件,例如tcpdump软件,通过监听网卡的数据在数据传输链路上抓取数据包,将所抓取的数据包输出屏幕或者记录下来,一般在抓取数据包的过程中可能会将原始发送的二进制数据包转换为十六进制数据包,因此还需要将抓取到的数据包重新拼接成一个跟发送数据包一致的二进制数据包作为待解析数据包。
步骤102:接收协议文档。
接收待解析数据包所使用协议的协议文档,该协议文档对待解析数据包的结构进行了定义,例如协议文档中可以包括定义待解析数据包的数据包长度类型,数据包长度类型可以包括定长数据包类型以及变长数据包类型,定长数据包类型即待解析数据包为固定长度的数据包,变长数据包类型即待解析数据包为可变长度的数据包;又例如当数据包长度类型为定长数据包类型时,协议文档中还可以包括结构体信息,结构体信息定义了定长数据包中每一位数据属于哪个协议字段,如数据包的第1至10位为包头部分,其中第1至4位为标识字段、第5至10位为属性信息字段,数据包的第11至50位为用户数据,其中用户数据的某些位又属于某个字段等等;当数据包长度类型为定长数据包类型时,协议文档中还可以包括TLV信息,TLV是指类型-长度-取值,即Type-Length-Value,可以定义数据包的协议类型Type,而数据包每个协议字段Value的长度由Length指定;当数据包长度类型为定长数据包类型时,协议文档中还可以只包括协议类型,如待解析数据包属于pb协议。
步骤103:根据协议文档生成协议解码函数。
在本实施例中,可以根据输入的协议文档自动生成协议解码函数,以实现对任意待解析数据包的协议解析。
在本发明的一些可能的实现方式中,根据协议文档生成协议解码函数的具体实现可以包括:
根据协议文档确定数据包长度类型,数据包长度类型包括定长数据包类型以及变长数据包类型;
当数据包长度类型为定长数据包类型时,根据协议文档中的结构体信息以及待解析数据包的长度生成协议解码函数;
当数据包长度类型为变长数据包类型时,根据协议文档中的TLV信息生成协议解码函数,或者,根据协议文档中的协议类型定义调用与协议类型定义对应的解码函数作为协议解码函数。
在本实施例中,数据包长度类型分别为定长数据包类型和为变长数据包类型时,根据协议文档生成协议解码函数的方式不同,以下分别进行说明。
参见图2所示,本发明实施例中提供的数据包的协议解析方法实施例二,当数据包长度类型为定长数据包类型时,根据协议文档中的结构体信息以及待解析数据包的长度生成协议解码函数的具体实现可以包括以下步骤:
步骤201:根据协议文档中的结构体信息以及待解析数据包的长度,确定待解析数据包中的数据包包头以及待解析数据包中的用户数据。
步骤202:判断是否需要对数据包包头进行解析,如果需要对数据包包头进行解析,进入步骤203,如果不需要对数据包包头进行解析,进入步骤204。
步骤203:根据结构体信息生成对数据包包头进行解码的包头解析函数以及对用户数据进行解码的用户数据解析函数,包头解析函数以及用户数据解析函数作为协议解码函数。
步骤204:根据结构体信息生成对用户数据进行解码的用户数据解析函数,用户数据解析函数作为协议解码函数。
在定长数据包中可以包括数据包包头以及用户数据,根据协议文档中的结构体信息以及待解析数据包的总长度,可以将待解析数据包划分为数据包包头以及用户数据两部分,例如根据结构体信息待解析数据包共100位数据,前10位为数据包包头,则后90位为用户数据。之后可以根据实际应用情况选择是否对数据包包头进行解析,在一些情况下需要对数据包包头解析,则根据结构体信息可以生成对数据包包头进行解码的包头解析函数以及对用户数据进行解码的用户数据解析函数,包头解析函数可以解析出待解析数据包中的数据包包头所包括的字段名称以及各个字段名称对应的取值,用户数据解析函数可以解析出解析数据包中的用户数据所包括的字段名称以及各个字段名称对应的取值;在一些情况下不需要对数据包包头解析,则根据结构体信息可以直接生成对用户数据进行解码的用户数据解析函数,用户数据解析函数可以解析出解析数据包中的用户数据所包括的字段名称以及各个字段名称对应的取值。
而当数据包长度类型为变长数据包类型时,由于变成数据包不包括数据包包头,则可以直接产生对待解析数据包进行解码的协议解析函数。当协议文档中包括TLV信息时,可以根据TLV信息生成协议解码函数,而当协议文档中给出了协议类型定义且该协议类型定义有自带的协议解析函数,则可以直接调用第三方提供的协议类型定义对应的解码函数作为协议解码函数,协议解码函数可以解析出解析数据包中的用户数据所包括的字段名称以及各个字段名称对应的取值。
步骤104:将待解析数据包输入协议解码函数,获得待解析数据包中所包括的字段名称以及字段名称的取值。
在生成协议解码函数后则可以将待解析数据包输入协议解码函数,运行协议解码函数获得解析结果,即获得待解析数据包中所包括的字段名称以及各个字段名称对应的取值。
在本发明的一些可能的实现方式中,还可以将待解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称。
另外,通过对比协议字段名称和取值,可以对不符合预期的字段产生错误提示信息,如果未输出取值不符合对应的标准取值范围的字段名称,则说明待解析数据包的协议拼装没有问题。
需要注意的是,本发明实施例所提供的数据包的协议解析方法不止可以应用在开发联调、测试环境中,亦适用于生产或线上环境。
这样,本发明实施例在获取待解析数据包以及协议文档之后,根据协议文档生成协议解码函数,将待解析数据包输入该协议解码函数,解码出待解析数据包中所包括的字段名称以及各个字段名称的取值,根据协议文档自动生成协议解码函数,则可以对所传输的任意数据包进行协议解析。另外,本发明实施例还可以将解析出的解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称,从而加快对数据包的问题定位速度。
参见图3所示,本发明实施例中提供的数据包的协议解析装置实施例,可以包括:
获取单元301,用于获取待解析数据包。
在本发明的一些可能的实现方式中,获取单元可以包括:
抓取子单元,用于在数据传输链路上抓取数据包,获得所抓取的数据包;
还原子单元,用于将所抓取的数据包还原为二进制数据包作为待解析数据包。
也即获取单元可以具体用于在数据传输链路上抓取数据包,获得所抓取的数据包;将所抓取的数据包还原为二进制数据包作为待解析数据包。
接收单元302,用于接收协议文档。
生成单元303,用于根据协议文档生成协议解码函数。
在本发明的一些可能的实现方式中,生成单元可以包括:
第一确定子单元,用于根据协议文档确定数据包长度类型,数据包长度类型包括定长数据包类型以及变长数据包类型;
第一生成子单元,用于当数据包长度类型为定长数据包类型时,根据协议文档中的结构体信息以及待解析数据包的长度生成协议解码函数;
第二生成子单元,当数据包长度类型为变长数据包类型时,根据协议文档中的TLV信息生成协议解码函数,或者,根据协议文档中的协议类型定义调用与协议类型定义对应的解码函数作为协议解码函数。
在本发明的一些可能的实现方式中,第一生成子单元可以包括:
第二确定子单元,用于当数据包长度类型为定长数据包类型时,根据协议文档中的结构体信息以及待解析数据包的长度,确定待解析数据包中的数据包包头以及待解析数据包中的用户数据;
判断子单元,用于判断是否需要对数据包包头进行解析;
第三生成子单元,用于如果判断子单元的判断结果为需要对数据包包头进行解析,根据结构体信息生成对数据包包头进行解码的包头解析函数以及对用户数据进行解码的用户数据解析函数,包头解析函数以及用户数据解析函数作为协议解码函数;
第四生成子单元,用于如果判断子单元的判断结果为不需要对数据包包头进行解析,根据结构体信息生成对用户数据进行解码的用户数据解析函数,用户数据解析函数作为协议解码函数。
获得单元304,用于将待解析数据包输入协议解码函数,获得待解析数据包中所包括的字段名称以及字段名称对应的取值。
在本发明的一些可能的实现方式中,本发明实施例中提供的数据包的协议解析装置还可以包括:
比较单元,用于将待解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称。
这样,本发明实施例在获取待解析数据包以及协议文档之后,根据协议文档生成协议解码函数,将待解析数据包输入该协议解码函数,解码出待解析数据包中所包括的字段名称以及各个字段名称的取值,根据协议文档自动生成协议解码函数,则可以对所传输的任意数据包进行协议解析。另外,本发明实施例还可以将解析出的解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称,从而加快对数据包的问题定位速度。
相应的,本发明实施例还提供一种终端,参见图4所示,可以包括:
处理器401、存储器402、输入装置403和输出装置404。数据包的协议解析终端中的处理器401的数量可以一个或多个,图4中以一个处理器为例。在本发明的一些实施例中,处理器401、存储器402、输入装置403和输出装置404可通过总线或其它方式连接,其中,图4中以通过总线连接为例。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行数据包的协议解析终端的各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置403可用于接收输入的数字或字符信息,以及产生与数据包的协议解析终端的用户设置以及功能控制有关的键信号输入。
具体在本实施例中,处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:
获取待解析数据包;
接收协议文档;
根据所述协议文档生成协议解码函数;
将所述待解析数据包输入所述协议解码函数,获得所述待解析数据包中所包括的字段名称以及所述字段名称的取值。
相应的,所述获取待解析数据包,包括:
在数据传输链路上抓取数据包,获得所抓取的数据包;
将所述所抓取的数据包还原为二进制数据包作为待解析数据包。
相应的,所述根据所述协议文档生成协议解码函数,包括:
根据所述协议文档确定数据包长度类型,所述数据包长度类型包括定长数据包类型以及变长数据包类型;
当所述数据包长度类型为定长数据包类型时,根据所述协议文档中的结构体信息以及所述待解析数据包的长度生成协议解码函数;
当所述数据包长度类型为变长数据包类型时,根据所述协议文档中的类型-长度-取值TLV信息生成协议解码函数,或者,根据所述协议文档中的协议类型定义调用所述与所述协议类型定义对应的解码函数作为协议解码函数。
相应的,所述根据所述协议文档中的结构体信息以及所述待解析数据包的长度生成协议解码函数,包括:
根据所述协议文档中的结构体信息以及所述待解析数据包的长度,确定所述待解析数据包中的数据包包头以及所述待解析数据包中的用户数据;
判断是否需要对所述数据包包头进行解析;
如果需要对所述数据包包头进行解析,根据所述结构体信息生成对所述数据包包头进行解码的包头解析函数以及对所述用户数据进行解码的用户数据解析函数,所述包头解析函数以及所述用户数据解析函数作为协议解码函数;
如果不需要对数据包包头进行解析,根据所述结构体信息生成对所述用户数据进行解码的用户数据解析函数,所述用户数据解析函数作为协议解码函数。
相应的,还包括:
将所述待解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称。
这样,本发明实施例在获取待解析数据包以及协议文档之后,根据协议文档生成协议解码函数,将待解析数据包输入该协议解码函数,解码出待解析数据包中所包括的字段名称以及各个字段名称的取值,根据协议文档自动生成协议解码函数,则可以对所传输的任意数据包进行协议解析。另外,本发明实施例还可以将解析出的解析数据包中各个字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称,从而加快对数据包的问题定位速度。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种数据包的协议解析方法,其特征在于,所述方法包括:
获取待解析数据包;
接收待解析数据包所使用协议的协议文档,其中,所述协议文档包括待解析数据包的数据包长度类型,所述数据包长度类型包括定长数据包类型以及变长数据包类型;
根据所述协议文档确定数据包长度类型,依据不同数据包长度类型,采用不同的方式根据所述协议文档生成协议解码函数;
将所述待解析数据包输入所述协议解码函数,获得所述待解析数据包中所包括的字段名称以及所述字段名称的取值;
将所述待解析数据包中所述字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称,并对不符合预期的字段产生错误提示信息;
其中,所述根据所述协议文档确定数据包长度类型,依据不同数据包长度类型,采用不同的方式根据所述协议文档生成协议解码函数,包括:
根据所述协议文档确定所述数据包长度类型;当所述数据包长度类型为所述定长数据包类型时,根据所述协议文档中的结构体信息以及所述待解析数据包的长度,确定所述待解析数据包中的数据包包头以及所述待解析数据包中的用户数据;判断是否需要对所述数据包包头进行解析;在需要对所述数据包包头进行解析时,根据所述结构体信息生成对所述数据包包头进行解码的包头解析函数以及对所述用户数据进行解码的用户数据解析函数,将所述包头解析函数以及所述用户数据解析函数作为协议解码函数;在不需要对数据包包头进行解析时,根据所述结构体信息生成对所述用户数据进行解码的用户数据解析函数,将所述用户数据解析函数作为协议解码函数;
当所述数据包长度类型为所述变长数据包类型时,根据所述协议文档中的类型-长度-取值TLV信息生成所述协议解码函数,或者,当所述协议文档中给出了协议类型定义且所述协议类型定义有自带的协议解析函数时,根据所述协议文档中的所述协议类型定义,调用第三方提供的协议类型定义对应的解码函数作为所述协议解码函数。
2.根据权利要求1所述的方法,其特征在于,所述获取待解析数据包,包括:
在数据传输链路上抓取数据包,获得所抓取的数据包;
将所述所抓取的数据包还原为二进制数据包作为待解析数据包。
3.一种数据包的协议解析装置,其特征在于,所述装置包括:
获取单元,用于获取待解析数据包;
接收单元,用于接收待解析数据包所使用协议的协议文档,其中,所述协议文档包括待解析数据包的数据包长度类型,所述数据包长度类型包括定长数据包类型以及变长数据包类型;
生成单元,用于根据所述协议文档确定数据包长度类型,依据不同数据包长度类型,采用不同的方式根据所述协议文档生成协议解码函数;
获得单元,用于将所述待解析数据包输入所述协议解码函数,获得所述待解析数据包中所包括的字段名称以及所述字段名称对应的取值;
比较单元,用于将所述待解析数据包中所述字段名称的取值与对应的标准取值范围进行比较,输出取值不符合对应的标准取值范围的字段名称,并对不符合预期的字段产生错误提示信息;
其中,所述生成单元包括:
第一确定子单元,用于根据所述协议文档确定所述数据包长度类型,所述数据包长度类型包括定长数据包类型以及变长数据包类型;
第一生成子单元,用于当所述数据包长度类型为所述定长数据包类型时,根据所述协议文档中的结构体信息以及所述待解析数据包的长度,确定所述待解析数据包中的数据包包头以及所述待解析数据包中的用户数据;判断是否需要对所述数据包包头进行解析;在需要对所述数据包包头进行解析时,根据所述结构体信息生成对所述数据包包头进行解码的包头解析函数以及对所述用户数据进行解码的用户数据解析函数,将所述包头解析函数以及所述用户数据解析函数作为协议解码函数;在不需要对数据包包头进行解析时,根据所述结构体信息生成对所述用户数据进行解码的用户数据解析函数,将所述用户数据解析函数作为协议解码函数;
第二生成子单元,当所述数据包长度类型为所述变长数据包类型时,根据所述协议文档中的类型-长度-取值TLV信息生成所述协议解码函数,或者,当所述协议文档中给出了协议类型定义且所述协议类型定义有自带的协议解析函数时,根据所述协议文档中的所述协议类型定义调用第三方提供的协议类型定义对应的解码函数作为所述协议解码函数。
4.根据权利要求3所述的装置,其特征在于,所述获取单元包括:
抓取子单元,用于在数据传输链路上抓取数据包,获得所抓取的数据包;
还原子单元,用于将所述所抓取的数据包还原为二进制数据包作为待解析数据包。
5.一种终端,其特征在于,包括:存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器中存储的计算机程序;
所述计算机程序用于执行权利要求1-2任一项所述的数据包的协议解析方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1-2任一项所述的数据包的协议解析方法。
CN201611009744.5A 2016-11-16 2016-11-16 一种数据包的协议解析方法及装置 Active CN108076017B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611009744.5A CN108076017B (zh) 2016-11-16 2016-11-16 一种数据包的协议解析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611009744.5A CN108076017B (zh) 2016-11-16 2016-11-16 一种数据包的协议解析方法及装置

Publications (2)

Publication Number Publication Date
CN108076017A CN108076017A (zh) 2018-05-25
CN108076017B true CN108076017B (zh) 2021-09-17

Family

ID=62163215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611009744.5A Active CN108076017B (zh) 2016-11-16 2016-11-16 一种数据包的协议解析方法及装置

Country Status (1)

Country Link
CN (1) CN108076017B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111262812A (zh) * 2018-11-30 2020-06-09 比亚迪股份有限公司 数据包筛选方法和装置
CN109981651A (zh) * 2019-03-27 2019-07-05 努比亚技术有限公司 数据传输方法、装置、移动终端及可读存储介质
CN111510159B (zh) * 2020-05-13 2022-03-08 中国科学院自动化研究所 遵循通用信息交换协议规范的智能编码方法及编码器
CN111464565B (zh) * 2020-05-13 2021-09-28 中国科学院自动化研究所 遵循通用信息交换协议规范的智能解码方法及解码器
CN112131161B (zh) * 2020-09-14 2022-03-29 山东产研集成电路产业研究院有限公司 一种Binary协议数据流的硬件解析方法
CN113760372B (zh) * 2021-11-10 2022-02-08 航天宏图信息技术股份有限公司 一种二进制数据包的解析方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1858717A (zh) * 2005-05-08 2006-11-08 中兴通讯股份有限公司 一种数据编解码方法及其编解码器
CN103001971A (zh) * 2012-12-25 2013-03-27 成都科来软件有限公司 一种网络数据包解析方法
CN104506484A (zh) * 2014-11-11 2015-04-08 中国电子科技集团公司第三十研究所 一种私有协议分析与识别方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8009566B2 (en) * 2006-06-26 2011-08-30 Palo Alto Networks, Inc. Packet classification in a network security device
CN102647414B (zh) * 2012-03-30 2014-12-24 华为技术有限公司 协议解析方法、设备及系统
US9485306B2 (en) * 2013-06-21 2016-11-01 Here Global B.V. Methods, apparatuses, and computer program products for facilitating a data interchange protocol

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1858717A (zh) * 2005-05-08 2006-11-08 中兴通讯股份有限公司 一种数据编解码方法及其编解码器
CN103001971A (zh) * 2012-12-25 2013-03-27 成都科来软件有限公司 一种网络数据包解析方法
CN104506484A (zh) * 2014-11-11 2015-04-08 中国电子科技集团公司第三十研究所 一种私有协议分析与识别方法

Also Published As

Publication number Publication date
CN108076017A (zh) 2018-05-25

Similar Documents

Publication Publication Date Title
CN108076017B (zh) 一种数据包的协议解析方法及装置
CN108650149B (zh) 服务器的测试方法、装置、设备及计算机可读存储介质
JP6912469B2 (ja) アクセス要求変換方法および装置
CN107665233B (zh) 数据库数据处理方法、装置、计算机设备和存储介质
CN110275831B (zh) 协议接口的mock数据校验方法和装置
CN106484611B (zh) 基于自动化协议适配的模糊测试方法和装置
CN111756697B (zh) Api安全检测方法、装置、存储介质及计算机设备
CN115208951B (zh) 请求处理方法、装置、电子设备及计算机可读存储介质
CN106972983B (zh) 网络接口的自动化测试装置及方法
CN111580821B (zh) 脚本绑定方法、装置、电子设备及计算机可读存储介质
CN107888451B (zh) 一种Web服务器的测试方法及装置
CN113094283A (zh) 一种数据获取方法、装置、设备及存储介质
CN112416735B (zh) 一种应用程序检测方法、装置及终端设备、存储介质
CN114675876B (zh) 一种业务处理方法、装置、电子设备及存储介质
US9325743B2 (en) Information processing apparatus, method, and program
CN114980064A (zh) 信息关联方法、装置、电子设备及存储介质
CN113852551A (zh) 一种报文处理方法及装置
CN111125712A (zh) 一种漏洞扫描的方法及装置
CN110740134A (zh) 一种url鉴权测试方法、装置、设备及介质
CN116074218B (zh) 标识解析节点的压力测试方法、装置、设备和介质
CN112468358B (zh) 一种协议检测方法、系统、设备及计算机可读存储介质
JP6280018B2 (ja) ルール逸脱アプリケーション発見装置、ルール逸脱アプリケーション発見システム及びルール逸脱アプリケーション発見方法
CN115225342B (zh) 漏洞扫描方法、装置、系统、电子装置和存储介质
CN114090112B (zh) 配置文件的加载方法和装置、存储介质及电子装置
CN111178044B (zh) 一种确定目标文本要素的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant