一种字符串匹配方法及装置的制造方法_2

文档序号:8430714阅读:来源:国知局
法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0044]本发明实施例提供一种字符串匹配方法,如图1所示,包括:
[0045]步骤101、确定模式字符串首字符在待匹配的目标字符串中存在的各位置。
[0046]步骤102、当各位置中存在满足预设条件的位置时,确定该模式字符串在该目标字符串中存在,其中,对于满足预设条件的位置,从该目标字符串的满足预设条件的该位置的字符开始,该目标字符串与该模式字符串中的每对位置相同的字符均相同。
[0047]本发明实施例提供的上述图1所示的方法中,该模式字符串的字符数量通常比该目标字符串的字符数量少。
[0048]下面结合附图,用具体实施例对本发明提供的方法及装置和相应系统进行详细描述。
[0049]实施例1:
[0050]图2为本发明实施例提供的字符串匹配方法的流程图,具体包括如下处理步骤:
[0051]步骤201、将模式字符串首字符与待匹配的目标字符串的每个字符进行比对。
[0052]本步骤中,可以将模式字符串记为Ρ,Ρ= “ΡοΡη^ΛΡ的长度为m,目标字符串记为T,T= tn_i”,T的长度为n,m彡n,将模式字符串P的首字符Ptl与目标字符串T的每个字符Vt1, "Ilri进行比对。
[0053]步骤202、将该目标字符串中与该首字符相同的字符所在的各位置,确定为该首字符在该目标子符串中存在的各位直。
[0054]本步骤中,可以将确定的该首字符Ptl在该目标字符串中存在的各位置,保存在数组posi [i]=k中,I < i ^ n,0 ^ k ^ n_l, i表示pQ在该目标字符串中第i次出现,k表示P。在该目标字符串中第i次出现的位置k,位置k在该目标字符串中对应的字符为tk。
[0055]在确定该首字符在该目标字符串中存在的各位置之后,可以采用步骤203-步骤206或者步骤207-步骤210的处理流程,确定该该模式字符串在该目标字符串中是否存在。
[0056]步骤203、针对该模式字符串首字符在该目标字符串中存在的当前位置,比对从该目标字符串的当前位置的字符开始连续的字符与该模式字符串的位置相同的字符是否相同,如果是,进入步骤204,如果否,进入步骤206。
[0057]本步骤中,可以从该目标字符串的该当前位置的字符开始,比对该目标字符串的该当前位置的字符与该模式字符串的位置相同的字符是否相同,当该对字符相同时,继续比对该目标字符串的该当前位置的下一个字符与该模式字符串的位置相同的字符是否相同,以此类推。也可以从该目标字符串的该当前位置的字符开始,同时比对该目标字符串的该当前位置的字符与该模式字符串的位置相同的字符是否相同。
[0058]步骤204、当从该目标字符串的该当前位置的字符开始,该目标字符串与该模式字符串中的每对位置相同字符均相同,确定该当前位置满足预设条件。
[0059]步骤205、当确定该当前位置满足预设条件时,确定该模式字符串在该目标字符串中存在。
[0060]步骤206、当从该目标字符串的该当前位置的字符开始,该目标字符串与该模式字符串中的每对位置相同字符中存在不同的字符对时,选择该目标字符串与该模式字符串未进行比对的位置,作为新的当前位置,并返回步骤203。
[0061]本步骤中,可以按照该模式字符串首字符在该目标字符串中依次出现的顺序选择该目标字符串与该模式字符串未进行比对的位置,作为新的当前位置;也可以随机选择该目标字符串与该模式字符串未进行比对的位置,作为新的当前位置。
[0062]步骤207、针对该模式字符串首字符在该目标字符串中存在的当前位置,比对从该目标字符串的该当前位置的下一个字符开始连续的字符与该模式字符串的第二个字符开始位置相同的字符是否相同,如果是,进入步骤208,如果否,进入步骤210,
[0063]本步骤中,该模式字符串中的字符与该目标字符串中的字符的比对方法可以采用与上述步骤203相同的方法,在此不再进行详细描述。
[0064]步骤208、当从该目标字符串的该当前位置的下一个字符开始,该目标字符串与该模式字符串中第二个字符串开始的每对位置相同字符均相同,确定该当前位置满足预设条件。
[0065]步骤209、当确定该当前位置满足预设条件时,确定该模式字符串在该目标字符串中存在。
[0066]步骤210、当从该目标字符串的该当前位置的下一个字符开始,该目标字符串与该模式字符串中第二个字符串开始的每对位置相同字符中存在不同的字符对时,选择该目标字符串与该模式字符串未进行比对的位置,作为新的当前位置,并返回步骤207。
[0067]进一步的,当针对模式字符串首字符在该目标字符串中存在的所有位置,均没有满足预设条件的位置时,确定该模式字符串在该目标字符串中不存在。
[0068]通过本发明上述实施例1提供的方法,由于在对待匹配的目标字符串中确定是否存在模式字符串时,首先确定模式字符串首字符在待匹配的目标字符串中存在的各位置,避免了目标字符串中与模式串首字符相同的字符位置可能未进行字符比对的问题,提高了字符串匹配的准确度。
[0069]进一步的,上述字符串匹配方法可以应用在入侵检测中,下面通过实施例2对一种入侵检测方法进行描述。
[0070]实施例2:
[0071]图3为本发明实施例2提供的一种入侵检测方法的流程图,具体包括如下处理步骤:
[0072]步骤301、获取网络数据包中的字符串,作为待匹配的目标字符串。
[0073]步骤302、确定模式字符串首字符在待匹配的目标字符串中存在的各位置。
[0074]步骤303、当各位置中存在满足预设条件的位置时,确定发生入侵行为,其中,对于满足预设条件的位置,从该目标字符串的满足预设条件的该位置的字符开始,该目标字符串与所述模式字符串中的每对位置相同的字符均相同。
[0075]本发明实施例2提供的上述方法中,可以将已知的入侵转换为入侵模式字符串,并放入一个入侵模式字符串库中。将捕获的网络数据包通过协议分析,得到数据包中待匹配的目标字符串,例如:现捕获到一个以太网数据包,以16进制表示为:00A0 C98F FFC10000E86F AD59080045000190850040008006E34E C80000C800000050040B0050001533FB6FCC Cl E05018223828D10000474554202F2E2E256331656D33322F636D642E65786520485454。根据以太网协议数据包第13、14两字节为0800判断此包封装IP包,再根据IP包第10个字节是06,确定该IP数据包封装了 TCP包,TCP包第13、14字节为0050,即十进制80,该数据包封装的是一个HTTP协议的数据包,该HTTP协议的数据包中的字符串即为待匹配的目标字符串。获取待匹配的目标字符串之后,将入侵模式字符串库中的模式字符串与待匹配的目标字符串进行匹配,具体的处理方式与上述实施例1中字符串匹配的方法相同,在此不再进行详细描述。
[0076]通过本发明上述实施例2提供的方法,由于在对待匹配的目标字符串中确定是否存在模式字符串时,首先确定模式字符串首字符在待匹配的目标字符串中存在的各位置,避免了目标字符串中与模式串首字符相同的字符位置可能未进行字符比对的问题,提高了字符串匹配的准确度,也提高了入侵检测的准确度。
[0077]实施例3:
[0078]基于同一发明构思,根据本发明上述实施例提供的字符串匹配方法,相应地,本发明实施例3还提供了一种字符串匹配装置,其结构示意图如图4所示,具体包括:
[0079]第一确定单元401,用于确定模式字符串首字符在待匹配的目标字符串中存在的各位置;
[0080]第二确定单元402,用于当所述各位置中存在满足预设条件的位置时,确定所述模式字符串在所述目标字符串中存在,其中,对于满足预设条件的位置,从所述目标字符串的满足预设条件的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同的字符均相同。
[0081]进一步的,所述第二确定单元402,具体用于针对一个位置,比对从所述目标字符串的该位置的字符开始连续的字符与所述模式字符串的位置相同的字符是否相同;当从所述目标字符串的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同字符均相同,确定该位置满足所述预设条件。
[0082]
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1