CN102932474A - 报文解析方法、设备及*** - Google Patents

报文解析方法、设备及*** Download PDF

Info

Publication number
CN102932474A
CN102932474A CN2012104581118A CN201210458111A CN102932474A CN 102932474 A CN102932474 A CN 102932474A CN 2012104581118 A CN2012104581118 A CN 2012104581118A CN 201210458111 A CN201210458111 A CN 201210458111A CN 102932474 A CN102932474 A CN 102932474A
Authority
CN
China
Prior art keywords
operand
message
parsing
packet parsing
equipment
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.)
Granted
Application number
CN2012104581118A
Other languages
English (en)
Other versions
CN102932474B (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.)
Beijing Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks 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 Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN201210458111.8A priority Critical patent/CN102932474B/zh
Publication of CN102932474A publication Critical patent/CN102932474A/zh
Application granted granted Critical
Publication of CN102932474B publication Critical patent/CN102932474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种报文解析方法、设备及***。该方法包括:报文解析设备接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。本发明提供的报文解析方法、设备及***,用于对频繁变化、具有关联性的报文进行有效解析。

Description

报文解析方法、设备及***
技术领域
本发明涉及报文解析技术,尤其涉及一种报文解析方法、设备及***,属于通信技术领域。
背景技术
近年来,计算机网络中的各种对等网络(Peer-to-Peer,P2P)应用越来越丰富,出现了许多新的应用类型和协议,这些P2P应用消耗了大量的网络带宽。由于不同的网络应用对带宽资源的需求是不一样的,实时应用(如网络游戏、网络电话(Voice over Internet Protocol,VOIP)、视频会议等)对网络传输时延、抖动等特性较为敏感,当网络上有突发性高的P2P应用流量等流量型应用时,实时应用的使用就会受很大的影响。为了有效利用网络资源,必须对P2P应用的流量进行有效的管理,而首先必须能够实现对P2P流量的高效、准确的识别。
现有的应用识别,通常是基于静态特征库对报文进行解析来实现的。静态特征库中通常描述了如下特征:报文端口、互联网协议(InternetProtocol,IP)地址特征、报文载荷特征以及报文载荷长度。例如:要识别一条报文是不是由某一应用软件产生的,则对报文进行解析,以判断能否从报文载荷中提取出静态特征库中指定的字符串,若是,我们就认为这条报文是由相应软件产生的。
现有的基于静态特征库对报文进行解析的技术,都是在报文之间没有关联性的前提下进行的报文匹配。而在实际应用中,经常存在利用静态特征库无法有效解析、识别报文的情况。以奇艺视频软件为例,例如:第一条报文的内容中会指明后面几条报文的目的IP和目的端口特征,因此只要有内网用户去访问这些IP和目的端口,此时产生的报文也是由“奇艺视频软件”产生的。而此时,由于静态特征库对报文进行解析,静态特征库中未配置相应的目的IP和目的端口特征,所以不会针对这些目的IP和目的端口特征进行报文解析,从而无法有效识别。
目前,虽然可以通过直接在进行报文识别的设备上编译报文解析程序,来实现这类情况的报文识别。但是,所编译的报文解析程序是固定不变的,每次软件更新,都需要修改程序代码,周期长、工作量大,并且需要关闭并重新启动,这期间会导致用户网络中断,因此无法与报文的频繁变化相适应。
发明内容
针对现有技术中存在的缺陷,本发明提供一种报文解析方法、设置及***,用于对频繁变化、具有关联性的报文进行有效解析。
根据本发明的第一方面,提供一种报文解析方法,包括:
报文解析设备接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;
所述报文解析设备根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;
所述报文解析设备通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
根据本发明的第二方面,提供另一种报文解析方法,包括:
载入报文解析设备提供的语法定义,所述语法定义包括所述报文解析设备中定义的基础函数和数据类型;
接收用户根据所述语法定义,编写的特征库规则解析文件;
将所述特征库规则解析文件加载至报文解析设备,以使报文解析设备根据所述特征库规则解析文件,生成包括所述至少两个基础函数的函数链,并通过执行所述函数链,对报文进行解析,其中,报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
根据本发明的第三方面,提供一种报文解析设备,包括:
接收模块,用于接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;
规则解析模块,用于根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;
报文解析模块,用于通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
根据本发明的第四方面,提供一种特征库,其特征在于,包括:
语法定义载入模块,用于载入报文解析设备提供的语法定义,所述语法定义包括所述报文解析设备中定义的基础函数和数据类型;
规则接收模块,用于接收用户根据所述语法定义,编写的特征库规则解析文件;
加载模块,用于将所述特征库规则解析文件加载至报文解析设备,以使报文解析设备根据所述特征库规则解析文件,生成包括所述至少两个基础函数的函数链,并通过执行所述函数链,对报文进行解析,其中,报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
根据本发明的第五方面,提供一种报文解析***,包括本发明提供的报文解析设备,以及本发明提供的特征库,所述报文解析设备与所述特征库连接。
根据本发明提供的报文解析方法、设置及***,报文解析设备接收特征库规则解析文件,根据特征库规则解析文件中的基础函数的字符串标识,以及对应的操作对象字符串,对基础函数和操作对象进行组合,动态确定报文解析逻辑。由于将基础函数的功能与操作对象相剥离,使得当报文由于应用软件更新等原因发生变化时,通过对特征库中的规则解析文件中,基础函数和/或操作对象的组合关系/逻辑进行调整即可,修改方便、工作量小,并且无需重新启动报文解析设备。而且,由于基础函数的操作对象指向具体的内存空间,在执行报文解析时,对相应的内存空间进行操作,所以操作对象的实际值能够在具有关联性的不同报文之间传递。因此,上述报文解析方法能够对频繁变化、具有关联性的报文进行有效解析。
附图说明
图1为一种用于实现本发明实施例的报文解析方法的***架构图。
图2为本发明一个实施例的报文解析方法的流程图。
图3为解析特征库规则解析文件的一个示例的示意图。
图4为本发明另一个实施例的报文解析方法的流程图。
图5为本发明一个实施例的报文解析设备的结构示意图。
图6为本发明一个实施例的特征库的结构示意图。
具体实施方式
图1为一种用于实现本发明实施例的报文解析方法的***架构图。如图1所示,该***包括报文解析设备11和特征库12。其中,特征库12可以部署在任意设备或计算机中,本发明实施例中不做限制。下文中,结合图1所示的***,分别从报文解析设备11和特征库12的角度,对本发明实施例的报文解析方法的具体流程进行详细说明。
实施例一
图2为本发明一个实施例的报文解析方法的流程图。图2所示的报文解析方法由报文解析设备执行。如图2所示,包括以下步骤:
201,报文解析设备接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;
其中,报文解析设备抽象出通用的类似高级编程语言的语法定义,并通过软件编码和软件编译,在报文解析设备上一次性实现这些抽象的语法定义。
具体地,报文解析设备将现有的功能复杂的、固定不变的报文解析程序的多个动作,拆解为多个功能单一的基础函数实现,预先对这些功能单一的基础函数进行定义,形成基础函数集合。并且,对基础函数集合中的各基础函数进行字符串命名(即为每个基础函数分配字符串标识),以供特征库进行引用。这些基础函数的功能被静态确定。
报文解析设备中还定义了基础的数据类型,作为基础函数集合中各基础函数的操作对象和运算结果,包括立即数、变量、常量、缓冲区等。具体的数据类型与报文解析设备使用的程序语言相关,并且能够进行重新定义,组成复合结构,并不限于上述几种。
报文解析设备将上述语法定义(包括基础函数定义和数据类型定义)载入特征库,以供用户按照特征库内所载入的语法定义编写特征库规则解析文件。更为具体地,用户根据实际的报文解析需求,从语法定义的基础函数集合中选择相应功能的基础函数,以所选择的基础函数的字符串标识表示在特征库规则解析文件中,并确定所选择的基础函数的操作对象,以操作对象字符串表示在特征库规则解析文件中。
例如,特征库规则解析文件为:&(基础函数1的字符串标识int1 string1)&(基础函数2的字符串标识string1 buf1)&(基础函数3的字符串标识int1int2 buf1)。其中,“int1 string1”为基础函数1对应的操作对象字符串,该操作对象字符串的含义为基础函数1包括两个操作对象,该两个操作对象的名称分别为“int1”和“string1”;类似地,“string1 buf1”为基础函数2对应的操作对象字符串,“int1 int2 buf1”为基础函数3对应的操作对象字符串。该特征库规则解析文件共涉及三个基础函数,其中基础函数1和基础函数2通过操作对象“string1”相关联,基础函数1和基础函数3通过操作对象“int1”相关联,基础函数2和基础函数3通过操作对象“buf1”相关联。
用户完成特征库规则解析文件的编写后,特征库将包含有特征库规则解析文件的特征库文件加载到报文解析设备中。
202,所述报文解析设备根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;
具体地,报文解析设备获取特征库规则解析文件后,自动解析特征库规则解析文件,以将用户定义的特征库规则解析文件中的语句,转化为报文解析设备可执行的函数链。
203,所述报文解析设备通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
具体地,报文解析设备为需要调用的基础函数的操作对象分配指定的内存空间,即将一个确定的内存空间的地址指向基础函数的入口。报文解析设备依次执行函数链中的各基础函数,并在执行各基础函数时,将指向该基础函数的入口的内存空间的实际内容,作为该基础函数的操作对象,执行函数功能,并将执行结果保存在内存空间中,以供后续执行的基础函数引用。
根据上述实施例的报文解析方法,报文解析设备接收特征库规则解析文件,根据特征库规则解析文件中的基础函数的字符串标识,以及对应的操作对象字符串,对基础函数和操作对象进行组合,动态确定报文解析逻辑。由于将基础函数的功能与操作对象相剥离,使得当报文由于应用软件更新等原因发生变化时,通过对特征库中的规则解析文件中,基础函数和/或操作对象的组合关系/逻辑进行调整即可,修改方便、工作量小,并且无需重新启动报文解析设备。而且,由于基础函数的操作对象指向具体的内存空间,在执行报文解析时,对相应的内存空间进行操作,所以操作对象的实际值能够在具有关联性的不同报文之间传递。因此,上述报文解析方法能够对频繁变化、具有关联性的报文进行有效解析。
实施例二
本实施例中,在上述实施例的基础上,对报文解析设备解析特征库规则解析文件的流程进行扩展说明。
具体地,所述报文解析设备根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链,具体包括:
所述报文解析设备根据所述操作对象字符串,生成与各操作对象对应的基础操作对象结构,并确定所述操作对象指向的内存空间,其中所述基础操作对象结构包括数据类型和操作对象名称;
将所述基础操作对象结构,按照与所述字符串标识对应的基础函数的参数列表进行封装,生成用于将所述基础函数与所述操作对象指向的内存空间相关联的函数操作对象列表结构;
根据所述特征库规则解析文件中所述至少两个基础函数的字符串标识的次序、以及各基础函数对应的函数操作对象列表结构生成所述函数链。
更为具体地,图3为解析特征库规则解析文件的一个示例的示意图。在图3中,以特征库规则解析文件“&(基础函数1的字符串标识int1 string1)&(基础函数2的字符串标识string1 buf1)&(基础函数3的字符串标识int1int2 buf1)”为例进行说明。
报文解析设备将操作对象字符串“int1 string1”转换为基础操作对象结构“int,int1”(图3中以表示)和“string,string1”(图3中以
Figure BDA00002400992100062
表示)。其中,“int”表示数据类型为整型变量,“int1”表示操作对象名称;“string”表示数据类型为字符串变量,“string1”表示操作对象名称。报文解析设备将根据得到的基础操作对象结构,确定操作对象指向的内存空间。例如,报文解析设备预申请有各种数据类型的内存空间,则报文解析设备根据基础操作对象结构中的数据类型,确定该数据类型对应的内存地址范围,从该内存地址范围中选择一个(或多个)内存地址,并建立所选择的内存地址与基础操作对象结构中的操作对象名称的对应关系,即可确定操作对象指向的内存空间。
报文解析设备还通过按照基础函数的参数列表对基础操作对象结构进行封装,建立基础函数与操作对象的对应关系,并将基础函数与操作对象指向的内存空间相关联。如图3中所示,基础函数1的函数操作对象列表结构包括“int,int1”和“string,string1”两个基础操作对象结构。该函数操作对象列表结构,将操作对象int1和string1对应的内存空间在运行空间中映射为“基础函数1的int1内存空间”和“基础函数1的string1内存空间”。其中,基础函数的参数列表是报文解析设备中定义基础函数时所定义的,用于表示不同参数的含义,其具体形式本发明实施例中不做限制。
报文解析设备还将特征库规则解析文件中的基础函数的字符串标识与基础函数在报文解析设备中的运行地址进行关联。将该运行地址也映射至运行空间。即可在运行空间中自动运行基础函数,并对相应的内存空间进行操作。
根据报文解析设备中多个基础函数之间的顺序关系(即各基础函数的编号)、各基础函数的运行地址、以及各基础函数的函数操作对象列表结构,即可形成报文解析设备可自动执行的报文解析程序,即函数链。
当报文解析设备进行报文解析时,可以首先对报文进行传统的静态特征库识别,得到初步的报文识别结果,然后确定是否要对报文的内容进行动态的提取和分析。如果需要,则触发即动态报文解析的流程(即上述实施例的报文解析流程)。报文解析设备初始化预申请好的运行空间,将当前运行的基础函数的编号设置为函数链中的第一个基础函数,然后依次执行函数链中的所有基础函数,而且还可依次执行多个函数链。
对于每个基础函数,首先根据函数操作对象列表结构,将基础函数的操作对象映射为实际的内存变量,即运行空间中的成员变量,然后执行函数功能,并将执行结果保存在运行空间中,供其它基础函数引用。
通过定义不同的运行空间的生命周期,将运行空间中解析出来的操作对象的实际值(即报文解析的实际内容),在相同数据流的多个报文之间、不同数据流之间、或者多个应用模块之间传递,例如精细化识别模块、数据缓存模块、内容审计模块和数据库处理模块等,以实现不同范畴内的应用识别。
进一步地,在上述实施例的报文解析方法中,所述基础函数包括用于对报文载荷内容进行运算的函数,和/或用于对报文载荷内容格式化输入输出的函数,和/或用于接口操作的函数,和/或用于对报文进行解压缩或解密的算法函数,和/或记录报文载荷内容的函数,和/或用于控制执行逻辑的函数。
其中,用于控制执行逻辑的函数为一种特殊类型的函数,其功能在于根据其它基础函数的执行结果,修改下一个运行的基础函数的编号。因此,能够在顺序执行动态生成的报文解析程序(函数链)的基础上,实现选择判断、循环跳转等解析逻辑,真正达到智能解析和精细化识别的效果。
实施例三
本实施例中,提供报文解析设备中语法定义的一些具体示例,并提供根据这些语法定义编写特征库规则解析文件,以及报文解析设备根据特征库规则解析文件执行报文解析的具体示例。其仅作为本发明的示例,用于对本发明的报文解析方法进行更为清楚、详细的说明,而不构成对本发明的限制。
报文解析设备的语法定义中例如包括以下内容:
(一)常量
常量也叫立即数,就是指我们通常理解中的常数,如1,2,0X03等。报文解析设备中定义的常量名称、格式及相关说明参见表1。
表1
(二)全局知名变量
全局知名变量的值主要来源于报文和应用模块(例如为精细化识别模块、数据缓存模块、内容审计模块和数据库处理模块等)中,可以参与运算,可能在不同数据流和不同报文中被使用,但是是只读的。主要是为了报文公共信息和模块公共信息的提取,因此定义了全局知名变量。
全局知名变量通常以@为前缀,如@in_ip,具体由报文解析设备定义,可参与运算,是不可进行赋值的整型变量,实际值在报文解析时确定,如报文的五元组信息。
为了能够支撑报文分析,通常报文解析设备需要具备如表2所示的全局知名变量:
表2
(三)普通变量
报文解析设备中定义的普通变量的名称、格式及相关说明参见表3。
表3
(四)运算符语法
运算符语法操作的是整型常量和整型变量,主要是负责完成四则运算和位运算。通常运算符语法是在计算报文的偏移位置,计算报文的某些域的长度时用到。
典型的运算符语法例如表4所示:
表4
Figure BDA00002400992100101
(五)逻辑控制语法
逻辑控制语法主要用于运算结果的比较,根据比较结果跳转到指定的语法节点执行。从一个特征库某条规则的一个语法节点,根据比较结果,跳转到另一条语法节点执行。
通过这种语法,我们可以对报文解析操作实现逻辑分支控制。报文解析过程中也可以实现类似while,if else的逻辑判断处理。
典型的逻辑控制语法例如表5所示:
表5
Figure BDA00002400992100102
Figure BDA00002400992100111
(六)数据缓冲区操作语法
数据缓冲区操作语法用于对报文缓冲区进行操作,能够实现报文缓冲区的基本读写,报文缓冲区的基本比较,报文缓冲区的格式化读取,报文缓冲区的格式化写入。
通过使用数据缓冲区操作语法,报文操作更加方便,可以灵活构造任意报文内容。
典型的数据缓冲区操作语法例如表6所示:
表6
Figure BDA00002400992100112
Figure BDA00002400992100121
Figure BDA00002400992100131
如表6中所示,通过定义“rint”和“rint_le”,可以在报文读取的时候,充分考虑到网络报文字节序的特性,决定是按照大端字节序读取报文,还是按照小端字节序读取报文。
(七)报文算法操作语法
目前有些应用软件的网络报文被压缩,加密,或者要进行MD5校验。典型的比如某些WEB视频应用的HTTP资源,就会进行gzip压缩,因此对于这类报文,要解析报文的资源内容,就把必须解压缩才可以。
因此可以在报文解析设备中定义报文解压缩,解密,MD5校验计算的语法,把主要常用的算法都转换为特征库语法,提供给报文解析使用。
典型的报文解析语法例如表7所示:
表7
(八)报文业务处理语法
报文除了解析内容提取信息外,更重要的是需要针对报文进行业务处理。例如:与对端服务器进行接口(SOCKET)通讯交互,从而了解对端服务器的应用类型;例如:根据报文分析的资源IP,创建预期连接,当符合预期连接的新报文来的时候,识别出该报文的应用类型,从而实现该报文的应用路由,特别是TCP连接的应用路由;例如:比如根据报文分析的结果,把指定信息***到数据库中,给其他应用模块使用。
典型的报文业务处理语法例如表8所示:
表8
Figure BDA00002400992100152
Figure BDA00002400992100161
Figure BDA00002400992100171
下面,以WEB在线视频应用的控制流资源报文解析为例,结合具体的语法定义,说明报文解析设备的具体实现流程。
例如,WEB在线视频应用“奇艺高清视频”,其控制流资源报文存在如下资源报文信息:
GET...net-vod-iqiyi...
Host:conf.ppweb.com.cn...
rtmfp://201.101.11.34:9921…
rtmfp://58.61.211.74:10037...
现在的目标就是在识别到数据流是“奇艺高清视频”的控制流时,要提取出上述的服务器IP和端口信息,创建预期连接。
报文解析规则前面是普通的特征库识别语法,通过判断Host:conf.ppweb.com.cn识别出是奇艺高清视频的控制流,然后要触发服务器IP和端口信息的语法分析。
语法语句如下:
&(main:0)\
&(nextpkt:2,0,2)&(exit)\
&(mov:int0,0)&(search:payload,int0,int1,″rtmfp://″)&(jl:int0,1)\
&(add:int0,int0,8)\
&(fmt_bufin:payload,int0,25,″%s:%d″,str0,int4)&(str2ip:int3,str0)\
&(expect:@in_ip,0,int3,int4,17,0x1D,@idx,int5)&(jmp:3)
报文解析设备中预先定义如下基础函数、数据类型以及运行空间。其中,基础函数的操作对象的实际内容在语法定义部分并未确定,而是等到报文解析的时候,通过内存映射,动态确定。
报文解析设备中预先定义的基础函数包括:
(1)Nextpkt:指示后续报文需要继续进行该规则的语法分析,即将运行时环境在当前数据流的多个报文之间进行传递。
(2)Exit:退出报文解析程序的执行。
(3)Mov:对整型变量进行赋值。
(4)Search:在指定字符缓冲区(通常是报文载荷)中搜索特定字符串,并且将字符串的偏移位置记录下来。
(5)Jl:根据第一个函数对象是否小于0,修改修改下一个运行的函数编号。
(6)Add:对两个整型变量进行相加运算。
(7)Fmt_bufin:格式化读取报文字符串。
(8)Str2ip:将字符串转换为整型IP值。
(9)Expect:指定数据流五元组,在预期连接表中***一条记录,用于首报文识别。
(10)Jmp:无条件修改下一个运行的函数编号,实现循环控制功能。
报文解析设备中预先定义的数据类型包括:
(1)立即数:如0、1、2。
(2)整型变量:如int0、int1。
(3)整型常量:如内网IP@in_ip。
(4)字符串:如″rtmfp://″。
(5)字符串变量:如str0。
(6)字符串常量:如报文载荷payload。
报文解析设备中预先定义的运行空间用于保存运行过程的操作对象值,以C语言为例,定义如下数据结构:
Figure BDA00002400992100191
报文解析设备完成上述语法定义后,将其加载至特征库,并接收用户根据该语法定义编写的特征库规则解析文件。报文解析设备对特征库规则解析文件进行解析时,执行如下语法解析处理:
步骤1,定义基础数据对象结构:以C语言为例,定义如下数据结构。
Figure BDA00002400992100201
当特征库升级至设备时,即可将&(mov:int0,0)的第一个参数根据其名称转换为C语言中的结构体:type为整型变量,un.offset为0。
步骤2,定义函数操作对象列表结构object_list_t,如将&(mov:int0,0)的整型变量参数int0和立即数参数0转化为data_object_t结构,并串联起来,形成mov函数的函数操作对象列表结构。
步骤3,定义函数对象结构,以C语言为例,定义如下数据结构。
步骤4,定义报文解析程序结构,将一条特征库规则中的所有基础函数串联起来,形成报文解析程序,函数在链中的位置即为函数编号,可以通过立即数指定。
在上述步骤4中获得报文解析程序后,执行如下报文解析流程:
步骤5,通过DPI识别,确定进行精细化识别的特征库规则,分配并初始化运行时环境runtime_t。
步骤6,初始化整型常量和字符串常量集合,字符串常量通常包括IP协议、TCP/UDP协议首部中的源目的IP、端口等信息,以及当前规则对应的应用类型索引,字符串常量通常指应用层载荷。
步骤7,依次调度执行报文解析程序结构中的基础函数链的每一个函数:
(1)Nextpkt:将当前运行时环境在相同数据流的多个报文中进行共享,指定当前数据流的后续报文从规则的第2个基础函数开始进行报文解析。
(2)Exit:退出当前报文的解析流程。
(3)Mov:将整型变量int0赋值为0。所有函数在执行操作前,需要对变量类型的操作对象进行内存空间映射。以Mov例,需要先将int0,映射到运行时环境runtime_t的int_set[0]成员上。
(4)Seach:在报文载荷中搜索″rtmfp://″字符串,将其偏移保存至int0变量。
(5)Jl:根据搜索结果,决定是否进行后续解析流程。如果没有所有到字符串,即int0小于0,则跳转到编号为1的函数对象Exit,退出当前报文的解析流程。
(6)Add:将字符串″rtmfp://″的偏移位置加上字符串长度8,指向报文载荷中IP 201.101.11.34对应的位置。
(7)Fmt_bufin:格式化读取报文中的IP和端口,分别保存于运行时环境中的字符串变量str0和整型变量int4.
(8)Str2ip:将报文IP的字符串变量str0转换为整型数值,保存于变量int3中。
(9)Expect:根据@in_ip代表的内网IP、str0和int4中存储的外网IP和端口,向预期连接表中***结点,用于首报文识别。
(10)Jmp:修改下一条执行的函数对象编号,即运行时环境中的sp值,跳转到编号为3的函数对象,继续上述解析流程。
通过上述步骤,即可完成报文解析。
根据上述实施例的报文解析方法,通过分析应用的控制流,从控制流中提取出服务器地址和端口,通常这些服务器和端口就是接下来要进行通讯的数据连接。通过创建该应用的预期连接,就实现了首报文识别数据流应用类型。
进一步地,在上述应用示例中,控制流的资源报文都是明文,但是某些应用的资源报文有可能是加密的,或者是压缩的,因此就需要报文解析过程遇到加密或者压缩的报文位置,调用相应的报文解密或者解压缩算法进行解密或者解压缩,然后对解密和解压缩之后的报文内容继续进行报文解析。
例如,携带在报文中的BT的资源列表是通过gzip算法压缩过的。报文格式内容如下:
GET/announce?info_hash=...
Content-Encoding:
gzip...Content-Length:32......sdercsklfskdfsldfknvvy487sdkrmXq...
为有效解析经压缩的BT的资源列表,可将特征库规则解析文件编写如下:
“&(main:0)\
&(nextpkt:2,0,2)&(exit)\
&(search:payload,0,int0,″Content-Encoding:gzip″)&(jl:int0,32)\
&(search:payload,0,int0,″Content-Length:″)&(jl:int0,1)&(add:int0,int0,16)\
&(search:payload,int0,int1,″[0D 0A]″)&(rstr:payload,int0,str0,int 1)\
&(search:payload,int0,int2,″[0D 0A]″)&(jl:int2,1)&(add:int0,int0,int2)
&(unzip:″gzip″,buf0,payload,int0,int1)\
&(search:buf0,0,int0,″5:peers″)&(jl:int0,1)&(add:int0,int0,7)\
&(search:buf0,int0,int2,″:″)&(rstr:buf0,int0,str0,int2)&(str2int:int4,str0,10)\
&(rint:buf0,int0,int2,4)&(add:int0,int0,4)&(rint:buf0,int0,int3,2)\
&(expect:@in_ip,0,int2,int3,6,0x1D,@idx,0,int5)\”
其中,语句&(unzip:″gzip″,buf0,payload,int0,int1)的含义为:找到Content-Length:后调用gzip解压缩算法,对32字节的报文长度进行解压缩,解压缩后的报文内容放在buf0中;语句&(search:buf0,0,int0,″5:peers″)的含义为:buf0中报文内容是解压缩后的资源列表,可以按照常规的方式进行分析了。比如“5:peers1146:10.45.2.31”;1146就是端口,10.45.2.31就是服务器IP。
实施例五
本实施例中,提供另一种应用场景中应用上述实施例的报文解析方法的示例,即:将上述实施例的报文解析方法应用于探测识别未知数据流。
目前很多P2P下载软件的数据流都是加密的,通常的DPI识别技术无法识别,但是这些下载软件的初始协议交互过程可能不是加密的,因此可以通过报文探测,尝试按照这些软件的协议格式发出探测报文,如果这个服务器有响应就指定该服务器是某类P2P下载软件的服务器,到这个服务器的数据流都可以识别为该类P2P下载软件。
基于上述思想,可编写如下特征库规则解析文件:
“30-0-0-0 1-0-0-0&(app_user:int2,@in_ip,″5-5-0-0″)&(jge:int2,2)&(exit)\
&(session:18,″emule_detect″,@src_ip,@src_port,@dst_ip,@dst_port,6,0xF8000000,@src_intf,@dst_intf,@src_mac,@dst_mac,@ori_dir,@fid,0,0,2,0)&(exit)
session emule_detect&(idx:5-5-0-0)\
&(wstr:buf0,0,″[e3 56 00 00 00 01 10 aa bb cc dd ee ff 00 11 22 33 44 55 6677 88 99 01 00 00 00 26 85 06 00 00 00 02 01 00 01 06 00 6d 79 64 65 61 72 0301 00 11 3c 00 00 00 03 01 00 f9 ec 17 ec 17 03 01 00 fa 1e 42 13 34 03 01 00 feb4 01 00 00 03 01 00 ee 0c e9 89 14 00 00 00 00 00 00]″,91)\
&(connect:6,@s_src_ip,@s_src_port,$s_src_mac,@s_src_intf,@s_dst_ip,@s_dst_port,$s_dst_mac,@s_dst_intf)\
&(send:buf0,0,91)\
&(recv:buf0)&(get_strlen:int0,buf0)&(jg:int0,6)&(exit)&(rint:buf0,0,int1,1)&(cmp:int0,int1,0xE3)&(je:int0,10)&(exit)\
&(set_idx:@s_ori_fid,@s_app_idx,9,0)&(exit)”
其中,语句&(app_user:int2,@in_ip,″5-5-0-0″)的含义为:只有当这个内网IP在用电驴,才触发对未知数据流的探测;语句&(session:18,″emule_detect″,....)的含义为:创建一个电驴探测会话,传入会话探测需要的全局参数;语句&(wstr:buf0,0,″[e3 56...]″,91)的含义为:构造探测报文模板,因为电驴的探测报文目前还没有可变参数,因此比较简单,可以直接用wstr语法来构造固定的数据报文缓冲区。如果遇到报文模板内容中有可变参数,那么我们就可以考虑用fmt_bufout语法可变的数据报文缓冲区;语句&(connect:6,@s_src_ip...)的含义为:创建探测用的TCP连接;语句&(send:buf0,0,91)的含义为:发送探测报文;语句&(recv:buf0)的含义为:接收探测回应报文,recv语法后的一些运算语句,都是对探测回应报文的内容进行合法性检查,判断是否是真实电驴服务器发送的回应,还是可能是伪造的回应;语句&(set_idx:@s_ori_d,@s_app_idx,9,0)的含义为:确实探测到该未知数据流对应的服务器是电驴服务器,设置该未知数据流为电驴应用类型。
上述特征库规则解析文件升级到报文解析设备后,报文解析设备就会自动产生用于报文探测的基础函数链,由报文解析调度程序在判断到有未知数据流出现的时候,就会调用这个基础函数链进行报文探测。具体地,报文解析设备和服务器的交互过程如下:
步骤1,报文解析设备调用wstr语法对应的基础函数,构造用于探测的报文。
步骤2,报文解析设备调用connect语法对应的基础函数,和服务器建立tcp连接。
步骤3,报文解析设备调用send语法对应的基础函数,给服务器发送探测报文。
步骤4,报文解析设备调用recv语法对应的基础函数,等待服务端回应报文。服务端回应报文后,recc语法对应的的基础函数会接收这个报文。
步骤5,报文解析设备调用get_strlen,cmp等基础字符串语法对应的基础函数,解析从服务端接收的报文内容,确定探测的服务器是不是电驴服务器。
从上述步骤可以看出,本发明实施例的报文解析方法,将设备和服务器交互过程的每个动作都抽象为基础函数,具体的交互过程可以由用户在特征库中根据所抽象的基础函数自主定义,随意组合。
进一步地,上述过程是以比较简单的协议探测为例进行说明的,即:报文解析设备发送一个协议探测报文,服务器发送一个探测回应报文,再由报文解析设备分析探测回应报文即可。但在实际应用中,还可能存在较为复杂的协议报文交互探测,例如:
报文解析设备发送一个探测报文;服务器收到该探测报文,发送一个探测报文回应,包含了一些可变信息,要求进一步认证;报文解析设备收到该回应报文,解析里面的可变信息,重新构造下一个探测报文模板,继续发送下一个探测报文;服务器收到第二个探测报文,认可报文解析设备的类型,发送最终的回应报文;报文解析设备收到最终的回应报文,确认了服务器的应用类型。
针对上述场景,则需对特征规则解析文件进行修改,以使报文解析设备根据特征规则解析文件生成的解析程序满足如下交互过程:
步骤1,报文解析设备调用session语法创建探测会话;
步骤2,报文解析设备调用wstr语法对应的基础函数,构造用于探测的报文。
步骤2,报文解析设备调用connect语法对应的基础函数,和服务器建立tcp连接。
步骤3,报文解析设备调用send语法对应的基础函数,给服务器发送探测报文。
步骤4,报文解析设备调用recv语法对应的基础函数,等待服务器回应报文。服务器回应报文后,recc语法对应的的基础函数会接收这个报文。
步骤5,报文解析设备调用get_strlen,cmp等基础字符串语法对应的基础函数,解析从服务端接收的报文内容,提取可变信息。
步骤6,报文解析设备调用fmt_bufout语法,构造复杂探测报文模板。
步骤7,报文解析设备调用send语法对应的基础函数,给服务器发送复杂探测报文模板。
步骤8,报文解析设备调用recv语法对应的基础函数,等待服务器回应报文。服务器回应报文后,recc语法对应的基础函数会接收这个报文。
步骤9,报文解析设备调用get_strlen,cmp等基础字符串语法对应的基础函数,解析从服务端接收的报文内容,确定探测的服务器是不是电驴服务器。
因此,根据上述实施例的报文解析方法,有效实现了未知数据流的识别。
实施例六
本实施例中,提供另一种应用场景中应用上述实施例的报文解析方法的示例,即:将上述实施例的报文解析方法应用于精细化识别网站视频资源。
出口网关除了用来作为网关上网,还有可能作为缓存(cache)设备,为内网用户提供良好的上网体验,例如,将热门的WEB页面和用户经常观看的WEB在线视频缓存在出口网关的硬盘上。
因此,如果能够把每个内网用户访问的WEB在线视频的相关信息记录在设备数据库上,设备就能通过分析数据库,更加准确的知道哪些视频是用户经常访问的,把这些视频缓存到出口网关硬盘上,内网用户下次访问的时候直接把这些视频内容返回给用户,不占用出口带宽,而且让用户觉得体验非常好。
用户在连接到某个web在线视频网站观看某部电影或者电视剧的时候,该在线视频网站通常都会把该部电影或者电视剧的其他相关信息通过页面返回给用户。比如该部电影的普通清晰度或者高清晰度的资源文件在哪里,文件大小有多大。又比如该电视剧的所有集数的资源文件在哪里,文件大小有多大。
如果能够将上述信息分析出来,就可以把热门电影的高清资源缓存下来,用户看该电影的时候出口网关设备返回高清的视频内容。这样就能够给用户带来良好的体验。
但是,由于每个视频站点的视频资源信息的组织方式都是各不相同的,因此利用通常的DPI识别技术是无法完成的,而应用本发明上述实施例的报文解析方法,则能够实现有效解析。
假设用户观看优酷网站的在线视频,观察内容是“变形金刚2.rmvb”的普通清晰度资源。用户在点击WEB观看列表的时候,服务器网站将会返回相关的WEB页面,该WEB页面所包含如下信息如表9所示:
表9
Figure BDA00002400992100261
采用与上述实施例四的示例中类似的报文分析语句,可以把资源的相关信息通过str变量全部分析记录下来;并通过调用“write_sql”语法,将资源的相关信息和访问该资源的内网IP地址***到报文解析设备的数据库表中。之后,报文解析设备就可以通过定期查询该数据库表中,判断哪些资源被数量最多的内网IP地址访问,则将这些访问最多的资源的相关视频缓存到数据库中。
因此,根据上述实施例的报文解析方法,还能够有效实现精细化网站视频资源识别。
实施例七
图4为本发明另一个实施例的报文解析方法的流程图。图4所示的报文解析方法由特征库执行,该特征库例如为计算机。如图4所示,包括以下步骤:
步骤401,载入报文解析设备提供的语法定义,所述语法定义包括所述报文解析设备中定义的基础函数和数据类型;
步骤402,接收用户根据所述语法定义,编写的特征库规则解析文件;
步骤403,将所述特征库规则解析文件加载至报文解析设备,以使报文解析设备根据所述特征库规则解析文件,生成包括所述至少两个基础函数的函数链,并通过执行所述函数链,对报文进行解析,其中,报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
本实施例的报文解析方法的具体流程,与上述任一实施例中的报文解析方法相同,故此处不再赘述。
根据本实施例的报文解析方法,特征库载入报文解析设备提供的外部语法定义,并接收用户根据该语法定义编写的特征库规则解析文件,再将其加载到报文解析设备,以使报文解析设备根据特征库规则解析文件,对基础函数和操作对象进行组合,动态确定报文解析逻辑。由于将基础函数的功能与操作对象相剥离,使得当报文由于应用软件更新等原因发生变化时,通过对特征库中的规则解析文件中,基础函数和/或操作对象的组合关系/逻辑进行调整即可,修改方便、工作量小,并且无需重新启动报文解析设备。而且,由于基础函数的操作对象指向具体的内存空间,在执行报文解析时,对相应的内存空间进行操作,所以操作对象的实际值能够在具有关联性的不同报文之间传递。因此,上述报文解析方法能够对频繁变化、具有关联性的报文进行有效解析。
进一步地,在上述实施例的报文解析方法中,还包括:
若接收到更新的特征库规则解析文件,则将所述更新的特征库规则解析文件加载至所述报文解析设备。
实施例八
图5为本发明一个实施例的报文解析设备的结构示意图。如图5所示,该报文解析设备包括:
接收模块51,用于接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;
规则解析模块52,用于根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;
报文解析模块53,用于通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
上述实施例的报文解析设备执行报文解析的具体流程,与上述任一实施例的报文解析方法相同,故此处不再赘述。
根据上述实施例的报文解析设备,接收特征库规则解析文件,根据特征库规则解析文件中的基础函数的字符串标识,以及对应的操作对象字符串,对基础函数和操作对象进行组合,动态确定报文解析逻辑。由于将基础函数的功能与操作对象相剥离,使得当报文由于应用软件更新等原因发生变化时,通过对特征库中的规则解析文件中,基础函数和/或操作对象的组合关系/逻辑进行调整即可,修改方便、工作量小,并且无需重新启动报文解析设备。而且,由于基础函数的操作对象指向具体的内存空间,在执行报文解析时,对相应的内存空间进行操作,所以操作对象的实际值能够在具有关联性的不同报文之间传递。因此,上述报文解析设备能够对频繁变化、具有关联性的报文进行有效解析。
进一步地,在上述实施例的报文解析设备中,所述规则解析模块用于:
根据所述操作对象字符串,生成与各操作对象对应的基础操作对象结构,并确定所述操作对象指向的内存空间,其中所述基础操作对象结构包括数据类型和操作对象名称;
将所述基础操作对象结构,按照与所述字符串标识对应的基础函数的参数列表进行封装,生成用于将所述基础函数与所述操作对象指向的内存空间相关联的函数操作对象列表结构;
根据所述特征库规则解析文件中所述至少两个基础函数的字符串标识的次序、以及各基础函数对应的函数操作对象列表结构生成所述函数链。
进一步地,在上述实施例的报文解析设备中,所述规则解析模块还用于:
根据所述操作对象的数据类型,确定所述报文解析设备中,预先为所述数据类型分配的内存空间;
从所述预先为所述数据类型分配的内存空间中,为所述操作对象分配对应的内存空间,并建立所述操作对象名称与为所述操作对象分配对应的内存空间的映射关系。
进一步地,在上述实施例的报文解析设备中,所述基础函数包括用于对报文载荷内容进行运算的函数,和/或用于对报文载荷内容格式化输入输出的函数,和/或用于接口操作的函数,和/或用于对报文进行解压缩或解密的算法函数,和/或记录报文载荷内容的函数,和/或用于控制执行逻辑的函数。
实施例九
图6为本发明一个实施例的特征库的结构示意图。如图6所示,该特征库包括:
语法定义载入模块61,用于载入报文解析设备提供的语法定义,所述语法定义包括所述报文解析设备中定义的基础函数和数据类型;
规则接收模块62,用于接收用户根据所述语法定义,编写的特征库规则解析文件;
加载模块63,用于将所述特征库规则解析文件加载至报文解析设备,以使报文解析设备根据所述特征库规则解析文件,生成包括所述至少两个基础函数的函数链,并通过执行所述函数链,对报文进行解析,其中,报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
上述实施例的特征库例如通过计算机或任意能够提供上述各模块功能的其它硬件设备来实现。上述实施例的特征库执行报文解析的具体流程,与上述任一实施例的报文解析方法相同,故此处不再赘述。
根据上述实施例的特征库,载入报文解析设备提供的外部语法定义,并接收用户根据该语法定义编写的特征库规则解析文件,再将其加载到报文解析设备,以使报文解析设备根据特征库规则解析文件,对基础函数和操作对象进行组合,动态确定报文解析逻辑。由于将基础函数的功能与操作对象相剥离,使得当报文由于应用软件更新等原因发生变化时,通过对特征库中的规则解析文件中,基础函数和/或操作对象的组合关系/逻辑进行调整即可,修改方便、工作量小,并且无需重新启动报文解析设备。而且,由于基础函数的操作对象指向具体的内存空间,在执行报文解析时,对相应的内存空间进行操作,所以操作对象的实际值能够在具有关联性的不同报文之间传递。因此,上述报文解析特征库能够用于对频繁变化、具有关联性的报文进行有效解析。
进一步地,在上述实施例的特征库中,所述规则接收模块还用于若接收到更新的特征库规则解析文件,则触发所述加载模块执行操作;
所述加载模块还用于将所述更新的特征库规则解析文件加载至所述报文解析设备。
实施例十
本发明实施例还提供一种报文解析***,该报文解析***包括上述实施例的报文解析设备,以及上述实施例的特征库,报文解析设备与所述特征库连接。
在本实施例的报文解析***中,实施报文解析的具体流程与上述任一实施例的报文解析方法相同,故此处不再赘述。
根据上述实施例的报文解析***,报文解析设备接收特征库规则解析文件,根据特征库规则解析文件中的基础函数的字符串标识,以及对应的操作对象字符串,对基础函数和操作对象进行组合,动态确定报文解析逻辑。由于将基础函数的功能与操作对象相剥离,使得当报文由于应用软件更新等原因发生变化时,通过对特征库中的规则解析文件中,基础函数和/或操作对象的组合关系/逻辑进行调整即可,修改方便、工作量小,并且无需重新启动报文解析设备。而且,由于基础函数的操作对象指向具体的内存空间,在执行报文解析时,对相应的内存空间进行操作,所以操作对象的实际值能够在具有关联性的不同报文之间传递。因此,上述报文解析***能够对频繁变化、具有关联性的报文进行有效解析。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (13)

1.一种报文解析方法,其特征在于,包括:
报文解析设备接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;
所述报文解析设备根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;
所述报文解析设备通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
2.根据权利要求1所述的报文解析方法,其特征在于,所述报文解析设备根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链,具体包括:
所述报文解析设备根据所述操作对象字符串,生成与各操作对象对应的基础操作对象结构,并确定所述操作对象指向的内存空间,其中所述基础操作对象结构包括数据类型和操作对象名称;
将所述基础操作对象结构,按照与所述字符串标识对应的基础函数的参数列表进行封装,生成用于将所述基础函数与所述操作对象指向的内存空间相关联的函数操作对象列表结构;
根据所述特征库规则解析文件中所述至少两个基础函数的字符串标识的次序、以及各基础函数对应的函数操作对象列表结构生成所述函数链。
3.根据权利要求2所述的报文解析方法,其特征在于,所述确定所述操作对象指向的内存空间具体包括:
根据所述操作对象的数据类型,确定所述报文解析设备中,预先为所述数据类型分配的内存空间;
从所述预先为所述数据类型分配的内存空间中,为所述操作对象分配对应的内存空间,并建立所述操作对象名称与为所述操作对象分配对应的内存空间的映射关系。
4.根据权利要求1-3任一所述的报文解析方法,其特征在于,所述基础函数包括用于对报文载荷内容进行运算的函数,和/或用于对报文载荷内容格式化输入输出的函数,和/或用于接口操作的函数,和/或用于对报文进行解压缩或解密的算法函数,和/或记录报文载荷内容的函数,和/或用于控制执行逻辑的函数。
5.一种报文解析方法,其特征在于,包括:
载入报文解析设备提供的语法定义,所述语法定义包括所述报文解析设备中定义的基础函数和数据类型;
接收用户根据所述语法定义,编写的特征库规则解析文件;
将所述特征库规则解析文件加载至报文解析设备,以使报文解析设备根据所述特征库规则解析文件,生成包括所述至少两个基础函数的函数链,并通过执行所述函数链,对报文进行解析,其中,报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
6.根据权利要求6所述的报文解析方法,其特征在于,还包括:
若所述特征库接收到更新的特征库规则解析文件,则将所述更新的特征库规则解析文件加载至所述报文解析设备。
7.一种报文解析设备,其特征在于,包括:
接收模块,用于接收特征库规则解析文件,所述特征库规则解析文件包括至少两个基础函数的字符串标识,以及对应的操作对象字符串;
规则解析模块,用于根据所述至少两个基础函数的字符串标识和所述对应的操作对象字符串,生成包括所述至少两个基础函数的函数链;
报文解析模块,用于通过执行所述函数链,对报文进行解析,其中,所述报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
8.根据权利要求7所述的报文解析设备,其特征在于,所述规则解析模块用于:
根据所述操作对象字符串,生成与各操作对象对应的基础操作对象结构,并确定所述操作对象指向的内存空间,其中所述基础操作对象结构包括数据类型和操作对象名称;
将所述基础操作对象结构,按照与所述字符串标识对应的基础函数的参数列表进行封装,生成用于将所述基础函数与所述操作对象指向的内存空间相关联的函数操作对象列表结构;
根据所述特征库规则解析文件中所述至少两个基础函数的字符串标识的次序、以及各基础函数对应的函数操作对象列表结构生成所述函数链。
9.根据权利要求8所述的报文解析设备,其特征在于,所述规则解析模块还用于:
根据所述操作对象的数据类型,确定所述报文解析设备中,预先为所述数据类型分配的内存空间;
从所述预先为所述数据类型分配的内存空间中,为所述操作对象分配对应的内存空间,并建立所述操作对象名称与为所述操作对象分配对应的内存空间的映射关系。
10.根据权利要求7-9任一所述的报文解析设备,其特征在于,所述基础函数包括用于对报文载荷内容进行运算的函数,和/或用于对报文载荷内容格式化输入输出的函数,和/或用于接口操作的函数,和/或用于对报文进行解压缩或解密的算法函数,和/或记录报文载荷内容的函数,和/或用于控制执行逻辑的函数。
11.一种特征库,其特征在于,包括:
语法定义载入模块,用于载入报文解析设备提供的语法定义,所述语法定义包括所述报文解析设备中定义的基础函数和数据类型;
规则接收模块,用于接收用户根据所述语法定义,编写的特征库规则解析文件;
加载模块,用于将所述特征库规则解析文件加载至报文解析设备,以使报文解析设备根据所述特征库规则解析文件,生成包括所述至少两个基础函数的函数链,并通过执行所述函数链,对报文进行解析,其中,报文解析设备在执行所述函数链时,对所述基础函数的操作对象指向的内存空间进行操作。
12.根据权利要求11所述的特征库,其中,所述规则接收模块还用于若接收到更新的特征库规则解析文件,则触发所述加载模块执行操作;
所述加载模块还用于将所述更新的特征库规则解析文件加载至所述报文解析设备。
13.一种报文解析***,其特征在于,包括权利要求7-10任一所述的报文解析设备,以及权利要求11或12所述的特征库,所述报文解析设备与所述特征库连接。
CN201210458111.8A 2012-11-14 2012-11-14 报文解析方法、设备及*** Active CN102932474B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210458111.8A CN102932474B (zh) 2012-11-14 2012-11-14 报文解析方法、设备及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210458111.8A CN102932474B (zh) 2012-11-14 2012-11-14 报文解析方法、设备及***

Publications (2)

Publication Number Publication Date
CN102932474A true CN102932474A (zh) 2013-02-13
CN102932474B CN102932474B (zh) 2015-06-17

Family

ID=47647170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210458111.8A Active CN102932474B (zh) 2012-11-14 2012-11-14 报文解析方法、设备及***

Country Status (1)

Country Link
CN (1) CN102932474B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103886087A (zh) * 2014-03-28 2014-06-25 上海斐讯数据通信技术有限公司 Md5的计算流程以及文件校验方法
CN109145014A (zh) * 2017-06-15 2019-01-04 北京京东尚科信息技术有限公司 生成弹性搜索请求的方法和装置
CN110162413A (zh) * 2018-02-12 2019-08-23 华为技术有限公司 事件驱动方法及装置
CN110782512A (zh) * 2019-10-10 2020-02-11 成都四方伟业软件股份有限公司 一种3d模型重绘方法及***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1462135A (zh) * 2002-05-28 2003-12-17 深圳市中兴通讯股份有限公司上海第二研究所 一种基于类模板管理器的通讯报文处理设备和方法
WO2005082102A2 (en) * 2004-02-26 2005-09-09 Datapower Technology, Inc. Method and apparatus of streaming data transformation using code generator and translator
CN1956394A (zh) * 2006-11-13 2007-05-02 杭州华为三康技术有限公司 进行网络设备业务配置的方法及装置
CN101202742A (zh) * 2006-12-13 2008-06-18 中兴通讯股份有限公司 一种防止拒绝服务攻击的方法和***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1462135A (zh) * 2002-05-28 2003-12-17 深圳市中兴通讯股份有限公司上海第二研究所 一种基于类模板管理器的通讯报文处理设备和方法
WO2005082102A2 (en) * 2004-02-26 2005-09-09 Datapower Technology, Inc. Method and apparatus of streaming data transformation using code generator and translator
CN1956394A (zh) * 2006-11-13 2007-05-02 杭州华为三康技术有限公司 进行网络设备业务配置的方法及装置
CN101202742A (zh) * 2006-12-13 2008-06-18 中兴通讯股份有限公司 一种防止拒绝服务攻击的方法和***

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103886087A (zh) * 2014-03-28 2014-06-25 上海斐讯数据通信技术有限公司 Md5的计算流程以及文件校验方法
CN103886087B (zh) * 2014-03-28 2018-10-12 上海斐讯数据通信技术有限公司 Md5的计算流程以及文件校验方法
CN109145014A (zh) * 2017-06-15 2019-01-04 北京京东尚科信息技术有限公司 生成弹性搜索请求的方法和装置
CN110162413A (zh) * 2018-02-12 2019-08-23 华为技术有限公司 事件驱动方法及装置
CN110782512A (zh) * 2019-10-10 2020-02-11 成都四方伟业软件股份有限公司 一种3d模型重绘方法及***

Also Published As

Publication number Publication date
CN102932474B (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN101454764B (zh) 独立ActionScript分析工具和技术
US9536261B2 (en) Resolving conflicts within saved state data
KR102220127B1 (ko) 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치
Caballero et al. Automatic protocol reverse-engineering: Message format extraction and field semantics inference
CN107864065B (zh) 无埋点数据采集方法、***及计算机可读存储介质
US20160050128A1 (en) System and Method for Facilitating Communication with Network-Enabled Devices
CN104506484A (zh) 一种私有协议分析与识别方法
CA2912852A1 (en) Method and apparatus for code virtualization and remote process call generation
CN109067732A (zh) 物联网设备及数据接入***、方法及计算机可读存储介质
CN111708927B (zh) 信息推荐方法、装置及电子设备
CN102932474A (zh) 报文解析方法、设备及***
CN110413329A (zh) Iot设备远程调试方法、装置及***
CN112445700A (zh) 测试方法和装置
CN104010045B (zh) 基于云平台的移动节点执行任务的方法
CN114328217A (zh) 应用的测试方法、装置、设备、介质及计算机程序产品
CN112100689B (zh) 一种可信数据处理方法、装置及设备
Haenisch A case study on using functional programming for internet of things applications
CN111427710B (zh) 应用程序中组件的通信方法、装置、设备及存储介质
CN102055623A (zh) 实现嵌入式浏览器自动测试的方法及***
CN115203674A (zh) 一种应用程序自动登录方法、***、装置及存储介质
US11556649B2 (en) Methods and apparatus to facilitate malware detection using compressed data
JP2023517614A (ja) コード構築方法、装置、デバイスおよび記憶媒体
Palmese et al. Designing a Forensic-Ready Wi-Fi Access Point for the Internet of Things
CN105391552A (zh) 一种权限管理方法、装置,及***
CN105812433B (zh) 一种云适配处理方法、装置、终端及云服务器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant