一种快速打开网络数据包文件的方法与流程

文档序号:14424633阅读:838来源:国知局

本发明涉及数据处理领域,尤其是涉及一种快速打开网络数据包文件的方法。



背景技术:

在网络中传递信息,如果单条信息比较长将被划分为多个数据块,每个数据块分别传递,而这些块被称为网络数据包(packet)。网络数据包文件,即存放网络数据包的文件,通常由抓包工具生成。

网络数据包文件格式有多种,常见的有libpcap、pcapng、rapkt、5vw、sniffer等。想要正确打开并读取一个数据包文件,必须知道其文件类型。

在批量处理大量数据包文件时,由于文件来自不同的采集点,由不同的厂商设备生成,在打开文件前并不知道文件的类型。希望通过文件后缀名判断文件类型是不可取的:首先,有些格式的后缀名是一样的,例如后缀名为cap、pcap的文件不一定是libpcap格式;其次,一种文件格式可能有多个内部版本;再次,有些文件的后缀名是用户自定义的。因此,要得到正确格式,必须读取文件并分析。

传统的做法,实现不同类型的文件模块,启动时将各文件模块加载到队列中,每次打开文件,按顺序由各模块分别读取文件头匹配文件类型,如果匹配失败则交由下一个文件模块处理,直到匹配成功。

这将导致:由于数据包文件格式很多,且某些文件类型的模块排在队列中靠后的位置,每次打开这些格式的文件将产生数十次文件打开、读取、关闭操作,消耗了大量iops。特别是在分析数万个小文件的时候,这些开销甚至比数据包内容分析更耗时,这些消耗毫无意义且极不合理。



技术实现要素:

本发明的目的在于:针对现有技术存在的问题,提供一种快速打开网络数据包文件的方法,实现每个文件只用一次i/o,就能确定文件类型,并快速并正确地打开文件。

本发明的发明目的通过以下技术方案来实现:

一种快速打开网络数据包文件的方法,该方法包括:

(1)使用各网络数据包文件类型的魔数建立全局的字典树,并建立魔数与文件模块的映射关系;

(2)读取待处理网络数据包文件的文件头的若干字节,然后对若干字节进行字符串匹配,若匹配成功,则进行步骤(3);

(3)若待处理网络数据包文件的魔数长度适中,则匹配报文头,若匹配成功,则调用对应的文件模块处理文件,若待处理网络数据包文件的魔数长度过短,则匹配文件后缀名,若匹配成功,则调用对应的文件模块处理文件。

作为进一步的技术方案,若干字节具体为12个字节。

作为进一步的技术方案,字符串匹配的方法包括:将一个个字符与字典树进行匹配。

作为进一步的技术方案,魔数长度不大于1,则视为魔数长度过短,魔数长度大于1且小于或等于12,则视为魔数长度适中。

作为进一步的技术方案,匹配报文头的方法包括:根据字符串匹配判断出的文件类型所对应的报文头结构,读取待处理网络数据包文件所对应长度的字节数,若报文头里的捕获长度和真实长度分别都小于65536,且捕获长度不大于真实长度,则断定匹配成功。

作为进一步的技术方案,匹配文件后缀名的方法包括:将对应的文件后缀名,依次进行普通的字符串匹配。

与现有技术相比,本发明具有以下优点:

1、打开数据包文件的效率提高了数倍;

2、批量打开各种类型的数据包文件,正确性更好。

附图说明

图1为字典树示例图;

图2为本发明的流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

实施例1

本发明提供一种快速打开网络数据包文件的方法,如图2所示,该方法包括:

(1)使用各网络数据包文件类型的魔数建立全局的字典树,并建立魔数与文件模块的映射关系。

网络数据包文件格式有多种,常见的有libpcap、pcapng、rapkt、5vw、sniffer等。

魔数(magicnumber):很多文件类型,文件头的前几个字节的内容是固定不变的,用来标示文件类型,这些固定的内容被称为魔数(magicnumber)。

字典树:字典树是一种用于存储和快速查询字符串的树形数据结构,如图1所示。

(2)读取待处理网络数据包文件的文件头的若干字节,然后对若干字节进行字符串匹配,若匹配成功,则进行步骤(3)。

由于各文件格式的魔数长度不尽相同,比较长的为4字节,也有10余字节的。由于这个长度总是小于磁盘条带宽度,读取4b与10b的开销是相同的,因此选择最大的魔数长度为文件首次读取长度。因为常见的几种文件类型里,最长长度为12字节,本实施例选取12为每次取串的长度。

(3)若待处理网络数据包文件的魔数长度适中,则匹配报文头,若匹配成功,则调用对应的文件模块处理文件,若待处理网络数据包文件的魔数长度过短,则匹配文件后缀名,若匹配成功,则调用对应的文件模块处理文件。

通常通过字典树就能够确定待处理网络数据包文件的文件格式,但有例外的情况,如某些文件类型由于厂商的设计不周,魔数长度太短,例如长度为1字节,可能导致格式误判,或根本没有魔数,这时需要根据文件后缀名进行判断,文件模块内部将会对文件头进一步的验证。而且这些文件格式不多,后缀名也不常见,因此,使用后缀名判断也有较准确的效果。

本实施例中,魔数长度不大于1,则视为魔数长度过短,魔数长度大于1且小于或等于12,则视为魔数长度适中。

实施例2

本发明提供一种快速打开网络数据包文件的方法,如图2所示,该方法包括:

(1)使用各网络数据包文件类型的魔数建立全局的字典树,并建立魔数与文件模块的映射关系。

网络数据包文件格式有多种,常见的有libpcap、pcapng、rapkt、5vw、sniffer等。

魔数(magicnumber):很多文件类型,文件头的前几个字节的内容是固定不变的,用来标示文件类型,这些固定的内容被称为魔数(magicnumber)。

字典树:字典树是一种用于存储和快速查询字符串的树形数据结构,如图1所示。

(2)读取待处理网络数据包文件的文件头的若干字节,然后对若干字节进行字符串匹配,若匹配成功,则进行步骤(3)。

由于各文件格式的魔数长度不尽相同,比较长的为4字节,也有10余字节的。由于这个长度总是小于磁盘条带宽度,读取4b与10b的开销是相同的,因此选择最大的魔数长度为文件首次读取长度。因为常见的几种文件类型里,最长长度为12字节,本实施例选取12为每次取串的长度。

本实施例的字符串匹配的方法采用将一个个字符与字典树进行匹配。

(3)若待处理网络数据包文件的魔数长度适中,则匹配报文头,若匹配成功,则调用对应的文件模块处理文件,若待处理网络数据包文件的魔数长度过短,则匹配文件后缀名,若匹配成功,则调用对应的文件模块处理文件。

通常通过字典树就能够确定待处理网络数据包文件的文件格式,但有例外的情况,如某些文件类型由于厂商的设计不周,魔数长度太短,例如长度为1字节,可能导致格式误判,或根本没有魔数,这时需要根据文件后缀名进行判断,文件模块内部将会对文件头进一步的验证。而且这些文件格式不多,后缀名也不常见,因此,使用后缀名判断也有较准确的效果。

本实施例中,魔数长度不大于1,则视为魔数长度过短,魔数长度大于1且小于或等于12,则视为魔数长度适中。

实施例3

本发明提供一种快速打开网络数据包文件的方法,如图2所示,该方法包括:

(1)使用各网络数据包文件类型的魔数建立全局的字典树,并建立魔数与文件模块的映射关系。

网络数据包文件格式有多种,常见的有libpcap、pcapng、rapkt、5vw、sniffer等。

魔数(magicnumber):很多文件类型,文件头的前几个字节的内容是固定不变的,用来标示文件类型,这些固定的内容被称为魔数(magicnumber)。

字典树:字典树是一种用于存储和快速查询字符串的树形数据结构,如图1所示。

(2)读取待处理网络数据包文件的文件头的若干字节,然后对若干字节进行字符串匹配,若匹配成功,则进行步骤(3)。

由于各文件格式的魔数长度不尽相同,比较长的为4字节,也有10余字节的。由于这个长度总是小于磁盘条带宽度,读取4b与10b的开销是相同的,因此选择最大的魔数长度为文件首次读取长度。因为常见的几种文件类型里,最长长度为12字节,本实施例选取12为每次取串的长度。

本实施例的字符串匹配的方法采用将一个个字符与字典树进行匹配。

(3)若待处理网络数据包文件的魔数长度适中,则匹配报文头,若匹配成功,则调用对应的文件模块处理文件,若待处理网络数据包文件的魔数长度过短,则匹配文件后缀名,若匹配成功,则调用对应的文件模块处理文件。

通常通过字典树就能够确定待处理网络数据包文件的文件格式,但有例外的情况,如某些文件类型由于厂商的设计不周,魔数长度太短,例如长度为1字节,可能导致格式误判,或根本没有魔数,这时需要根据文件后缀名进行判断,文件模块内部将会对文件头进一步的验证。而且这些文件格式不多,后缀名也不常见,因此,使用后缀名判断也有较准确的效果。

本实施例中,魔数长度不大于1,则视为魔数长度过短,魔数长度大于1且小于或等于12,则视为魔数长度适中。

本实施例中,匹配报文头的方法采用:根据字符串匹配判断出的文件类型所对应的报文头结构,读取待处理网络数据包文件所对应长度的字节数,若报文头里的捕获长度和真实长度分别都小于65536,且捕获长度不大于真实长度,则断定匹配成功。

实施例4

本发明提供一种快速打开网络数据包文件的方法,如图2所示,该方法包括:

(1)使用各网络数据包文件类型的魔数建立全局的字典树,并建立魔数与文件模块的映射关系。

网络数据包文件格式有多种,常见的有libpcap、pcapng、rapkt、5vw、sniffer等。

魔数(magicnumber):很多文件类型,文件头的前几个字节的内容是固定不变的,用来标示文件类型,这些固定的内容被称为魔数(magicnumber)。

字典树:字典树是一种用于存储和快速查询字符串的树形数据结构,如图1所示。

(2)读取待处理网络数据包文件的文件头的若干字节,然后对若干字节进行字符串匹配,若匹配成功,则进行步骤(3)。

由于各文件格式的魔数长度不尽相同,比较长的为4字节,也有10余字节的。由于这个长度总是小于磁盘条带宽度,读取4b与10b的开销是相同的,因此选择最大的魔数长度为文件首次读取长度。因为常见的几种文件类型里,最长长度为12字节,本实施例选取12为每次取串的长度。

本实施例的字符串匹配的方法采用将一个个字符与字典树进行匹配。

(3)若待处理网络数据包文件的魔数长度适中,则匹配报文头,若匹配成功,则调用对应的文件模块处理文件,若待处理网络数据包文件的魔数长度过短,则匹配文件后缀名,若匹配成功,则调用对应的文件模块处理文件。

通常通过字典树就能够确定待处理网络数据包文件的文件格式,但有例外的情况,如某些文件类型由于厂商的设计不周,魔数长度太短,例如长度为1字节,可能导致格式误判,或根本没有魔数,这时需要根据文件后缀名进行判断,文件模块内部将会对文件头进一步的验证。而且这些文件格式不多,后缀名也不常见,因此,使用后缀名判断也有较准确的效果。

本实施例中,魔数长度不大于1,则视为魔数长度过短,魔数长度大于1且小于或等于12,则视为魔数长度适中。

本实施例中,匹配报文头的方法采用:根据字符串匹配判断出的文件类型所对应的报文头结构,读取待处理网络数据包文件所对应长度的字节数,若报文头里的捕获长度和真实长度分别都小于65536,且捕获长度不大于真实长度,则断定匹配成功。

本实施例中,匹配文件后缀名的方法采用:将对应的文件后缀名,依次进行普通的字符串匹配。对于1字节魔数,该字节对应一些文件后缀名,依次进行普通的字符串匹配(如strcmp);对于0字节,指的是其他魔数都匹配失败,假定0字节,而0字节同样对应一些文件后缀名,依次匹配即可。

本发明适用的场合包括:需要分析大量、多类型的数据包文件;数据包文件分析的效率要求较高;特别适用于网络安全行业,需要对大量历史数据包文件进行大数据分析、数据挖掘、数据取证等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,应当指出的是,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1