CN111314268B - 一种数据包分析方法及装置 - Google Patents

一种数据包分析方法及装置 Download PDF

Info

Publication number
CN111314268B
CN111314268B CN201811513540.4A CN201811513540A CN111314268B CN 111314268 B CN111314268 B CN 111314268B CN 201811513540 A CN201811513540 A CN 201811513540A CN 111314268 B CN111314268 B CN 111314268B
Authority
CN
China
Prior art keywords
byte
data packet
value
numerical value
packet
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
CN201811513540.4A
Other languages
English (en)
Other versions
CN111314268A (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.)
Aisino Corp
Original Assignee
Aisino Corp
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 Aisino Corp filed Critical Aisino Corp
Priority to CN201811513540.4A priority Critical patent/CN111314268B/zh
Publication of CN111314268A publication Critical patent/CN111314268A/zh
Application granted granted Critical
Publication of CN111314268B publication Critical patent/CN111314268B/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/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers

Landscapes

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

Abstract

本发明公开了一种数据包分析方法及装置,用以解决现有技术中不能针对未知结构的数据包进行分析的问题,该方法包括:针对获取到的每个同类数据包,进行以下步骤:A、从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量;B、将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,返回步骤A;根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构。

Description

一种数据包分析方法及装置
技术领域
本发明涉及网络技术领域,尤其涉及一种数据包分析方法及装置。
背景技术
一般的网络安全分析,是针对公开的协议进行的,对于网络安全分析工程师而言,最难分析的是自定义网络协议,在这些协议中,一般都不公开协议的细节,比如传输的数据包的结构,这样无法得知数据的格式和内容,无法进行深入的网络安全分析。因此,如何能够对未知结构的数据包进行分析是一个亟待解决的问题。
发明内容
本发明实施例提供了一种数据包分析方法及装置,用以解决现有技术中不能针对未知结构的数据包进行分析的问题。
本发明实施例提供了一种数据包分析方法,所述方法包括:
针对获取到的每个同类数据包,进行以下步骤:
A、从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量;
B、将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,返回步骤A;
根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构。
进一步地,所述同类数据包为网络通信协议中握手时处于同一操作步骤的数据包。
进一步地,确定所述第一字节中包含的信息为第一数值对应的字节包含的数据长度信息之前,所述方法还包括:
判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示;
如果是,进行后续步骤。
进一步地,如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,所述方法还包括:
确定表示该数据长度的字节的数量;
以所述第一字节为起始字节,获取第一字节之前的包含所述第一字节的所述数量的字节;
判断所述数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
进一步地,所述根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构包括:
获取权重值大于设定阈值的每个目标第一数值;
根据每个目标第一数值,确定所述同类数据包的结构。
本发明实施例提供了一种数据包分析装置,所述装置包括:
分析模块,用于针对获取到的每个同类数据包,进行以下步骤:从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量;
更新模块,用于将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,触发分析模块;
确定模块,用于根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构。
进一步地,所述装置还包括:
判断模块,用于判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示;如果是,则确定所述第一字节中包含的信息是否为第一数值对应的字节包含的数据长度信息。
进一步地,所述判断模块,还用于如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,确定表示该数据长度的字节的数量;以所述第一字节为起始字节,获取第一字节之前的包含所述第一字节的所述数量的字节;判断所述数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
进一步地,所述确定模块,具体用于获取权重值大于设定阈值的每个目标第一数值;根据每个目标第一数值,确定所述同类数据包的结构。
由于本发明实施例提供方法中从数据包的包尾开始依次向前分析每个字节,当识别到第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,则说明该第一字节和其之后的第一数值的字节构成一个数据块,为了后续对数据包结构进行分析,将该第一数值对应的权重值增加设定数值,当对数据包分析完毕后,可以根据第一数值的权重值,确定数据包的结构,从而可以对未知结构的数据包进行分析。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种数据包分析过程的示意图;
图2为本发明实施例1提供的一种数据包分析过程的示意图;
图3为本发明实施例3提供的一种数据包分析过程的示意图;
图4为本发明实施例3提供的一种数据包分析过程的示意图;
图5为本发明实施例3提供的一种数据包分析过程的示意图;
图6为本发明实施例4提供的一种数据包分析装置的结构示意图。
具体实施方式
下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1:
针对自定义网络协议中的数据包,虽然是未知结构的数据包,但是未知结构的数据包也是要供通信的软硬件进行处理的,所以其必然是有某种结构来保证数据的可解析性和容错性的。
这种结构,最显著的特点就是长度标识,一般在数据包的包头位置会有一个包含数据长度的标识信息的字节,而与该字节相邻,并在该字节之后的为对应数据长度的字节,否则通信的双方无法将网络协议执行下去。
图1为本发明实施例提供的一种数据包分析过程的示意图,该过程包括以下步骤:
针对获取到的每个同类数据包依次进行以下步骤:
S101:从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量。
为了能够进行数据包分析,获取同类数据包,该同类数据包可以为网络通信协议中握手时处于同一操作步骤的数据包。首先,因为8位为一个字节,将每个数据包进行划分,得到为多个字节。
另外,在对数据包分析时,需要确定的某一个字节中的信息是否为其后设定数量的字节中包含的数据长度信息,基于这个前提,为了能够对未知结构的数据包进行分析,本发明实施例中,预先设定预设参数的初始值,该预设参数的初始值可以为0、1、2等,较优地,为了能够更全面地进行数据包分析,预设的初始值为0,并且每次将该预设参数按照a=a+1的方式对该预设参数的数值进行更新。
具体的,在对同类数据包进行分析时,依次针对每个数据包进行以下操作,针对该当前被分析的数据包,从该数据包的包尾开始依次分析每个字节,将该字节作为第一字节,判断该第一字节中包含的信息是否其之后一直到数据包包尾对应的字节中包含的数据长度信息,其中该第一字节之后到数据包包尾对应的字节的数量为第一数值,如果该第一字节中包含的信息为其后第一数值的字节中包含的数据长度信息,则说明该第一字节及其之后的第一数值的字节为一个连续的数据块,则将该第一数值对应的权重值在当前值的基础上增加设定数值,该设定数值例如可以是1。如果该第一字节中包含的信息非其后第一数值的字节中包含的数据长度信息,说明还需要继续向前探查,将与该第一字节相邻的位于该第一字节之前的第二字节作为第一字节,继续上述判断该第一字节中的信息是否为其后各字节包含的数据长度信息,直至识别到第一字节中包含的信息为其后第一数值对应的字节中包含的数据长度信息为止。
下面以一个详细的例子进行说明:如图2所示,从该数据包的包尾开始依次分析每个字节,先判断第1个字节,因为第1个字节其后不存在字节,所以一定不对,之后分析第2个字节,判断第2个字节中的信息是否为第1个字节中包含的数据长度信息,如果不是,再判断第3个字节中的信息是否为第1个、第2个字节中包含的数据长度信息,如果不是继续往前判断,如果当判断到第6个字节时,该第6个字节中包含的信息为其后的第1个-第5个字节中包含的数据长度信息,则可以确定第1个-第6个字节构成一个数据块,将当前第一数值5对应的权重值增加设定数值。每个第一数值对应的权重值的初始值都是相同的,并且在每次增加设定数值时,该设定数值也是相同的,具体的该设定数值为正数。
如第一数值4对应的权重值的当前值为3,该设定数值可以是1或者5等正数,则该第一数值对应的增加后的权重值为4或8等。
S102:将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,返回步骤S101。
如果第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,说明该第一字节与该第一字节之后的第一数值的字节可以构成一个数据块,而如果第一字节非该数据包的第一个字节时,还需要对该数据包继续进行分析,在对该数据包继续进行分析时,可以采用之前的步骤继续一个字节一个字节的探查。
具体的,可以将该将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,从更新后的数据包包尾开始依次分析每个字节,直至探查到第三字节中包含的信息为其之后一直到更新后的数据包尾对应的字节中包含的数据长度信息时,将该第三字节与其之后一直到更新后的数据包尾对应的字节构成一个新的数据块,将该更新后的数据包的包尾与该第三字节间包含的字节数量对应的第二数值对应的权重值增加设定数值。
如果第三字节为该数据包的第一个字节则针对该数据包的分析过程结束,否则,继续上述S102。
例如,从该数据包的包尾开始往前依次分析每个数据包,如果第6个字节中包含的信息为其后5个字节中包含的数据长度信息,则将第一数值5对应的权重值增加1,如果增加之前该第一数值5的权重值为0,则增加后该第一数值5的权重值为1。将第7个字节作为数据包尾,因为第7个字节作为更新后的数据包尾,其后不存在其他字节,因此不进行分析,分析第8个字节包含的信息是否为第7个字节包含的数据长度信息,如果不是,继续向前探查,判断第9个字节包含的信息是否为第7、第8个字节中包含的数据长度信息,如果不是继续往前判断,如果当判断到第14个字节时,该第14个字节中包含的信息为其后的第7个-第13个字节中包含的数据长度信息,则可以确定第7个-第14个字节构成一个数据块,将当前第一数值7对应的权重值增加设定数值。
S103:根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构。
采用上述S101-S102对每个数据包进行上述分析后,则可以确定每个第一数值更新后的权重值,则根据每个第一数值对应的权重值,确定所述同类数据包的结构。
具体的,可以是识别权重值最大的第一数值,根据该第一数值对应的第一字节的位置,确定为每个数据包的结构;具体的,也就是说第一字节中包含的信息为跳过的第一数值的字节中包含的数据长度信息。
由于本发明实施例提供方法中从数据包的包尾开始依次向前分析每个字节,当识别到第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,则说明该第一字节和其之后的第一数值的字节构成一个数据块,为了后续对数据包结构进行分析,将该第一数值对应的权重值增加设定数值,当对数据包分析完毕后,可以根据第一数值的权重值,确定数据包的结构,从而可以对未知结构的数据包进行分析。
实施例2:
为了能够更准确地确定数据包的结构,在上述实施例的基础上,本发明实施例中,确定所述第一字节中包含的信息为第一数值对应的字节包含的数据长度信息之前,所述方法还包括:
判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示;
如果是,进行后续步骤。
为了能够更加准确地确定数据包的结构,识别该第一字节中包含的信息是否为该第一数值的字节中包含的数据长度信息之前,可以判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示,也就是判断该数据长度信息是否超过8位;如果没有超过8位,则该数据长度信息能够用一个字节表示。例如:如果第一数值的字节中包含的数据长度信息为二进制的11111111,也就是该数据长度信息未超过8位,此时一个字节可以表示该数据长度。如果第一数值的字节中包含的数据长度信息为二进制的111111111,该数据长度超过8位,该数据长度已经不能用一个字节表示。
因此在本发明实施例中,为了准确的对数据包进行分析,确定数据包的结构,在识别所述第一字节中包含的信息是否为该第一数值的字节中包含的数据长度信息之前,判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示,如果该数据长度能够用一个字节来表示,则获取该第一字节中的信息,判断其是否为该第一数值的字节中包含的数据长度信息。
为了能够更加准确地确定该未知结构的数据包的结构,在上述实施例的基础上,本发明实施例中,如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,所述方法还包括:
确定表示该数据长度的字节的数量;
以所述第一字节为起始字节,获取第一字节之前的包含所述第一字节的所述数量的字节;
判断所述数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
本发明实施例中,如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,确定表示该数据长度的字节的数量;以该第一字节为起始字节,获取第一字节之前的包含该第一字节的所述数量的字节;判断该数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
具体的,如果第一数值的字节中包含的数据长度信息不能用一个字节表示,也就是第一数值的字节中包含的数据长度信息超过8位,以该第一字节为起始字节,获取该第一字节之前包含的该第一字节的数量的字节,该数量可以2、3、4等,判断该数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
例如:如果该数据长度信息为二进制数111101000。也就是该数据长度信息超过8位,不能够用一个字节表示,而该数据长度信息可以用两个字节来表示,此时确定第一字节之前的一个字节,例如可以是第二字节,判断该第一字节与第一字节之前的第二字节中包含的信息是否为第一数值的字节中包含的数据长度信息,该第一字节与该第二字节的信息是该第一字节与该第二字节结合的一个short中包含的信息。
当确定了表示该数据长度的字节数量后,根据确定的字节数量,调整数据包的包尾位置,并重新进行上述步骤S101。具体的,如果该数据长度的字节的数量为2,则将与该第一字节相邻的、位于第一字节之前包含该第一字节的2个字节,例如可以是第一组合字节,将该第一组合字节之前的且相邻的第二字节作为该数据包的包尾,重新进行上述步骤S101。
由于本发明实施例中提供的如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,确定表示该数据长度的字节的数量;判断该数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息,从而能够更加准确地分析未知结构的数据包的结构。
实施例3:
为了确定未知结构的数据包的结构,本发明实施例中,所述根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构包括:
获取权重值大于设定阈值的每个目标第一数值;
根据每个目标第一数值,确定所述同类数据包的结构。
在本发明实施例中,可以预先设置一个权重值的阈值,将针对所有同类数据包分析得到的每个第一数值的权重值与该预设的权重值的阈值进行比较,将大于该阈值的所有权重值对应的第一数值,确定为目标第一数值。
该每个目标第一数值都有可能代表该同类数据包的结构,例如,如果该目标第一数值为5,则表示该数据包从包尾开始跳过5个字节,第6个字节中记录了其之后的5字节中包含的数据长度信息。具体的可以将该目标第一数值展示给网络安全分析师,供其选择,进而确定该同类数据包的结构。
为了更加清楚对未知结构的数据包进行分析,在上述实施例的基础上,本发明实施例中,具体描述了对未知结构数据包进行分析的过程:
S201:从待处理的同类数据包中选取一个第一目标数据包。
S202:从该目标数据包的包尾开始往前处理。先跳过第一数值a=0个字节进行处理,判断第a+1个字节的信息是否为a个字节中包含的数据长度信息,如果是,将该第一数值a对应的权重值在当前值的基础上增加设定数值;如果否,可按照a=a+1的方式对第一数值a进行更新。
当a=0时,跳过0个字节,由于该第一个字节后边不存在任何字节,所以一定不对,需要继续分析。
按照a=a+1的方式对第一数值a进行更新,当a更新为j时,从目标数据包的包尾往前探查到第j+1个字节,判断该第j+1个字节中包含的信息是否等于j个字节中包含的数据长度信息,如果是,此时将j对应的权重值在当前值的基础上增加设定数值。例如,如图3所示,当确定第6个字节中包含的信息等于其后5个字节中包含的数据长度信息,将5对应的权重值在当前值的基础上增加设定数值。
如果该j个字节中包含的数据长度信息不能用一个字节表示了,也就是j个字节中包含的数据长度信息超过255(0xff)的时候,就判断第j+1个和j+2个字节结合起来的一个short的中包含的信息,是不是等于j个字节的数据长度信息。如果是,此时将j对应的权重值在当前值的基础上增加设定数值。
在每次确定了第一数值a之后,将该第一数值a和其对应的权重值记录在数据分析结果列表中。之后在分析数据包的过程中,如果出现已记录的第一数值a,则直接更新该第一数值a对应的权重值,如果出现了数据分析结果列表没有的a值,则将新的第一数值a加入数据分析结果列表,并对应分配初始权重值。
S203:针对该第一目标数据包,在确定了一个第一数值之后,更新该第一目标数据包的包尾,返回步骤S202,重复该步骤S202往前一直探查到数据包的包头。
在上述步骤S202中,当探查到第j+1个字节中包含的信息等于j个字节中包含的数据长度信息后,将第j+2个字节作为此时该数据包的包尾,对该第一目标数据包的剩余数据段继续进行结构分析;
或者当探查到第j+1个和j+2个字节结合起来的一个short的中包含的信息等于j个字节的数据长度信息后,将第j+3个字节作为此时该数据包的包尾,对该第一目标数据包的剩余数据段继续进行结构分析。
例如,当该第一数值的字节中包含的数据长度信息能够用一个字节表示时,如图4所示,当确定第3个字节中的信息等于其后的2个字节中包含的数据长度信息后,将该第3个字节之前的第4个字节作为数据包的包尾,重复S202,发现更新后的第6个字节为其后的5个字节中包含的数据长度信息,再次将该更新后的第7个字节作为数据包的包尾,即再次更新该数据包,重复执行S202,直到探查到数据包的包头为止。
当该第一数值的字节中包含的数据长度信息不能够用一个字节表示时,如图5所示,当确定第4个和第5个字节中的信息等于其后的3个字节的数据长度信息时,将该第5个字节之前的第6字节作为数据包的包尾,即更新数据包的包尾,重复步骤S202,直到探查到数据包的包头为止。
S204:判断当前分析的第一目标数据包是否为该同类数据包中的最后一个数据包,如果否,重复执行步骤S202-S203;如果是,根据预设权重值阈值,确定权重值大于该权重值阈值的目标第一数值。
在重复执行步骤S202-S203时,每次执行,如果有新的数据结构,即新的第一数值a被发现,则加入数据分析结果列表,每次分配的初始权重值需相同,如果是已经有的第一数值,则在该第一数值对应的权重值基础上增加设定数值。
当该第一目标数据包为该同类数据包中的最后一个数据包时,根据预设权重值阈值,确定权重值大于该权重值阈值的目标第一数值,根据每个目标第一数值,确定该同类数据包的结构,可以将该目标第一数值展示给网络安全分析师,供其选择,进而确定该同类数据包的结构。
本发明实施例中,采用的原理是逆向反推,从数据包的包尾往前反推,先跳过一个假设的固定长度的字节达到第一字节的位置,该第一字节中包含的信息可能是跳过的固定长度的字节中包含的数据长度信息,经过反复递归和迭代,通过这种方法找到多种可能的数据包的结构,然后在多个数据包的数据包结构之间,进行比较筛选,筛选到最佳的数个可能的数据包的结构,供网络安全工程师分析和抉择。
实施例4:
在上述实施例的基础上,本发明实施例中,图6为本发明实施例提供的一种数据包分析装置的结构示意图,所述装置包括:
分析模块601,用于针对获取到的每个同类数据包,进行以下步骤:从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量;
更新模块602,用于将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,触发分析模块;
确定模块603,用于根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构。
进一步地,所述装置还包括:
判断模块604,用于判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示;如果是,则确定所述第一字节中包含的信息是否为第一数值对应的字节包含的数据长度信息。
进一步地,所述判断模块604,还用于如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,确定表示该数据长度的字节的数量;以所述第一字节为起始字节,获取第一字节之前的包含所述第一字节的所述数量的字节;判断所述数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
进一步地,所述确定模块603,具体用于获取权重值大于设定阈值的每个目标第一数值;根据每个目标第一数值,确定所述同类数据包的结构。
由于本发明实施例提供方法中从数据包的包尾开始依次向前分析每个字节,当识别到第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,则说明该第一字节和其之后的第一数值的字节构成一个数据块,为了后续对数据包结构进行分析,将该第一数值对应的权重值增加设定数值,当对数据包分析完毕后,可以根据第一数值的权重值,确定数据包的结构,从而可以对未知结构的数据包进行分析。
综上所述,本发明实施例提供了一种数据包分析方法、装置,用以解决现有技术中不能针对未知结构的数据包进行分析的问题,该方法包括:预先设定预设参数的初始值,每次针对该当前数值下所述预设参数进行以下分析,并在分析后将所述预设参数在当前基础上增加设定数值:针对获取到的每个同类数据包依次进行以下操作,从该数据包的包尾开始向前跳过当前数值的字节达到第一字节的位置,识别所述第一字节中包含的信息是否为该当前数值的字节中包含的数据长度信息;如果是,该当前数值对应的权重值增加设定数值;识别权重值最大的所述预设参数的数值,根据该数值对应的第一字节的位置确定为每个数据包的结构。
由于本发明实施例提供的每次在预设参数为当前数值时,从该数据包的包尾开始向前跳过当前数值的字节达到第一字节的位置,识别该第一字节中包含的信息是否为当前数值的字节中包含的数据长度信息;如果是,该当前数值对应的权重值增加设定数值;从而根据权重值中最大的该预设参数的数值,确定数据包的结构,从而可以对未知结构的数据包进行分析。
对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全应用实施例、或结合应用和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (5)

1.一种数据包分析方法,其特征在于,所述方法包括:
针对获取到的每个同类数据包,进行以下步骤:
A、从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量;
B、确定第一字节是否为该数据包的第一个字节,若否,则将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,返回步骤A,若是,则确定该数据包的分析过程结束;
根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构;
其中,确定所述第一字节中包含的信息为第一数值对应的字节包含的数据长度信息之前,所述方法还包括:
判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示;
如果是,进行后续步骤;
如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,所述方法还包括:
确定表示该数据长度的字节的数量;
以所述第一字节为起始字节,获取第一字节之前的包含所述第一字节的所述数量的字节;
判断所述数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
2.如权利要求1所述的方法,其特征在于,所述同类数据包为网络通信协议中握手时处于同一操作步骤的数据包。
3.如权利要求1所述的方法,其特征在于,所述根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构包括:
获取权重值大于设定阈值的每个目标第一数值;
根据每个目标第一数值,确定所述同类数据包的结构。
4.一种数据包分析装置,其特征在于,所述装置包括:
分析模块,用于针对获取到的每个同类数据包,进行以下步骤:从该数据包的包尾开始依次分析每个字节,当第一字节中包含的信息为第一数值对应的字节中包含的数据长度信息时,将该第一数值对应的权重值增加设定数值,其中所述第一数值为所述数据包的包尾与所述第一字节间包含的字节数量;
更新模块,用于确定第一字节是否为该数据包的第一个字节,若否,则将与第一字节相邻且位于第一字节之前的第二字节更新为该数据包的包尾,触发分析模块,若是,则确定该数据包的分析过程结束;
确定模块,用于根据确定的每个第一数值对应的权重值,确定所述同类数据包的结构;
其中,所述装置还包括:
判断模块,用于判断该第一数值的字节中包含的数据长度信息是否能够用一个字节表示;如果是,则确定所述第一字节中包含的信息是否为第一数值对应的字节包含的数据长度信息;
所述判断模块,还用于如果第一数值的字节中包含的数据长度信息不能够用一个字节表示,确定表示该数据长度的字节的数量;以所述第一字节为起始字节,获取第一字节之前的包含所述第一字节的所述数量的字节;判断所述数量的字节中包含的信息是否为第一数值的字节中包含的数据长度信息。
5.如权利要求4所述的装置,其特征在于,所述确定模块,具体用于获取权重值大于设定阈值的每个目标第一数值;根据每个目标第一数值,确定所述同类数据包的结构。
CN201811513540.4A 2018-12-11 2018-12-11 一种数据包分析方法及装置 Active CN111314268B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811513540.4A CN111314268B (zh) 2018-12-11 2018-12-11 一种数据包分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811513540.4A CN111314268B (zh) 2018-12-11 2018-12-11 一种数据包分析方法及装置

Publications (2)

Publication Number Publication Date
CN111314268A CN111314268A (zh) 2020-06-19
CN111314268B true CN111314268B (zh) 2022-06-07

Family

ID=71161216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811513540.4A Active CN111314268B (zh) 2018-12-11 2018-12-11 一种数据包分析方法及装置

Country Status (1)

Country Link
CN (1) CN111314268B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775284B1 (en) * 2000-01-07 2004-08-10 International Business Machines Corporation Method and system for frame and protocol classification
CN101808018A (zh) * 2010-03-26 2010-08-18 杭州华三通信技术有限公司 接入终端数量的检测方法及设备
CN103036848A (zh) * 2011-09-29 2013-04-10 西门子公司 协议的逆向工程方法及系统
CN104506484A (zh) * 2014-11-11 2015-04-08 中国电子科技集团公司第三十研究所 一种私有协议分析与识别方法
CN107135049A (zh) * 2017-04-19 2017-09-05 北京航天自动控制研究所 一种面向离散数据流的可靠异步通信方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775284B1 (en) * 2000-01-07 2004-08-10 International Business Machines Corporation Method and system for frame and protocol classification
CN101808018A (zh) * 2010-03-26 2010-08-18 杭州华三通信技术有限公司 接入终端数量的检测方法及设备
CN103036848A (zh) * 2011-09-29 2013-04-10 西门子公司 协议的逆向工程方法及系统
CN104506484A (zh) * 2014-11-11 2015-04-08 中国电子科技集团公司第三十研究所 一种私有协议分析与识别方法
CN107135049A (zh) * 2017-04-19 2017-09-05 北京航天自动控制研究所 一种面向离散数据流的可靠异步通信方法

Also Published As

Publication number Publication date
CN111314268A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN104461830B (zh) 监控进程的方法和装置
CN108923972B (zh) 一种去重流量提示方法、装置、服务器及存储介质
CN108491321B (zh) 测试用例范围确定方法、装置及存储介质
CN111414374A (zh) 一种区块链交易并发处理方法、装置及设备
CN102982048A (zh) 一种用于评估垃圾信息挖掘规则的方法与设备
CN111314268B (zh) 一种数据包分析方法及装置
CN109120468B (zh) 获取端到端网络时延的方法、装置和存储介质
CN109614382B (zh) 一种应用的日志分割方法及装置
CN111193631B (zh) 信息处理方法、系统和计算机可读存储介质
CN107948022B (zh) 一种对等网络流量的识别方法及识别装置
KR101968575B1 (ko) 실시간 병목 자동 분석 방법 및 이러한 방법을 수행하는 장치
CN112579833B (zh) 基于用户操作数据的业务关联关系获取方法及装置
CN111819559A (zh) 以量化步长使用机器学习模型用于恶意软件检测
EP1622309A2 (en) Method and system for treating events and data uniformly
CN111708670B (zh) 实时操作系统中任务时间参数的确定方法、装置及车辆
WO2020199789A1 (zh) 一种信息处理方法及装置
CN108984101B (zh) 在分布式存储系统中确定事件之间关系的方法及装置
CN114172705A (zh) 基于模式识别的网络大数据分析方法和系统
CN111064637B (zh) NetFlow数据去重方法及装置
CN114169985A (zh) 一种资产减值阶段确定方法及装置
CN114186637A (zh) 流量识别方法、装置、服务器和存储介质
CN109981548B (zh) 一种计费消息的解析方法及装置
CN110083626B (zh) 流式事件序列匹配方法及装置
CN114257523B (zh) 用户感知预测方法、系统、设备和计算机存储介质
EP3989491B1 (en) Generation device, generation method and generation program

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