一种数据特征提取的方法及装置的制造方法_4

文档序号:9791787阅读:来源:国知局
BCD”不是为0x00或Oxff,且没有不能合并的特征串,则得到优化后的mth_opt_set[i][ j]为{BCD}0
[0124]其中,根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,具体包括:
[0125]首先,将匹配结果中的每一个长度为2的特征串的权值设置为I,并将每一个长度大于2的特征串的权值设置为2。
[0126]这里的2和上述得到的模式串集合中每一个模式串的长度2,是一致的,上述每一个模式串的长度为2,那么,经过迭代合并等操作后,得到的特征串长度可能大于2或等于2。
[0127]然后,将匹配结果中每一个特征串的权值进行累加,获得所有特征串的权值和,并上述权值和作为上述当前获得的匹配结果的权值。
[0128]执行步骤110之后,进一步包括:根据上述报文信息和上述应用操作的数据特征,构建识别上述应用操作的规则。
[0129]这样,根据上述实施例提取的数据特征,是有效的,解决了对私有协议流量和加密流量提取数据特征难得问题,这是因为,可以指定私有协议流量或加密流量的两个会话,然后采用上述实施例中的数据特征提取,就可以得到有效的数据特征,并且根据上述实施例提取的数据特征而构建的应用操作识别规则也是有效的,进而也解决了对私有协议流量和加密流量创建应用识别规则难的问题,提高了应用操作识别的工作效率,解放了人力。
[0130]值得说明的是,若在执行步骤110时,第一会话和第二会话中的所有报文应用层负载字节序全部匹配完之后,也没有确定匹配成功,也就是没有获取到有效数据特征,就会提示从第一会话和第二会话中无法提取出数据特征。
[0131]这种情况下数据特征提取失败,第一会话和第二个会话可能不存在有效数据特征,就需要人工进一步进行审查,人工审查的部分就不属于本发明的保护范围了。
[0132]基于以上实施例,下面采用一个具体的应用场景对上述实施例作出进一步详细说明,具体分为两部分进行介绍,参阅图2和图3。
[0133]参阅图2所示,本发明实施例中,提取报文信息的执行过程具体如下:
[0134]步骤200:指定一个会话,即确定需要进行数据特征提取的会话。
[0135]步骤201:从会话中依次获取报文。
[0136]步骤202:针对当前获取的一个报文(pkt),也就是说,每次针对一个报文进行提取。
[0137]步骤203:判断pkt的应用层负载长度是否大于0,若是,则执行步骤204,否则执行步骤208。[Ο? 38] 步骤204:从pkt中提取pkt信息,其中pkt信息中至少包括:pkt应用层负载字节序、应用层负载长度、源端口、目的端口、Pkt在会话中的位置、pkt在会话中的流向信息等等。
[0139]步骤205:将pkt信息存入pktjnsg格式的数组中,用于创建识别应用操作的规则。
[0140]步骤206:将pkt信息中pkt应用层负载字节序,存入数组中,用于数据特征提取。
[0141 ]步骤207:判断数组元素是否小于设定数目,若是,则执行步骤208,否则,执行步骤209。
[0142]步骤208::判断pkt是否是会话中最后一个报文,若是,则执行步骤209,否则,执行步骤201。
[0143]步骤209:结束。
[0144]本发明实施例中,需要从两个会话(即第一会话和第二会话)中分别提取报文信息,其中,提取报文的方法都可以参阅图2所示的执行方法,从第一会话和第二会话中提取的报文信息可以表示如下:从第一会话中提取的报文应用层负载字节序为:app_data_lst[pNuml],从第二会话中提取的报文应用层负载字节序为:app_data_2cd[pNum2]。提取报文信息之后,进行匹配获取数据特征,进而创建识别应用操作的规则,具体参阅图3所示,本发明实施例中,数据特征匹配的执行过程具体如下:
[0145]步骤300:令整数i = 0&&j = 0,即从数组的第一个元素开始进行匹配。
[Ο?46] 步骤301:从数组app_data jst[pNuml]中,获取数组中下标丨所对应的元素app_data_lst[i]。
[Ο?47]步骤302:构造模式串集合ptn_set[i],具体包括:
[0148]从app_data_lst[i]元素中中的第一个字节开始依次向后取长度为2的字节,以及分别从app_data_lst[ i ]元素中的第二个字节开始依次向后取长度为2的字节,直止剩余的字节的长度不满足2时,将取出的所有长度为2的字节,作为相应的模式串集合ptn_set[i],并保存每一个模式串在app_data_l s t [ i ]元素中的起始位置值和结束位置值。
[0? 49]步骤303:根据模式串集合ptn_set [ i ]和指定匹配算法,例如AC算法,构建状态机ac_search[i]。
[Ο?δΟ] 步骤304:从数组app_data_2cd[pNum2]中,获取数组中下标」所对应的元素app_data_2cd[j]。
[0151 ]步骤 305:将 app_data_2cd[ j ]与 ac_search[ i ]进行匹配,获得匹配结果 mth_set
[i][j]o
[Ο152]可知,mth_set[i][ j]是构建的模式串集合ptn_set[i]的子集,在mth_set[i][ j]中同时保存有在app_data_2cd[ j]元素中的起始位置值和结束位置值和在app_data jst[i ]元素中的起始位置值和结束位置值。
[Ο?53] 步骤306:对mth_set[ i ] [ j ]进行优化,获得优化后的集合mth_opt_set[ i ] [ j ],具体包括:
[0? M]首先,对元素mth_se t [ i ] [ j ]中的每一个字符串根据在app_data_2cd [ j ]元素中的起始位置值和结束位置值和在app_data_l st [ i ]元素中的起始位置值和结束位置值进行排序;
[0155]然后,从mth_set[i][j]中的第一个字符串开始,取相邻的两个字符串进行合并,若确定可以合并,则合并的字符串作为下一次合并的前一个字符串,并和下一个字符串继续进行合并;若确定不能合并,则直接取后两个相邻字符串进行合并,直到最后一个字符串;
[0156]然后,在合并结束后,对于不能合并的特征串,依次判断每一个特征串在第二会话中的报文应用层负载字节序中的起始位置值和在第一会话中的报文应用层负载字节序中的起始位置值是否相等时,若是,则进行保留,否则,进行舍弃;
[0157]最后,将所有合并后的字符串和保留的不能合并的字符串中全为0x00和Oxff的字符串舍弃后,获得mth_opt_Set [ i ] [ j ]。
[Ο?58] 步骤307:计算mth_opt_set[i][ j]的权值weight,具体计算方法为:
[0159]将111访_叩18的[丨][」]中长度为2的字符串的权值设置为1,以及将将111让_叩18的
[i][j]中长度大于2的字符串的权值设置为2,mth_opt_set[i][j]中所有字符串的权值相加的和,即为 mth_opt_set[ i ][ j]的权值 weight。
[0160]步骤308:判断weight是否不小于设定阈值,若是,则执行步骤309,否则,执行步骤310。
[0161]步骤309:将mth_0pt_Set[i][j]作为应用操作的数据特征,并基于报文信息和mth_opt_set[ i ] [ j ]创建识别应用操作的规则。
[0162]其中,上述应用操作为第一会话和第二会话对应的应用操作。
[0163]步骤310:j = j+Ι,即从数组app_data_2cd[pNum2]中取下一个元素。
[0164]步骤311:判断j是否小于pNum2,若是,则执行步骤304,否则,执行步骤312。
[0165]步骤312:1 = i+l&&j = 0,也就是说,遍历完app_data_2cd[pNum2]中的元素也没有匹配成功,则再取app_data_l st [pNuml ]中下一个元素,进行下一次循环,并再从app_data_2cd[pNum2]中的第一个元素开始进行遍历匹配。
[0166]步骤313:判断i是否小于pNuml,若是,则执行步骤301,否则,结束循环,说明从第一会话和第二会话中无法提取出有效的数据特征,不能构建识别应用操作的规则。
[0167]基于上述实施例,参阅图4所示,本发明实施例中,数据特征提取装置包括:
[0168]提取单元40,用于确定需要进行数据特征提取的第一会话和第二会话,并从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息;其中,上述第一会话和第二会话是同一个应用操作在不同时间所产生的,上述报文信息中至少包括报文应用层负载字节序;
[0169]匹配单元41,用于采用指定的匹配算法,依次根据从第一会话中提取的每一个报文应用层负载字节序构建相应的状态机,每构建一个状态机,将当前构建的状态机与从第二会话中提取的每一个报文应用层负载字节序依次进行匹配,每执行一次匹配,对当前获得的匹配结果进行迭代合并,并根据预设规则计算当前获得的经迭代合并后的匹配结果的权值,直到确定当前获得的权值不小于设定阈值为止,确定匹配成功并停止构建状态机及停止匹配,以及将当前获得的经迭代合并后的匹配结果作为上述应用操作的数据特征。
[0170]较佳的,从上述第一会话包含的报文中提取第一设定数目的报文信息,以及从上述第二会话包含的报文中提取第二设定数目的报文信息时,提取单元40具体用于:
[0171]依次从第一会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第一设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包括应用层负载长度;
[0172]依次从第二会话中读取报文,每读取一个报文,判断当前读取的一个报文的应用层负载长度是否大于0,且是否为重传报文,并在确定上述一个报文的应用层负载长度大于0,且不是重传报文时,从上述一个报文中提取报文信息,直至提取到第二设定数目的报文信息为止,停止读取报文;其中,报文信息中至少包
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1