CN113132416B - 一种数据包检测方法及装置 - Google Patents
一种数据包检测方法及装置 Download PDFInfo
- Publication number
- CN113132416B CN113132416B CN202110619498.XA CN202110619498A CN113132416B CN 113132416 B CN113132416 B CN 113132416B CN 202110619498 A CN202110619498 A CN 202110619498A CN 113132416 B CN113132416 B CN 113132416B
- Authority
- CN
- China
- Prior art keywords
- byte
- data
- value
- determining
- payload
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开实施例提供了一种数据包检测方法及装置,应用于网络技术领域,其中,上述方法包括:获得数据包的包头中记录的编码方式。确定编码方式对应的解码方式。采用解码方式,对数据包的有效载荷进行解码,得到解码数据。提取解码数据的数据特征,检测数据特征与预设的攻击特征是否匹配,得到检测结果。应用本公开实施例提供的方案可以对接收到的数据包进行数据包检测,确定所接收到的数据包是否为攻击数据包,从而提高网络设备的安全性。
Description
技术领域
本公开涉及网络技术领域,特别是涉及一种数据包检测方法及装置。
背景技术
网络中的恶意设备可以向网络中的其他网络设备发送攻击数据包,从而对其他网络设备进行网络攻击。受到网络攻击的网络设备可能会面临存储数据泄露、系统崩溃等各类问题,导致受到网络攻击的网络设备的安全性降低。
为了提高网络设备的安全性,网络设备需要对接收到的数据包进行数据包检测,以确定所接收到的数据包是否为攻击数据包。
公开内容
本公开实施例的目的在于提供一种数据包检测方法及装置,以提高网络设备的安全性。具体技术方案如下:
第一方面,本公开实施例提供了一种数据包检测方法,所述方法包括:
获得数据包的编码方式;
确定所述编码方式对应的解码方式;
采用所述解码方式,对所述数据包的有效载荷进行解码,得到解码数据;
提取所述解码数据的数据特征,检测所述数据特征与预设的攻击特征是否匹配,得到检测结果。
第二方面,本公开实施例提供了一种数据包检测装置,所述装置包括:
编码方式获得模块,用于获得数据包的编码方式;
解码方式确定模块,用于确定所述编码方式对应的解码方式;
载荷解码模块,用于采用所述解码方式,对所述数据包的有效载荷进行解码,得到解码数据;
特征检测模块,用于提取所述解码数据的数据特征,检测所述数据特征与预设的攻击特征是否匹配,得到检测结果。
第三方面,本公开实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,本公开实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
第五方面,本公开实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法步骤。
本公开实施例有益效果:
应用本公开实施例提供的方案,网络设备获得所接收的数据包的编码方式,确定编码方式对应的解码方式。采用上述解码方式,先对数据包的有效载荷进行解码,得到解码数据,再提取上述解码数据的数据特征,检测数据特征与预设的攻击特征是否匹配,得到检测结果。
由以上可见,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的第一种数据包检测方法的流程示意图;
图2A为本公开实施例提供的第二种数据包检测方法的流程示意图;
图2B为本公开实施例提供的第三种数据包检测方法的流程示意图;
图3为本公开实施例提供的第四种数据包检测方法的流程示意图;
图4为本公开实施例提供的第五种数据包检测方法的流程示意图;
图5为本公开实施例提供的第一种数据包检测装置的结构示意图;
图6A为本公开实施例提供的第二种数据包检测装置的结构示意图;
图6B为本公开实施例提供的第三种数据包检测装置的结构示意图;
图7为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本公开保护的范围。
由于现有技术中,网络设备可能受到恶意设备发送的攻击数据包的影响,造成网络设备的安全性较低,为了提高网络设备的安全性,网络设备需要对所接收到的数据包进行数据包检测。为此,本公开实施例提供了一种数据包检测方法及装置。
本公开的一个实施例中,提供了一种数据包检测方法,上述方法包括:
获得数据包的编码方式;
确定上述编码方式对应的解码方式;
采用上述解码方式,对上述数据包的有效载荷进行解码,得到解码数据;
提取上述解码数据的数据特征,检测上述数据特征与预设的攻击特征是否匹配,得到检测结果。
由以上可见,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
参见图1,为本公开实施例提供的第一种数据包检测方法的流程示意图,上述方法包括以下步骤S101-S104。
其中,本公开实施例可以应用于网络中的任一网络设备,例如,上述网络设备可以为用户终端、路由器、交换机等。
S101:获得数据包的编码方式。
其中,上述数据包可以为上述网络设备接收到的、网络中除上述网络设备之外的其他网络设备发送的数据包。
另外,上述编码方式为:对上述有效载荷进行编码所使用的方式,上述编码方式可以为任意编码方式,本公开实施例对此不进行限定。
上述数据包中包含包头与有效载荷,上述有效载荷中记录有上述数据包传输的数据。上述包头中可以记录有表示上述编码方式的编码标识。则可以通过包头中记录的编码标识确定数据包的编码方式。
例如,在上述数据包是基于HTTP(Hypertext Transfer Protocol,超文本传输协议)生成的情况下,可以查找包头内包含的Content-Type字段中的charset子字段,上述charset子字段的取值表示的编码方式即为上述包头中记录的编码方式。
本公开的一个实施例中,若确定上述数据包中的有效载荷未经过编码,则可以直接提取上述有效载荷的数据特征,检测所提取的数据特征与预设的攻击特征是否匹配,若匹配则认为上述数据包为攻击数据包,若不匹配则认为上述数据包不是攻击数据包,得到检测结果。
若确定得到上述数据包的编码方式,则继续执行步骤S102。
S102:确定上述编码方式对应的解码方式。
具体的,上述解码方式为:能够对使用上述编码方式进行编码得到的编码结果进行解码的方式,使用上述编码方式对数据进行编码的过程与使用上述阶码方式对数据进行解码的过程为互逆的过程。
可以根据预设的编码方式与解码方式之间的对应关系,确定上述编码方式对应的解码方式。
S103:采用上述解码方式,对数据包的有效载荷进行解码,得到解码数据。
具体的,可以将所得到的解码数据缓存于第二缓存中,若上述第二缓存中缓存的解码数据的数据量达到上述第二缓存所能存储的最大数据量,则可以执行以下步骤S104,依据第二缓存中缓存的解码数据进行数据包检测。
进行数据包检测后上述第二缓存的缓存空间被释放,上述网络设备可以继续对所接收到的、上述数据包之外的其他数据包进行解码,并将得到的解码数据缓存于第二缓存中。
由此可见,若第二缓存的存储空间被解码数据占满,上述网络设备可以暂停数据解码的过程,执行步骤S104,表示对数据包的有效载荷进行解码的过程支持重入。
另外,各个数据包可以以数据流的形式被输入上述网络设备,上述网络设备可以依据接收到各个数据包的时间顺序依次对各个数据包的有效载荷进行解码。不同数据包的编码方式可能相同,也可能不同。
其中,上述第二缓存的最大数据量可以为固定数据量,如100M、150M等。也可以根据上述网络设备的内存大小设置上述第二缓存的最大数据量,例如,上述最大数据量可以是将上述内存大小乘以预设比例得到的,如上述预设比例可以为5%、10%等。
此外,上述网络设备也可以在每一次得到数据包的解码数据时,直接执行以下步骤S104。
本公开的一个实施例中,可以通过步骤S103A-S103C实现上述步骤S103,在此暂不详述。
S104:提取上述解码数据的数据特征,检测上述数据特征与预设的攻击特征是否匹配,得到检测结果。
其中,上述预设的攻击特征可以为攻击数据包的有效载荷的数据特征,上述攻击数据包可以为上述网络设备历史接收到的恶意设备发送的数据包,也可以为预先收集的对网络设备的安全性造成影响的数据包。
具体的,可以通过现有技术提取上述解码数据的数据特征,本公开实施例对此不再赘述。
本公开的一个实施例中,可以计算上述数据特征与攻击特征之间的相似度,若上述相似度大于预设相似度,则确定上述数据特征与攻击特征相匹配,将上述数据包确定为攻击数据包。
具体的,也可以通过现有技术中的DPI(Deep Packet Inspection,深度包检测技术)方式实现上述步骤S104。
由以上可见,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
参见图2A,为本公开实施例提供的第二种数据包检测方法的流程示意图,与前述图1所示的实施例相比,上述步骤S103可以通过以下步骤S103A-S103B实现。
S103A:确定第一缓存中缓存的第一字节与上述有效载荷中包含的编码单元。
其中,上述第一字节为:所获得的其他数据包中包含的、未被解码的字符,一个编码单元为:对一个字符进行编码得到的编码结果组成的单元,上述编码结果由字节组成。上述字符可以为数字、字母、汉字、符号等。
具体的,对字符进行编码之后,同一字符的编码单元中包含的字节彼此相邻,在使用数据包传输上述编码单元时,同一编码单元中的字节可能分别由不同的数据包传输,因此仅通过一个数据包的有效载荷中包含的字节难以得到完整的编码单元。
上述第一缓存中缓存的第一字节可以为:对上一数据包的有效载荷进行解码的过程中,未被确定为字符的编码单元的字节,说明上一数据包的有效载荷中包含的编码单元不完整,可以认为该字符的编码单元存在跨包的情况。该字符的编码单元中的部分字节位于上一数据包的有效载荷中,另一部分字节可能位于上述数据包的有效载荷中。因此可以根据第一缓存中缓存的第一字节和上述有效载荷包含的字节,共同确定字符的编码单元。
本公开的一个实施例中,可以先确定上述第一字节对应的字符的编码单元中包含的字节数,计算所确定的字节数与第一字节的数量的差值,将上述有效载荷中前上述差值个字节确定为与上述第一字节属于同一编码单元的字节,得到一个编码单元。在得到上述编码单元之后,上述第一字节可以被移出上述第一缓存。再根据有效载荷中除与第一字节属于同一编码单元的字节之外的其他字节确定编码单元。
本公开的另一个实施例中,大多数编码方式对数据进行编码的过程中都是对各个字符分别进行编码,在各个字符包含的字节中添加不同的标识位,得到各个字符对应的编码单元,不同编码方式的编码规则不同,在各个字符的字节中添加的标识位不同。因此可以根据上述编码方式的编码规则,确定上述第一字节和上述有效载荷包含的字节中标识位,根据标识位确定编码单元。上述编码单元中可以包含一个字节或多个字节。根据上述第一字节与上述数据包的有效载荷,确定得到的各个编码单元中包含的字节的数量可以相同,也可以不同。
具体的,针对一种编码方式,可以通过步骤S103A1-S103A4实现上述步骤S103A,在此暂不详述。
另外,若上述第一缓存中不存在第一字节,则可以直接根据有效载荷包含的字节,确定字符的编码单元。
除此之外,本公开的另一个实施例中,在确定得到上述编码单元之后,可以对上述编码单元中各个字节的合法性进行检测,确定上述编码单元中的各个字节是否符合上述编码方式的编码规则,若不符合,则认为上述编码单元中的字节不合法,字节出现错误,导致编码单元出现错误。依据上述解码方式可能难以对错误的编码单元进行解码,或者可能解码得到错误的解码结果,错误的解码结果会对数据包检测的检测结果造成影响。因此对于错误的编码单元,本公开实施例可以不执行以下步骤S103B,结束本公开实施例的流程。
S103B:采用上述解码方式,对所确定的编码单元进行解码,得到解码数据。
具体的,可以分别使用上述解码方式对各个编码单元进行解码,得到各个解码单元,将各个解码单元按照所对应的编码单元在有效载荷中的排列顺序进行合并,便可以得到上述解码数据。
本公开的一个实施例中,可以通过步骤S103B1-S103B2实现上述步骤S103B,本公开实施例在此暂不详述。
由以上可见,若上述第一缓存中缓存有其他数据包中包含的未被解码的第一字节,则可以认为第一字节对应的编码单元在传输过程中存在跨包的情况,也就是第一字节与本数据包中有效载荷内的字节可能共同组成完整的编码单元,可以在第一字节与本数据包的有效载荷共同确定完整的编码单元,并对编码单元进行解码,得到准确的解码数据。并且由于存储于第一缓存中的上述第一字节是一个编码单元的一部分,因此上述第一缓存中所缓存的字节数量不会超过一个编码单元对应的字节数量,第一缓存所需的缓存空间较少,可以节省内存资源。
参见图2B,为本发明实施例提供的第三种数据包检测方法的流程示意图,与前述图2A所示的实施例相比,在上述步骤S103A之后还包括以下步骤S103C。
S103C:若存在未被确定为编码单元的第二字节,则将上述第一缓存中缓存的第一字节更新为上述第二字节。
具体的,上述第二字节是上述数据包的有效载荷中不属于任一完整的编码单元的字节,也就是上述第二字节对应的编码单元可能存在跨包的情况,则可以将上述第二字节存储于上述第一缓存中,则上述第二字节成为新的第一字节,等待接收到其他数据包之后,再根据新的第一字节与其他数据包的有效载荷中的字节共同确定编码单元。
根据新的第一字节与其他数据包的有效载荷中的字节共同确定编码单元的方式与前述步骤S103A相似,本公开实施例对此不再赘述。
由以上可见,若上述数据包的有效载荷中存在未被确定为字符的编码单元的第二字节,则可以认为第二字节对应的编码单元在传输过程中存在跨包情况,与第二字节属于同一编码单元的其他字节可能存储于其他数据包中,因此可以缓存上述第二字节,等待接收到其他数据包之后,再根据第二字节与其他数据包的有效载荷中的字节确定编码单元。从而可以保证所确定的编码单元的完整性,对完整的编码单元解码得到的解码数据较为准确。
参见图3,为本公开实施例提供的第四种数据包检测方法的流程示意图,与前述图2A所示的实施例相比,上述步骤S103A包括以下步骤S103A1-S103A4。
S103A1:确定第三字节的起始位的取值。
其中,若存在上述第一字节,上述第三字节的初始值为:上述第一字节中的首字节,若不存在上述第一字节,上述第三字节的初始值为:上述有效载荷包含的字节中的首字节。
具体的,在存在上述第一字节的情况下,需要根据上述第一字节与有效载荷中的字节共同确定上述编码单元,则可以将上述第一字节中的首字节确定为第三字节的初始值,从上述第一字节的首字节开始确定上述编码单元。
在不存在上述第一字节的情况下,可以直接根据上述有效载荷中的字节确定上述编码单元,则可以将有效载荷包含的字节中的首字节确定为上述第三字节,从有效载荷的首字节开始确定上述编码单元。
另外,每一字节中包含8个数据位,以二进制的形式表示上述第三字节,每一数据位的取值为0或1。
S103A2:若上述取值为第一数值,则将上述第三字节确定为一个编码单元。
具体的,上述第一数值可以根据上述编码方式的编码规则确定,若根据上述编码规则,一个字节的起始位取值为1表示上述字节为一个单字节的编码单元,则上述第一数值为1。相反的,若根据上述编码规则,一个字节的起始位取值为0表示上述字节为一个单字节的编码单元,则上述第一数值为0。
其中,若确定上述编码单元中仅包含一个第三字节,上述编码单元为单字节编码单元,则可以将预设的状态标识的取值设定为表示对单字节编码单元进行解码的第一取值,表示当前的解码状态为对单字节编码单元进行解码的第一状态。则在对编码单元进行解码的过程中,根据上述状态标识的取值可以确定编码单元中包含一个字节,可以使用对单字节编码单元进行解码的解码方式对上述编码单元进行解码。上述第一状态可以被称为init状态。上述第一取值可以以数字、符号等形式表示。
S103A3:若上述取值为第二数值,则确定上述第三字节中从起始位起、取值连续为上述第二数值的数据位的第一数量,在上述第三字节属于上述第一字节的情况下,将上述第一字节与有效载荷中前第二数量个字节确定为一个编码单元,在上述第三字节不属于上述第一字节的情况下,将上述有效载荷中从上述第三字节起第一数量个连续字节确定为一个编码单元。
其中,上述第二数量为:上述第一数量与上述第三字节的数量之间的差值。
具体的,上述第二数值与上述第一数值不同,若上述第一数值为1,则上述第二数值为0,若上述第一数值为0,则上述第二数值为1。
其中,上述第三字节中从起始位起、包括起始位在内、取值连续为上述第二数值的数据位的第一数量,即为编码单元中包含的字节的数量。上述第三字节中从起始位起、取值为第二数值的数据位为对字符进行编码时添加至字节中的标识位,与表示字符的实际取值的有效位无关,为了将上述标识位与有效位相区隔,在上述标识位于有效位之间可以添加一位取值为第一数值的区隔位,上述区隔位也可以作为上述标识位中的一位。
例如,若上述第二数值为1,则对数字1进行三字节编码得到的编码单元可以为11100000 10000000 10000001,其中每8位数据对应一个字节,上述编码单元的首字节中从起始位开始共包含3个取值为1的数据位,表示上述编码单元中包含3个字节。首字节中连续的3个取值为1的数据位之后的取值为0的数据位为上述区隔位,则上述首字节中从起始位开始的4个数据位“1110”为首字节中的标识位,标识位后的4个字节“0000”为有效位。第二个字节中位于前端的“10”为第二个字节中的标识位,标识位后的6个字节“000000”为第二个字节的有效位。第三个字节中位于前端的“10”为第三个字节中的标识位,标识位后的6个字节“000001”为第二个字节的有效位。本举例仅为针对一种编码方式的举例,本方案并不限定于本举例表示的编码方式。
具体的,可以从第三字节的起始位起依次确定各个数据位的取值是否为第二数值,每确定一个取值为第二数值的数据位,则可以在第一累计数量上加1,直至所确定的数据位的取值不是第二数值,将最终计算得到的第一累计数量作为上述第一数量。
另外,也可以通过以下步骤A,确定上述第一数量。
步骤A:根据预设的字节取值与第一数量之间的对应关系,确定上述第三字节对应的第一数量。
具体的,可以以表的形式记录上述字节取值与第一数量之间的对应关系,每一表项中记录有上述字节取值与该字节取值对应的第一数量。表中记录的字节取值可以为二进制形式、十进制形式或其他进制的形式。
另外,也可以将上述字节取值转换为十进制值,以数组的形式记录上述字节取值与第二数量之间的对应关系。其中,上述数组内各个元素下标的取值分别为各个字节取值对应的十进制值,元素中记录的元素值为:该元素下标表示的字节取值对应的第一数量。则可以将第三字节的字节取值转换为十进制取值,查找上述数组中下标为上述十进制取值的元素,上述元素中记录的元素值即为上述第三字节对应的第一数量。
由以上可见,由于一个字节中包含8个二进制数据位,因此将上述字节取值转换为十进制可以得到的十进制值的取值范围为0-255,即上述网络设备最多存储256组字节取值与第一数量之间对应关系,对内存资源的占用较少。并且与依次查找第三字节中取值为第二数值的数据位相比,本公开实施例可以直接根据预设的对应关系确定第三字节对应的第一数量,查找对应关系的时间复杂度为O(1),因此通过本公开实施例提供的方案可以缩短确定第一数量的时间,提高解码效率。
本公开的一个实施例中,在上述第三字节属于上述第一字节的情况下,上述第一字节与有效载荷中包含的字节共同组成一个编码单元,因此可以计算上述第一数量与第一字节的数量之间的差值,得到有效载荷中与第一字节共同组成一个编码单元的字节的第二数量,将上述第一字节与有效载荷中前第二数量个字节确定为一个编码单元。
本公开的另一个实施例中,若上述第三字节不属于上述第一字节,则上述第三字节属于上述有效载荷,则可以直接在上述有效载荷中确定属于同一编码单元的字节。则可以将从上述第三字节起第一数量个连续字节确定为一个编码单元。
此外,若上述有效载荷中包含的还未被确定为编码单元的字节的数量小于上述第一数量,则说明上述有效载荷中并不包含一个完整的编码单元的所有字节,则可以将还未被确定为编码单元的字节确定为第二字节,缓存于第一缓存中。并且终止确定编码单元的流程。
再者,若确定上述编码单元中包含的多个字节,为多字节编码单元,则可以将预设的状态标识的取值设定为表示对多字节编码单元进行解码的第二取值,表示当前的解码状态为对多字节编码单元进行解码的第二状态。则在对编码单元进行解码的过程中,根据上述状态标识的取值可以确定编码单元中包含多个字节,可以使用对多字节编码单元进行解码的解码方式对上述编码单元进行解码。上述第一状态可以被称为decode状态。上述第二取值可以以数字、符号等形式表示,上述第二取值与上述第一取值不同。
再者,在完成对上述多字节编码单元的解码之后,可以将上述编码标识的取值调整为第一取值。但若确定上述有效载荷中包含第二字节,则可以保持上述编码标识的取值为第二取值,表示上述第一缓存中还存在未被确定为编码单元的字节,在网络设备接收到新的数据包之后,可以根据第一缓存中缓存的字节与新的数据包的有效载荷共同确定编码单元。
S103A4:将上述有效载荷中、位于所确定的编码单元后的下一字节确定为新的第三字节。
具体的,若能够确定得到新的第三字节,即上述有效载荷中还存在未被确定为字符的编码单元的字节,则返回执行上述步骤S103A1。
相反的,若不能够确定得到新的第三字节,即上述有效载荷中不存在未被确定为字符的编码单元的字节,则可以结束确定编码单元的流程,执行步骤S103B。
由以上可见,在存在第一字节与不存在第一字节的情况下,通过本公开实施例提供的方案均能依次确定各个编码单元,从而可以进一步的对各个编码单元进行解码得到解码数据。在编码单元跨包的情况下,通过本公开实施例提供的方案同样可以得到完整的编码单元,从而可以在完整的编码单元的基础上,解码得到完整准确的解码数据,进一步的提高数据包检测结果的准确性。
参见图4,为本公开实施例提供的第五种数据包检测方法的流程示意图,与前述图2A所示的实施例相比,上述步骤S103B可以通过以下步骤S103B1-S103B2实现。
S103B1:在上述编码单元中包含字节的数量为1的情况下,将上述编码单元作为解码数据。
具体的,可以根据上述状态标识的取值确定上述编码单元包含的字节的数量,若上述取值为第一取值,则上述编码单元中包含字节的数量为1。
若上述第一数值为0,则上述编码单元中包含的字节的起始位为0,可以直接将编码单元作为解码数据。
若上述第一数值为1,则上述编码单元中包含的字节的起始位为1,可以将上述字节的起始位设置为0,再将编码单元作为解码数据。
S103B2:在上述编码单元中包含字节的数量大于1的情况下,获取各字节中包含的、除标识位之外的有效位,将各字节的有效位按字节顺序重组,得到解码数据。
其中,上述标识位为:按照上述编码方式的编码规则添加至字节中的数据位。
具体的,可以根据上述状态标识的取值确定上述编码单元包含的字节的数量,若上述取值为第二取值,则上述编码单元中包含字节的数量大于1。
本公开的一个实施例中,可以分别确定编码单元中各个字节包含的标识位,并将上述标识位去除,得到各个字节的有效位。将各个字节的有效位按照字节在编码单元中的排列顺序依次首尾合并重组,得到重组结果。在所得到的重组结果中包含的数据位的数量不是8的整数倍,即重组结果不能组成完整的字节的情况下,可以在重组结果的首部添加取值为0的数据位,以得到完整的字节。之后从首字节起依次确定重组结果中各个字节的取值是否为0,若为是,则去除取值为0的字节,直至确定得到一个取值不为0的字节,或上述重组结果中仅剩一个字节。将最终得到的重组结果确定为解码数据。
例如,与前文示例相同,对数字1进行三字节编码得到的编码单元可以为1110000010000000 10000001,其中,首字节中的标识位为“1110”,有效位为“0000”,第二个字节的标识位为“10”,有效位为“000000”,第三个字节的标识位为“10”,有效位为“000001”。则对3个字节中包含的有效位进行重组得到的重组结果为“00000000 000000001”,共2个字节,由于首字节的取值为0,因此去除首字节对重组结果的取值不造成影响,则去除首字节之后得到的重组结果为“00000001”,上述“00000001”即为对编码单元进行解码得到的解码数据。
本公开的一个实施例中,可以从首字节的最后一位起依次确定各个数据位的取值是否为第二取值,每确定一个取值不为第二数值的数据位,则可以在第二累计数量上加1,直至所确定的数据位的取值是第二数值。在计算得到的第二累计数量的基础上减去1位区隔位,将计算结果作为上述有效位数量。
本公开的另一个实施例中,也可以根据前述步骤S103A3确定得到的第一数量计算首字节中包含的有效位的有效位数量。
具体的,上述第一数量为上述首字节中包含的取值为第二数值的标识位的数量,则可以计算字节中包含的数据位总数8与上述第一数量之间的差值,再在上述差值的基础上减去1位区隔位,得到上述有效位数量。
本公开的又一个实施例中,还可以通过以下步骤B-步骤C确定上述首字节中的有效位。
步骤B:根据预设的字节取值与有效位数量之间的对应关系,确定上述首字节对应的有效位数量。
具体的,可以以表的形式记录上述字节取值与有效位数量之间的对应关系,每一表项中记录有上述字节取值与该字节取值对应的有效位数量。表中记录的字节取值可以为二进制形式、十进制形式或其他进制的形式。
另外,也可以将上述字节取值转换为十进制值,以数组的形式记录上述字节取值与有效位数量之间的对应关系。其中,上述数组内各个元素下标的取值分别为各个字节取值对应的十进制值,元素中记录的元素值为:该元素下标表示的字节取值对应的有效位数量。则可以将首字节的字节取值转换为十进制值,查找上述数组中下标为上述十进制值的元素,上述元素中记录的元素值即为上述首字节对应的有效位数量。
再者,在确定上述有效位数量之后,也可以计算字节中包含的数据位总数8与上述有效位数量之间的差值,再在上述差值的基础上减去1位区隔位,得到上述第一数量。也就是,上述有效位数量与第一数量之和为7,因此确定上述有效位数量之后便可以得到上述第一数量,确定上述第一数量之后也可以得到上述有效位数量。
由以上可见,由于一个字节中包含8个二进制数据位,因此将上述字节取值转换为十进制可以得到的十进制值的取值范围为0-255,即上述网络设备最多存储256组字节取值与有效位数量之间对应关系,对内存资源的占用较少。并且与先确定首字节的第一数量,再根据第一数量确定首字节的有效位数量,或依次确定首字节中各个数据位的取值,从而确定有效位数量相比,本公开实施例可以直接根据预设的对应关系确定首字节对应的有效位数量,查找对应关系的时间复杂度为O(1),因此通过本公开实施例提供的方案可以缩短确定有效位数量的时间,提高解码效率。
步骤C:将上述起始字节中有效数量个最低数据位,确定为上述起始字节中的有效位。
由以上可见,通过本公开实施例提供的方案可以分别采用不同的解码方式对单字节编码单元与多字节编码单元进行解码,得到解码数据。因此通过本公开实施例提供的方案能够对包含字节的数量不同的编码单元的解码,得到准确的解码结果,进而可以保证后续对数据包进行检测得到的检测结果的准确性。
与前述数据包检测方法相对应,本公开实施例还提供了一种数据包检测装置。参见图5,为本公开实施例提供的第一种数据包检测装置的结构示意图,所述装置包括:
编码方式获得模块501,用于获得数据包的编码方式;
解码方式确定模块502,用于确定所述编码方式对应的解码方式;
载荷解码模块503,用于采用所述解码方式,对所述数据包的有效载荷进行解码,得到解码数据;
特征检测模块504,用于提取所述解码数据的数据特征,检测所述数据特征与预设的攻击特征是否匹配,得到检测结果。
由以上可见,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
参见图6A,为本公开实施例提供的第二种数据包检测装置的结构示意图,与前述图5所示的实施例相比,上述载荷解码模块503,包括:
单元确定子模块503A,用于确定第一缓存中缓存的第一字节与所述有效载荷中包含的编码单元,其中,所述第一字节为:所获得的其他数据包中包含的、未被解码的字节,一个编码单元为:对一个字符进行编码得到的编码结果组成的单元;
单元解码子模块503B,用于采用所述解码方式,对所确定的编码单元进行解码,得到解码数据。
由以上可见,若上述第一缓存中缓存有其他数据包中包含的未被解码的第一字节,则可以认为第一字节对应的编码单元在传输过程中存在跨包的情况,也就是第一字节与本数据包中有效载荷内的字节可能共同组成完整的编码单元,可以在第一字节与本数据包的有效载荷共同确定完整的编码单元,并对编码单元进行解码,得到准确的解码数据。并且由于存储于第一缓存中的上述第一字节是一个编码单元的一部分,因此上述第一缓存中所缓存的字节数量不会超过一个编码单元对应的字节数量,第一缓存所需的缓存空间较少,可以节省内存资源。
参见图6B,为本公开实施例提供的第三种数据包检测装置的结构示意图,与前述图6A所示的实施例相比,上述载荷解码模块503还包括:
字节更新子模块503C,用于若存在未被确定为编码单元的第二字节,则将所述第一缓存中缓存的第一字节更新为所述第二字节。
由以上可见,若上述数据包的有效载荷中存在未被确定为字符的编码单元的第二字节,则可以认为第二字节对应的编码单元在传输过程中存在跨包情况,与第二字节属于同一编码单元的其他字节可能存储于其他数据包中,因此可以缓存上述第二字节,等待接收到其他数据包之后,再根据第二字节与其他数据包的有效载荷中的字节确定编码单元。从而可以保证所确定的编码单元的完整性,对完整的编码单元解码得到的解码数据较为准确。
本公开的一个实施例中,上述单元确定子模块503A,具体用于:
确定第三字节的起始位的取值,其中,若存在所述第一字节,所述第三字节的初始值为:所述第一字节中的首字节,若不存在所述第一字节,所述第三字节的初始值为:所述有效载荷包含的字节中的首字节;
若所述取值为第一数值,则将所述第三字节确定为一个编码单元;
若所述取值为第二数值,则确定所述第三字节中从起始位起、取值连续为所述第二数值的数据位的第一数量,在所述第三字节属于所述第一字节的情况下,将所述第一字节与有效载荷中前第二数量个字节确定为一个编码单元,在所述第三字节不属于所述第一字节的情况下,将所述有效载荷中从所述第三字节起第一数量个连续字节确定为一个编码单元,其中,所述第二数量为:所述第一数量与所述第三字节的数量之间的差值;
将所述有效载荷中、位于所确定的编码单元后的下一字节确定为新的第三字节,返回执行所述确定第三字节的起始位的取值。
由以上可见,在存在第一字节与不存在第一字节的情况下,通过本公开实施例提供的方案均能依次确定各个编码单元,从而可以进一步的对各个编码单元进行解码得到解码数据。在编码单元跨包的情况下,通过本公开实施例提供的方案同样可以得到完整的编码单元,从而可以在完整的编码单元的基础上,解码得到完整准确的解码数据,进一步的提高数据包检测结果的准确性。
本公开的一个实施例中,上述单元确定子模块503A,具体用于:
根据预设的字节取值与第一数量之间的对应关系,确定所述第三字节对应的第一数量。
由以上可见,由于一个字节中包含8个二进制数据位,因此将上述字节取值转换为十进制可以得到的十进制值的取值范围为0-255,即上述网络设备最多存储256组字节取值与第一数量之间对应关系,对内存资源的占用较少。并且与依次查找第三字节中取值为第二数值的数据位相比,本公开实施例可以直接根据预设的对应关系确定第三字节对应的第一数量,查找对应关系的时间复杂度为O(1),因此通过本公开实施例提供的方案可以缩短确定第一数量的时间,提高解码效率。
本公开的一个实施例中,所述单元解码子模块503B,具体用于:
在所述编码单元中包含字节的数量为1的情况下,将所述编码单元作为解码数据;
在所述编码单元中包含字节的数量大于1的情况下,获取各字节中包含的、除标识位之外的有效位,将各字节的有效位按字节顺序重组,得到解码数据,其中,所述标识位为:按照所述编码方式的编码规则添加至字节中的数据位。
由以上可见,通过本公开实施例提供的方案可以分别采用不同的解码方式对单字节编码单元与多字节编码单元进行解码,得到解码数据。因此通过本公开实施例提供的方案能够对包含字节的数量不同的编码单元的解码,得到准确的解码结果,进而可以保证后续对数据包进行检测得到的检测结果的准确性。
本公开的一个实施例中,针对所述编码单元的首字节,通过以下有效位确定子模块确定所述首字节中的有效位;
所述有效位确定子模块,具体用于:
根据预设的字节取值与有效位数量之间的对应关系,确定所述首字节对应的有效位数量;
将所述首字节中有效数量个最低数据位,确定为所述首字节中的有效位。
由以上可见,由于一个字节中包含8个二进制数据位,因此将上述字节取值转换为十进制可以得到的十进制值的取值范围为0-255,即上述网络设备最多存储256组字节取值与有效位数量之间对应关系,对内存资源的占用较少。并且与先确定首字节的第一数量,再根据第一数量确定首字节的有效位数量,或依次确定首字节中各个数据位的取值,从而确定有效位数量相比,本公开实施例可以直接根据预设的对应关系确定首字节对应的有效位数量,查找对应关系的时间复杂度为O(1),因此通过本公开实施例提供的方案可以缩短确定有效位数量的时间,提高解码效率。
本公开实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现上述数据包检测方法任一所述的方法步骤。
应用本公开实施例提供的电子设备进行数据包检测时,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本公开提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据包检测方法的步骤。
执行本公开实施例提供的计算机可读存储介质中存储的计算机程序进行数据包检测时,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
在本公开提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据包检测方法。
执行本公开实施例提供的计算机可读存储介质中存储的计算机程序进行数据包检测时,若上述数据特征与预设的攻击特征相匹配,则说明上述数据包与攻击数据包相似,便可以将上述数据包确定为攻击数据包,完成数据包检测。所以通过本公开实施例提供的方案能够识别出网络设备接收到的数据包是否为攻击数据包,从而可以防止检测出的攻击数据包对网络设备造成影响,进而提高网络设备的安全性。
另外,使用不同的编码方式对相同的数据进行编码,得到的编码结果不同。不同编码结果的数据特征不同。由于无法预知数据包对应的编码方式,若网络设备直接提取有效载荷的数据特征,并与攻击特征进行匹配以获得检测结果,网络设备需要存储不同编码方式对应的不同编码结果的攻击特征,以实现对攻击数据包的检测。因此网络设备中需要存储大量攻击特征,会占用网络设备较多的存储资源。并且网络设备实际存储的攻击特征难以覆盖所有需要存储的攻击特征,从而导致数据包检测的准确度较低,网络设备的安全性较差。而本公开实施例提供的方案中,网络设备先对数据包的有效载荷进行解码得到解码数据,再提取解码数据的数据特征与攻击特征进行匹配,以得到检测结果。因此网络设备中不需要存储不同编码方式对应的编码结果的攻击特征,仅需要存储攻击数据包的解码数据的数据特征作为攻击特征。所以通过本公开实施例提供的方案可以降低网络设备需要存储的攻击特征的数量,从而降低攻击特征占用的存储资源。并且由于需要存储的攻击特征较少,网络设备实际存储的攻击特征较易于覆盖所有需要存储的攻击特征,可以提高数据包检测的准确度,进而提高网络设备的安全性。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质和计算机程序产品而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本公开的较佳实施例,并非用于限定本公开的保护范围。凡在本公开的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本公开的保护范围内。
Claims (8)
1.一种数据包检测方法,其特征在于,所述方法包括:
获得数据包的编码方式;
确定所述编码方式对应的解码方式;
采用所述解码方式,对所述数据包的有效载荷进行解码,得到解码数据;
提取所述解码数据的数据特征,检测所述数据特征与预设的攻击特征是否匹配,得到检测结果;
其中,所述采用所述解码方式,对所述数据包的有效载荷进行解码,得到解码数据,包括:
确定第一缓存中缓存的第一字节与所述有效载荷中包含的编码单元,其中,所述第一字节为:所获得的其他数据包中包含的、未被解码的字节,一个编码单元为:对一个字符进行编码得到的编码结果组成的单元;
采用所述解码方式,对所确定的编码单元进行解码,得到解码数据;
其中,所述确定第一缓存中缓存的第一字节与所述有效载荷中包含的编码单元,包括:
确定第三字节的起始位的取值,其中,若存在所述第一字节,所述第三字节的初始值为:所述第一字节中的首字节,若不存在所述第一字节,所述第三字节的初始值为:所述有效载荷包含的字节中的首字节;
若所述取值为第一数值,则将所述第三字节确定为一个编码单元;
若所述取值为第二数值,则确定所述第三字节中从起始位起、取值连续为所述第二数值的数据位的第一数量,在所述第三字节属于所述第一字节的情况下,将所述第一字节与有效载荷中前第二数量个字节确定为一个编码单元,在所述第三字节不属于所述第一字节的情况下,将所述有效载荷中从所述第三字节起第一数量个连续字节确定为一个编码单元,其中,所述第二数量为:所述第一数量与所述第三字节的数量之间的差值;
将所述有效载荷中、位于所确定的编码单元后的下一字节确定为新的第三字节,返回执行所述确定第三字节的起始位的取值的步骤。
2.根据权利要求1所述的方法,其特征在于,在所述确定第一缓存中缓存的第一字节与所述有效载荷中包含的编码单元之后,所述方法还包括:
若存在未被确定为编码单元的第二字节,则将所述第一缓存中缓存的第一字节更新为所述第二字节。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第三字节中从起始位起、取值连续为所述第二数值的数据位的第一数量,包括:
根据预设的字节取值与第一数量之间的对应关系,确定所述第三字节对应的第一数量。
4.根据权利要求1所述的方法,其特征在于,所述采用所述解码方式,对所确定的编码单元进行解码,得到解码数据,包括:
在所述编码单元中包含字节的数量为1的情况下,将所述编码单元作为解码数据;
在所述编码单元中包含字节的数量大于1的情况下,获取各字节中包含的、除标识位之外的有效位,将各字节的有效位按字节顺序重组,得到解码数据,其中,所述标识位为:按照所述编码方式的编码规则添加至字节中的数据位。
5.根据权利要求4所述的方法,其特征在于,针对所述编码单元的首字节,通过以下方式确定所述首字节中的有效位:
根据预设的字节取值与有效位数量之间的对应关系,确定所述首字节对应的有效位数量;
将所述首字节中有效数量个最低数据位,确定为所述首字节中的有效位。
6.一种数据包检测装置,其特征在于,所述装置包括:
编码方式获得模块,用于获得数据包的编码方式;
解码方式确定模块,用于确定所述编码方式对应的解码方式;
载荷解码模块,用于采用所述解码方式,对所述数据包的有效载荷进行解码,得到解码数据;
特征检测模块,用于提取所述解码数据的数据特征,检测所述数据特征与预设的攻击特征是否匹配,得到检测结果;
其中,所述载荷解码模块,包括:
确定第一缓存中缓存的第一字节与所述有效载荷中包含的编码单元,其中,所述第一字节为:所获得的其他数据包中包含的、未被解码的字节,一个编码单元为:对一个字符进行编码得到的编码结果组成的单元;
采用所述解码方式,对所确定的编码单元进行解码,得到解码数据;
其中,所述确定第一缓存中缓存的第一字节与所述有效载荷中包含的编码单元,包括:
确定第三字节的起始位的取值,其中,若存在所述第一字节,所述第三字节的初始值为:所述第一字节中的首字节,若不存在所述第一字节,所述第三字节的初始值为:所述有效载荷包含的字节中的首字节;
若所述取值为第一数值,则将所述第三字节确定为一个编码单元;
若所述取值为第二数值,则确定所述第三字节中从起始位起、取值连续为所述第二数值的数据位的第一数量,在所述第三字节属于所述第一字节的情况下,将所述第一字节与有效载荷中前第二数量个字节确定为一个编码单元,在所述第三字节不属于所述第一字节的情况下,将所述有效载荷中从所述第三字节起第一数量个连续字节确定为一个编码单元,其中,所述第二数量为:所述第一数量与所述第三字节的数量之间的差值;
将所述有效载荷中、位于所确定的编码单元后的下一字节确定为新的第三字节,返回执行所述确定第三字节的起始位的取值的步骤。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110619498.XA CN113132416B (zh) | 2021-06-03 | 2021-06-03 | 一种数据包检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110619498.XA CN113132416B (zh) | 2021-06-03 | 2021-06-03 | 一种数据包检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113132416A CN113132416A (zh) | 2021-07-16 |
CN113132416B true CN113132416B (zh) | 2022-06-21 |
Family
ID=76782949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110619498.XA Active CN113132416B (zh) | 2021-06-03 | 2021-06-03 | 一种数据包检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113132416B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615074A (zh) * | 2022-03-25 | 2022-06-10 | 山石网科通信技术股份有限公司 | 网络报文解码方法及网络攻击检测方法、装置和存储介质 |
CN114760256B (zh) * | 2022-04-14 | 2024-01-30 | 曙光网络科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN114745206B (zh) * | 2022-06-10 | 2022-09-23 | 北京长亭未来科技有限公司 | 一种嵌套编码攻击载荷检测方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685224A (zh) * | 2013-09-05 | 2014-03-26 | 北京安博达通科技有限责任公司 | 网络入侵检测方法 |
WO2015101152A1 (zh) * | 2014-01-02 | 2015-07-09 | 中国科学院声学研究所 | 基于dfa的http分块传输编码的传输载荷提取方法 |
CN105868630A (zh) * | 2016-03-24 | 2016-08-17 | 中国科学院信息工程研究所 | 恶意pdf文档检测方法 |
CN106161479A (zh) * | 2016-09-21 | 2016-11-23 | 杭州迪普科技有限公司 | 一种支持特征跨包的编码攻击检测方法和装置 |
CN108769081A (zh) * | 2018-07-11 | 2018-11-06 | 中国人民解放军国防科技大学 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019246132A1 (en) * | 2018-06-18 | 2019-12-26 | Digimarc Corporation | Methods and arrangements for reconciling data from disparate data carriers |
US10951649B2 (en) * | 2019-04-09 | 2021-03-16 | Arbor Networks, Inc. | Statistical automatic detection of malicious packets in DDoS attacks using an encoding scheme associated with payload content |
-
2021
- 2021-06-03 CN CN202110619498.XA patent/CN113132416B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685224A (zh) * | 2013-09-05 | 2014-03-26 | 北京安博达通科技有限责任公司 | 网络入侵检测方法 |
WO2015101152A1 (zh) * | 2014-01-02 | 2015-07-09 | 中国科学院声学研究所 | 基于dfa的http分块传输编码的传输载荷提取方法 |
CN105868630A (zh) * | 2016-03-24 | 2016-08-17 | 中国科学院信息工程研究所 | 恶意pdf文档检测方法 |
CN106161479A (zh) * | 2016-09-21 | 2016-11-23 | 杭州迪普科技有限公司 | 一种支持特征跨包的编码攻击检测方法和装置 |
CN108769081A (zh) * | 2018-07-11 | 2018-11-06 | 中国人民解放军国防科技大学 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113132416A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113132416B (zh) | 一种数据包检测方法及装置 | |
CN110445860B (zh) | 一种报文发送方法、装置、终端设备及存储介质 | |
CN110851748A (zh) | 短链接的生成方法、服务器、存储介质及计算机设备 | |
CN109492118B (zh) | 一种数据检测方法及检测装置 | |
CN112989348B (zh) | 攻击检测方法、模型训练方法、装置、服务器及存储介质 | |
CN111756750B (zh) | 安全访问方法、装置、设备及存储介质 | |
US8868584B2 (en) | Compression pattern matching | |
CN110851113A (zh) | 字节序列随机性的检测方法、装置、存储介质及电子设备 | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN112995199B (zh) | 数据编解码方法、装置、传输系统、终端设备及存储介质 | |
CN112600864A (zh) | 一种验证码校验方法、装置、服务器及介质 | |
CN111880942A (zh) | 一种网络威胁处理方法及装置 | |
CN111756749B (zh) | 安全访问方法、装置、设备及存储介质 | |
CN113162628B (zh) | 一种数据编码方法、数据解码方法、终端和存储介质 | |
CN114629707A (zh) | 一种乱码检测方法、装置及电子设备和存储介质 | |
CN112073365B (zh) | 基于fpga的响应消息处理方法、装置 | |
CN114510717A (zh) | 一种elf文件的检测方法、装置、存储介质 | |
CN115276889A (zh) | 解码处理方法、装置、计算机设备及存储介质 | |
CN111177362A (zh) | 一种信息处理方法、装置、服务器及介质 | |
CN111178008A (zh) | 一种面向数字字符的数据编码方法、解析方法及系统 | |
CN113283215B (zh) | 一种基于utf-32编码的数据混淆方法及装置 | |
CN114726599B (zh) | 基于人工智能算法的软件定义网络中入侵检测方法和装置 | |
CN110287147B (zh) | 一种字符串排序方法及装置 | |
CN110349025B (zh) | 一种基于未花费交易输出的合约资产防遗失方法及装置 | |
CN115086044A (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 |