一种通用的协议解析框架的实现方法及装置
技术领域
本发明涉及网络技术领域,尤其涉及一种通用的协议解析框架实现方法及装置。
背景技术
本发明对背景技术的描述属于与本发明的相关技术,仅仅是用于说明和便于理解本发明的发明内容,不应理解为申请人明确认为或推定申请人认为是本发明在首次提出申请的申请日的现有技术。
在网络流量分析中,通常使用tcpdump(UNIX)和wireshark(Windows)进行流量的采集和分析。对于tcpdump来说,它可以实现多种方式的抓包、过滤、保存等等,但其采集的数据是网络原始流量而无法对流量包进行分析。而对于wireshark,其功能强大,既能抓包又能分析。但wireshark也存在一些如下缺点:
1.对于在服务器上(UNIX/Linux)部署来说通常会依赖其他第三方库,该特性会给前期部署工作带来极大烦恼,尤其是对于对安全性要求甚高的局域网内部。
2.部分协议/报文显示结果不符合OSI规范,可读性差。
3.一旦某协议端口号改变,则wireshark本身无法识别协议。
4.对于多个端口号/多链路的协议无能为力。
发明内容
针对以上问题,本发明提供一种通用的协议解析框架实现方法及装置,其将协议名、端口号、解析函数进行关联并注册到hsah表中,一旦报文经过网络层和传输层解析得到端口号和/或协议特征,根据端口号和/或协议特征找到对应的解析函数即可完成分析,它具有跨平台、协议支持广泛、报文分析简洁和部署方便等特点。
本发明提供一种通用的协议解析框架实现方法,其特征在于,包括以下步骤:
步骤S1,建立协议名、端口号、解析函数之间的关联关系,并将所述关联关系存储到全局hash表中,所述解析函数为传输层之上的协议解析函数;
步骤S2,获取需要分析的协议数据报文,所述需要分析的协议数据报文包括网络原始流量和/或存储在文件中的流量包;
步骤S3,对所述需要分析的协议数据报文进行分解,从中提取出一个或多个端口号;
步骤S4,根据提取出的所述一个或多个端口号在全局hash表中进行查找,查找在所述关联关系中所述一个或多个端口号关联的解析函数,如果查找到所述一个或多个端口号关联的解析函数,则执行步骤S5;
步骤S5,利用查找到的所述解析函数对所述需要分析的协议数据报文进行解析,得到解析结果,判断解析是否正常,如果正常则将解析结果以json格式输出;否则输出异常结果,所述异常结果包括所述需要分析的协议数据报文和/或解析失败提示。
较优的,在所述步骤S1之前还包括步骤S0,
加载配置文件,所述配置文件用于指定与协议名关联的一个或多个端口号,所述一个或多个端口号不同于其他已存在的协议名关联的端口号。
进一步,所述配置文件还用于指定需要监控的网卡,所述网卡包括物理网卡和/或本地回环。
进一步,所述配置文件还用于指定触发方式,所述触发方式包括水平触发和边沿触发,所述水平触发是当指读取已经存在的离线pcap格式文件或包含该种格式文件的目录时执行;所述边沿触发是指当读取新产生的pcap文件时执行,对已存在的pcap文件不予理会。
较优的,所述步骤S2中的所述网络原始流量来源于指定的需要监控的网卡的流量;所述存储在文件中的流量包来源于指定的需要读取的文件或目录。
较优的,如果步骤S4中,未查找到所述端口号关联的解析函数,则执行以下步骤S41:
提取所述需要分析的协议数据报文的特征,如果根据所述特征能够匹配到解析函数,则执行步骤S5,否则输出所述需要分析的协议数据报文。
较优的,如果步骤S41中如果根据所述特征能够匹配到解析函数,则同时建立协议名、端口号以及所述匹配到的解析函数之间的关联关系,更新所述全局hash表并存储。
本发明还提供一种通用的协议解析框架实现装置,其特征在于,包括关联关系建立模块、获取模块、提取模块、查找模块、解析模块、输出模块:
所述关联关系建立模块,用于建立协议名、端口号、解析函数之间的关联关系,并将所述关联关系存储到全局hash表中,所述解析函数为传输层之上的协议解析函数;
所述获取模块,用于获取需要分析的协议数据报文,所述需要分析的协议数据报文包括网络原始流量和/或存储在文件中的流量包;
所述提取模块,用于对所述需要分析的协议数据报文进行分解,从中提取出一个或多个端口号;
所述查找模块,用于根据提取出的所述一个或多个端口号在全局hash表中进行查找,查找在所述关联关系中所述一个或多个端口号关联的解析函数;
所述解析模块,利用查找到的所述解析函数对所述需要分析的协议数据报文进行解析,得到解析结果;
所述输出模块,判断所述解析模块的所述解析结果是否正常,如果正常则将所述解析结果以json格式输出;否则输出异常结果,所述异常结果包括所述需要分析的协议数据报文和解析失败提示。
较优的,还包括加载模块,用于加载配置文件;
所述配置文件用于指定与协议名关联的一个或多个端口号,所述一个或多个端口号不同于其他已存在的协议名关联的端口号;
和/或,所述配置文件还用于指定需要监控的网卡,所述网卡包括物理网卡和/或本地回环;
和/或,所述配置文件还用于指定触发方式,所述触发方式包括水平触发和边沿触发,所述水平触发是当指读取已经存在的离线pcap格式文件或包含该种格式文件的目录时执行;所述边沿触发是指当读取新产生的pcap文件时执行,对已存在的pcap文件不予理会。
较优的,所述获取模块中的所述网络原始流量来源于指定的需要监控的网卡的流量;所述存储在文件中的流量包来源于指定的需要读取的文件或目录。
较优的,如果所述查找模块未查找到所述端口号关联的解析函数,则交由报文特征匹配识别模块处理,所述报文特征匹配识别模块用于提取所述需要分析的协议数据报文的特征,并根据所述特征查找匹配的解析函数。
较优的,如果所述报文特征匹配识别模块能够查找到匹配的解析函数,则同时建立协议名、端口号以及所述匹配到的解析函数之间的关联关系,更新所述全局hash表并存储。
本发明还提供了一种计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述的方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述方法的步骤。
本发明产生的有益效果是:解决了现有协议解析工具无法对流量包进行分析、依赖第三库导致前期部署工作繁琐、协议解析结果不符合OS I规范可读性差、无法自适应端口的改变、对于多个端口的协议无法解析等问题,本发明提供了一种通用的协议解析框架实现方法及装置,能够支持端口可配置,可以给协议指定任意端口号;支持多端口、在端口号无法得到对应协议的时候能够根据协议特征匹配协议、具备学习能力,一旦通过协议特征匹配到协议,会将该报文中的端口号和协议名、解析函数关联保存到全局hash表中,之后再遇到该类报文则直接通过端口号匹配协议;支持水平触发和边沿触发;输出为json格式文件,每一条报文输出为一行,有利于和f i l ebeat等工具对接,提高了解析结果的可读性。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍:
图1示出了本发明第一实施例的一种通用的协议解析框架实现方法的流程图;
图2示出了本发明的第一实施例的一种通用的协议解析框架实现装置的示意图。
具体实施方式
为了使本发明的目的、技术方案以及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
在下述介绍中,术语“第一”、“第二”仅用于描述的目的,而不能理解为暗示其相对重要性。
下述介绍提供了本发明的多个实施例,不同实施例之间可以替换或者合并组合,因此本发明也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本发明也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
图1示出了本发明第一实施例的一种通用的协议解析框架实现方法的流程图。
如图1所示,本发明的一种通用的协议解析框架实现方法,包括以下步骤:
步骤S1,建立协议名、端口号、解析函数之间的关联关系,并将所述关联关系存储到全局hash表中,所述解析函数为传输层之上的协议解析函数;
步骤S2,获取需要分析的协议数据报文,所述需要分析的协议数据报文包括网络原始流量和/或存储在文件中的流量包;
步骤S3,对所述需要分析的协议数据报文进行分解,从中提取出一个或多个端口号;
步骤S4,根据提取出的所述一个或多个端口号在全局hash表中进行查找,查找在所述关联关系中所述一个或多个端口号关联的解析函数,如果查找到所述一个或多个端口号关联的解析函数,则执行步骤S5;
步骤S5,利用查找到的所述解析函数对所述需要分析的协议数据报文进行解析,得到解析结果,判断解析是否正常,如果正常则将解析结果以json格式输出;否则输出异常结果,所述异常结果包括所述需要分析的协议数据报文和/或解析失败提示。
较优的,在所述步骤S1之前还包括步骤S0,
加载配置文件,所述配置文件用于指定与协议名关联的一个或多个端口号,所述一个或多个端口号不同于其他已存在的协议名关联的端口号。
进一步,所述配置文件还用于指定需要监控的网卡,所述网卡包括物理网卡和/或本地回环。
进一步,所述配置文件还用于指定触发方式,所述触发方式包括水平触发和边沿触发,所述水平触发是当指读取已经存在的离线pcap格式文件或包含该种格式文件的目录时执行;所述边沿触发是指当读取新产生的pcap文件时执行,对已存在的pcap文件不予理会。
较优的,所述步骤S2中的所述网络原始流量来源于指定的需要监控的网卡的流量;所述存储在文件中的流量包来源于指定的需要读取的文件或目录。
较优的,如果步骤S4中,未查找到所述端口号关联的解析函数,则执行以下步骤S41:
提取所述需要分析的协议数据报文的特征,如果根据所述特征能够匹配到解析函数,则执行步骤S5,否则输出所述需要分析的协议数据报文。
较优的,如果步骤S41中如果根据所述特征能够匹配到解析函数,则同时建立协议名、端口号以及所述匹配到的解析函数之间的关联关系,更新所述全局hash表并存储。
图2示出了本发明的第一实施例的一种通用的协议解析框架实现装置的示意图。
一种通用的协议解析框架实现装置,包括关联关系建立模块、获取模块、提取模块、查找模块、解析模块、输出模块:
所述关联关系建立模块,用于建立协议名、端口号、解析函数之间的关联关系,并将所述关联关系存储到全局hash表中,所述解析函数为传输层之上的协议解析函数;
所述获取模块,用于获取需要分析的协议数据报文,所述需要分析的协议数据报文包括网络原始流量和/或存储在文件中的流量包;
所述提取模块,用于对所述需要分析的协议数据报文进行分解,从中提取出一个或多个端口号;
所述查找模块,用于根据提取出的所述一个或多个端口号在全局hash表中进行查找,查找在所述关联关系中所述一个或多个端口号关联的解析函数;
所述解析模块,利用查找到的所述解析函数对所述需要分析的协议数据报文进行解析,得到解析结果;
所述输出模块,判断所述解析模块的所述解析结果是否正常,如果正常则将所述解析结果以json格式输出;否则输出异常结果,所述异常结果包括所述需要分析的协议数据报文和解析失败提示。
较优的,还包括加载模块,用于加载配置文件;
所述配置文件用于指定与协议名关联的一个或多个端口号,所述一个或多个端口号不同于其他已存在的协议名关联的端口号;
和/或,所述配置文件还用于指定需要监控的网卡,所述网卡包括物理网卡和/或本地回环;
和/或,所述配置文件还用于指定触发方式,所述触发方式包括水平触发和边沿触发,所述水平触发是当指读取已经存在的离线pcap格式文件或包含该种格式文件的目录时执行;所述边沿触发是指当读取新产生的pcap文件时执行,对已存在的pcap文件不予理会。
较优的,所述获取模块中的所述网络原始流量来源于指定的需要监控的网卡的流量;所述存储在文件中的流量包来源于指定的需要读取的文件或目录。
较优的,如果所述查找模块未查找到所述端口号关联的解析函数,则交由报文特征匹配识别模块处理,所述报文特征匹配识别模块用于提取所述需要分析的协议数据报文的特征,并根据所述特征查找匹配的解析函数。
较优的,如果所述报文特征匹配识别模块能够查找到匹配的解析函数,则同时建立协议名、端口号以及所述匹配到的解析函数之间的关联关系,更新所述全局hash表并存储。
本说明书中的“模块”和“单元”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是FPGA(Field-Programmable GateArray,现场可编程门阵列)、IC(Integrated Circuit,集成电路)等。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述用于授权管理控制请求的方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行程序时实现用于授权管理控制请求的方法的步骤。在本发明实施例中,处理器为计算机系统的控制中心,可以是实体机的处理器,也可以是虚拟机的处理器。
以上介绍仅为本发明的优选实施例而已,并非对本发明作任何实质和形式上的限制。虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,对于本领域的技术人员来说,在不脱离本发明技术方案范围内,可以利用上述揭示的技术内容作出各种更改和变化的等效实施例。但凡未脱离本发明的精神和原则,依据本发明的技术实质对以上实施例所作的任何简单修改、等同替换、改进等,均应包含在本发明的保护范围之内。