CN113836367A - 一种字符反向匹配的方法及装置 - Google Patents
一种字符反向匹配的方法及装置 Download PDFInfo
- Publication number
- CN113836367A CN113836367A CN202111130164.2A CN202111130164A CN113836367A CN 113836367 A CN113836367 A CN 113836367A CN 202111130164 A CN202111130164 A CN 202111130164A CN 113836367 A CN113836367 A CN 113836367A
- Authority
- CN
- China
- Prior art keywords
- character
- characters
- target
- target keyword
- character string
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种字符反向匹配方法。该方法包括:将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将目标关键字中的字符,与在字符串中对应的字符分别进行匹配;若目标关键字中的任一字符,与在字符串中对应的字符不匹配,进一步获取字符串中与目标关键字的首字符对应的字符左相邻的下一个目标字符,并在预设的数组中查询;若在预设的数组中查询到目标字符,获取与目标字符对应的位置编号,并将位置编号的取值确定为偏移量M;将目标关键字向左偏移M个字符,并将目标关键字中的字符,与在字符串中对应位置上的字符分别继续进行匹配。以此类推,直到目标关键字中的字符,与在字符串中对应位置上的字符均匹配时停止。
Description
技术领域
本申请涉及字符匹配领域,尤其涉及一种字符反向匹配的方法及装置。
背景技术
字符串是计算机科学中的常见概念,在此基础上产生了如何在大量数据中快速查找开发人员想要的信息的问题。其中,字符串匹配算法在网络领域有着广泛的应用。比如拼写算法、语言翻译、数据压缩、搜索引擎、网络入侵检测等。
随着互联网的发展,越来越多的网络应用需要依赖字符串匹配算法,而网络数据急剧增加,使得常规的字符匹配算法的匹配速度无法满足对报文进行高速处理的需求。在实际应用中,常规的字符串匹配算法,通常采用的对字符串中的字符进行逐个匹配的方式,存在字符匹配的效率不高的问题;因此,如何提升字符串匹配算法的字符匹配效率,是本领域亟待解决的问题。
发明内容
针对上述技术问题,在本申请实施方式的第一方面中,提供一种字符反向搜索方法,技术方案如下:
一种字符反向匹配方法,所述方法包括:
将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
如果所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的下标包括与所述位置编号对应的所述目标关键字中的字符;
如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并将查询到的所述位置编号的取值确定为偏移量M;
将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
可选的,所述目标关键字,包括:
与预设的报文特征对应的关键字。
可选的,所述待匹配的报文,包括:
报文头和报文内容;其中,所述报文头对应的字符串中包括用于标识报文的特殊字符。
可选的,所述特殊字符,包括:
影响字符匹配的特殊字符。
可选的,所述影响字符匹配的特殊字符,包括:
在编译器中作为字符串结束符的“\0”字符。
可选的,所述待匹配的报文对应的字符串中被设置了字符匹配范围;其中,所述字符匹配范围不包括所述报文头对应的字符串。
可选的,还包括:
按照从左到右的顺序为所述目标关键字中的字符分别标记对应的位置编号;
将所述位置编号作为所述数组元素,将所述目标关键字中与所述位置编号对应的字符作为数组的下标,以创建所述预设的数组。
可选的,还包括:
如果在所述预设的数组中未查询到所述目标字符,获取所述目标关键字的字符长度,并将所述字符长度与1的和确定为所述偏移量M。
可选的,还包括:
当所述目标关键字中含有重复的字符时,所述预设的数组只含有所述重复的字符中第一次出现的字符。
可选的,还包括:
如果所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配,输出所述目标关键字在所述字符串中的位置。
在本申请实施方式的第二方面中,提供了一种介质;所述存储介质上存储有计算机指令,该指令被处理器执行时实现如下所述方法的步骤:
将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
如果所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的下标包括与所述位置编号对应的所述目标关键字中的字符;
如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并将查询到的所述位置编号的取值确定为偏移量M;
将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
在本申请实施方式的第三方面中,提出一种字符反向匹配装置,所述装置包括:
对齐模块:用于将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
目标字符获取模块:用于当所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配时,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的下标包括与所述位置编号对应的所述目标关键字中的字符;
偏移量查询模块:如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并将查询到的所述位置编号的取值确定为偏移量M;
偏移模块:用于将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
在本申请实施方式的第四方面中,供了一种计算设备,包括:多个处理器;用于存储处理器可执行指令的存储器;所述处理器通过运行所述可执行指令以实现如下所述的方法:
将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
如果所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的下标包括与所述位置编号对应的所述目标关键字中的字符;
如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并将查询到的所述位置编号的取值确定为偏移量M;
将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
本发明的实施例提供的技术方案可以包括以下有益效果:
本实施例中,一方面,在查询报文对应的字符串中是否包括目标关键字时,通过采用从右向左的顺序进行字符匹配,可以优先匹配报文内容中的字符,降低字符匹配次数,减少匹配时长。
另一方面,由于不再采用逐个字符匹配的方式,而是在每次字符匹配失败后,通过查询预设的数组获得位置编号,再将位置编号对应的取值作为偏移量M,将关键字往左移动M个字符,因此使得每一次匹配失败后,都可以尽可能的跳过多个字符,从而可以提高匹配效率。
第三方面,由于上述预设的数组,是基于上述目标关键字中包含的字符生成的,上述预设的数组中与上述目标关键字中包含的字符对应的位置编号,反应的是各个字符在上述目标关键字中真实的位置;因此,将上述位置编号作为偏移量,可以确保每一次的偏移,都是严格按照上述目标关键字中包含的字符在上述目标关键字中的真实位置来进行的,从而可以避免在进行偏移后不会跳过上述报文对应的字符串中与上述目标关键字中的字符相匹配的字符,保证字符匹配的准确度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请的字符反向搜索方法的流程示意图;
图2是本申请示出的一个实施例中预设的数组的示意图;
图3是本申请示出的一个实施例中含有重复字符的预设的数组的示意图;
图4是本申请示出的一个实施例将目标关键字与待匹配的报文右对齐的示意图;
图5是本申请示出的一个实施例中查询位置编号的示意图;
图6是本申请示出的一个实施例中预设的数组偏移的示意图;
图7是本申请的字符反向匹配装置的结构示意图;
图8是本申请根据本申请实施方式的一种计算设备的硬件架构图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。
应用场景概述
随着互联网的发展,越来越多的网络应用,都需要依赖深度报文检测技术对报文进行报文识别;例如,对报文进行协议识别,对报文进行入侵检测识别,等等。而深度报文检测技术,是互联网领域对报文进行检测的关键技术之一,通常可以采用字符串匹配算法,将报文对应的字符串与一组预定义的报文特征对应的关键字进行逐个字符的匹配,以判断报文中是否具有该报文特征。
而进行逐个字符匹配的方式,显然存在匹配效率不高的问题,可能会造成检测速度无法满足对报文进行高速处理的要求。
而且,目前的字符串匹配算法,通常采用的是从左到右的匹配顺序。例如,在将报文对应的字符串与一组预定义的报文特征对应的关键字进行匹配时,通常是从报文头的位置开始,逐个字符的向后匹配,直到报文对应的字符串中的所有字符均匹配完成。而在实际应用中,在报文的报文头部分,通常会包含一些用于标识报文的特殊字符,而这些特殊字符通常并不是报文的有效载荷,因此按照从左向右的顺序进行字符匹配,会依次和报文头中的这些特殊字符进行匹配,从而会增加很多无效匹配,对字符匹配效率造成影响。
发明构思
如前所述,在将报文对应的字符串与一组预定义的报文特征对应的关键字进行逐个字符的匹配的场景下,显然会存在字符匹配效率低下的问题。而且,按照从左向右的顺序的进行字符匹配,还会导致无效匹配次数较多,影响字符匹配的效率的问题。
有鉴于此,本说明书提供一种按照从右往左的字符匹配顺序,并且在匹配的过程中,将字符在待匹配的关键字中的真实位置作为偏移量进行字符偏移的字符匹配算法。
本说明书的核心技术构思在于:
可以先基于目标关键字中包含的字符生成一个数组。该数组中的数组元素包括按照从左到右的顺序为上述目标关键字中的字符标记的位置编号;该数组中的数组下标包括与上述位置编号对应的上述目标关键字中的字符。
在将报文对应的字符串与目标关键字进行字符匹配时,可以采用从右往左的顺序进行字符匹配,先将该目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,再将该目标关键字中的字符,与在上述字符串中对应位置上的字符分别进行匹配。
当目标关键字中的任一字符与在上述字符串对应位置上的字符不匹配时,进一步获取上述字符串中与该目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,在上述数组中查询该目标字符对应的位置编号,并将查询到的该位置编号的取值确定为偏移量M,再将目标关键字向左偏移M个字符,并将目标关键字中的字符与在上述字符串中对应位置上的字符分别继续进行匹配,以此类推,重复以上的匹配过程,直到上述目标关键字与上述字符串中对应位置上的字符均匹配时停止。
通过这种方式,
一方面,在查询报文对应的字符串中是否包括目标关键字时,通过采用从右向左的顺序进行字符匹配,可以优先匹配报文内容中的字符,降低字符匹配次数,减少匹配时长。
另一方面,由于不再采用逐个字符匹配的方式,而是在每次字符匹配失败后,通过查询预设的数组获得位置编号,再将位置编号对应的取值作为偏移量M,将关键字往左移动M个字符,因此使得每一次匹配失败后,都可以尽可能的跳过多个字符,从而可以提高匹配效率。
第三方面,由于上述预设的数组,是基于上述目标关键字中包含的字符生成的,上述预设的数组中与上述目标关键字中包含的字符对应的位置编号,反应的是各个字符在上述目标关键字中真实的位置;因此,将上述位置编号作为偏移量,可以确保每一次的偏移,都是严格按照上述目标关键字中包含的字符在上述目标关键字中的真实位置来进行的,从而可以避免在进行偏移后跳过报文对应的字符串中与上述目标关键字中的字符相匹配的字符,保证字符匹配的准确度。
示例性方法
下面将通过具体的实施例对本说明书的技术构思进行详细描述。
请参见图1,图1是一示例性实施例提供的一种字符反向匹配方法,上述方法可以应用在用于对报文进行检测的任意形式的网络设备上;例如,在实际应用中,上述网络设备可以是防火墙设备,或者具有防火墙功能的网络传输设备(比如交换机、路由器等等)。参见图1所示,该方法可以包括以下步骤:
S101,将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
上述目标关键字,是指需要在待匹配的报文对应的字符串中查找的关键字;例如,在一个例子中,以上述网络设备为防火墙设备为例,该防火墙设备可以将收到的报文与预设的报文攻击特征进行匹配,来针对该报文进行入侵检测识别,以确定该报文是否包含报文攻击特征;在这种情况下,上述目标关键字可以是与上述报文攻击特征对应的报文关键字。
其中,上述报文特征具体可以是报文的结构特征,也可以是报文的统计特征,本说明书中不对此进行限定。
在本说明书中,在将目标关键字和待匹配的报文对应的字符串进行字符匹配时,可以不再采用从左向右的顺序进行字符匹配,而是采用从右向左的顺序进行字符匹配。
在字符匹配开始之后,可以首先可以将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理。
例如,在实现时,可以先获取目标关键字的字符长度L,在第一次匹配开始之前,先从待匹配的报文对应的字符串中从右端向左取L个字符,再将该L个字符与上述目标关键字中的字符分别进行对齐。
在进行右对齐处理完成之后,可以进一步将该目标关键字中的字符,与在上述字符串中对应位置上的字符分别进行匹配。
其中,需要说明的是,在实际应用中,报文通常可以包含有报文头和报文内容(也称为报文载荷)两部分,而报文头对应的字符串中通常还会包含有用于标识报文的特殊字符。对于这些特殊字符来说,通常是不需要进行字符匹配的无效字符,而且这些特殊字符中还可能包含一些会影响字符匹配过程的特殊字符。
例如,在字符串的编译过程中,系统会自动在字符串结尾添加标识报文结束字符的结束符“\0”,而该结束符“\0”是计算机领域表示结束的通用字符;因此,在字符匹配的过程中,当匹配到报文对应的字符串中的结束符“\0”时,可能会错误地导致字符匹配提前结束,而对整个的字符匹配造成影响。
基于此,在本说明书中,还可以进一步为待匹配的报文对应的字符串设置字符匹配范围,来将报文头中的特殊字符排除在字符匹配的范围之外。
在示出的一种实施方式中,为待匹配的报文对应的字符串中设置的字符匹配范围,具体可以不包括该报文的报文头对应的字符串。
例如,假定获取到的待匹配的报文对应的字符串为“aus:\r\n\0:adminismaster”,“aus:\r\n\0:”表示报文头,“adminismaster”为报文内容,在此基础上,可以将待匹配的报文对应的字符串的后13位“adminismaster”作为字符匹配的范围,而将报文头排除在字符匹配的范围之外。
S102,如果所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的数组下标包括与所述位置编号对应的所述目标关键字中的字符;
步骤S103,如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并将查询到的所述位置编号的取值确定为偏移量M;
在上述匹配过程中,可以从目标关键字和上述字符串的尾字符开始,按照从右往左的顺序,将目标关键字中的字符和在上述字符串中对应位置上的字符进行逐个字符匹配。
当目标关键字中的任一字符,与在上述字符串中对应位置上的字符不匹配时,此时匹配失败,可以进一步对目标关键字进行偏移,偏移后再次重新进行匹配。
其中,上述偏移的偏移量,具体可以通过查询预设的数组得到。
上述预设的数组,具体可以是基于上述目标关键字中包含的字符生成。其中,该预设的数组中的数组元素,具体可以包括按照从左到右的顺序为上述目标关键字中的字符标记的位置编号。上述预设的数组中的数组下标,具体可以包括与上述位置编号对应的上述目标关键字中的字符。
在示出的一种实施方式中,在构建该预设的数组时,具体可以按照从左到右的顺序先为上述目标关键字中的字符分别标记对应的位置编号;再将上述目标关键字中的各字符对应的位置编号作为数组元素,将上述目标关键字中与上述位置编号对应的字符作为数组的下标,来创建上述预设的数组。
例如,假定上述目标关键为“admin”,在基于该目标关键中的字符来创建上述预设的数组时,可以先为该目标关键字中的字符按照从左往右的顺序,依次为上述目标关键字中的字符分别标记位置编号;比如,可以从1开始,按照每次递增1的幅度,对上述目标关键字中的字符依次进行编号,字符“a”,“d”,“m”,“i”,“n”对应的位置编号分别为“1”,“2”,“3”,“4”,“5”。然后将为上述目标关键字中的字符标记的位置标号作为数组元素,再将与各个位置标号对应的字符作为数组下标,来创建上述预设的数组。最终基于上述字符串“admin”创建的数组,具体可以如图2所示。
其中,需要说明的是,在实际应用中,上述目标关键字中可能会包括重复的字符。例如,假设目标关键字为“aadmin”,此时该目标关键字中包括重复的字符“a”。当目标关键字中含有重复的字符时,此时上述预设的数组中,可以只含有重复的字符中第一次出现的字符。
例如,假设目标关键字为“aadmin”,目标关键字的长度为6,目标关键字中字符按从左往右的顺序依次标记的位置编号为“1”,“2”,“3”,“4”,“5”,“6”,在将这些位置编号作为数组下标时,可以仅将与位置编号“1”对应的字符“a”(即首次出现的重复字符)写入上述数组中。在这种情况下,上述预设的数组可以如图3所示,该数组中的数组元素包括“1”,“3”,“4”,“5”,“6”。
在本说明书中,当目标关键字中的任一字符,与在上述字符串中对应位置上的字符不匹配时,可以先获取该字符串中与上述目标关键字的首字符的位置对应的字符,再进一步获取与该字符左相邻的下一个目标字符。然后,可以将该目标字符作为查询索引,在预设的数组的下标中查询该目标字符,如果该数组的下标中存在该目标字符,则可以返回该数组中与该目标字符对应的位置编号。此时,偏移量M的数值等于位置编号的数值。
在示出的一种实施方式中,如果在预设的数组中未查询到该目标字符,此时可以获取该目标关键字的字符长度,并将该字符长度与1的和确定为偏移量M。通过这种方式,可以使偏移量达到最大值,降低匹配次数。
S104,将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
当确定出上述偏移量M后,可以将上述目标关键字继续向左偏移M个字符,使得目标关键字与待匹配的报文的字符串重新对齐,并按照相同的方式,继续进行匹配,并重复执行步骤S101-S103步骤,以此类推,直到上述目标关键字中的字符,与待匹配的报文对应的字符串中对应位置上的字符均匹配时停止。
在示出的一种实施方式中,在通过重复执行步骤S101-S103来进行字符匹配的过程中,如果上述目标关键字中的字符,与在上述字符串中对应位置上的字符均匹配时,还可以输出该目标关键字在上述字符串中的位置。
当然,在通过重复执行步骤S101-S103来进行字符匹配的过程中,当按照以上描述的偏移方式,偏移至待匹配的报文对应的字符串最左端后,此时无法再次偏移,假设此时上述目标关键字与上述报文对应的字符串仍然无法完全匹配,表明上述报文对应字符串中,并不包含该目标关键字,此时该匹配过程将结束。
以下通过一个具体的实施例对本说明书的技术方案进行详细描述。
请参见图4,图4是本申请示出的一个具体的实施例将目标关键字与待匹配的报文右对齐的示意图;
假设待匹配的报文对应的字符串为“aus:\r\n\0:adminismaster”,待匹配的报文的长度为24,目标关键字为“admin”,目标关键字的长度为5。
由于目标关键字的长度为5,所以第一次匹配时,可以从待匹配的报文“aus:\r\n\0:adminismaster”按照从右往左的顺序,取5个字符“aster”与目标关键字“admin”对齐。
除此之外,还可以将待匹配的报文后13位“adminismaster”设置为字符匹配的范围。
其中,基于上述目标关键字“admin”中的字符生成的预设的数组,可以如图2所示,生成上述预设的数组的过程不再赘述。
在右对齐之后,可以将目标关键字中的字符与待匹配的报文对应的字符串中的字符按照从右往左的顺序依次匹配。
首先将图4中目标关键字的尾字符“n”与字符串中对应的字符“r”进行匹配,因为“n”和“r”不匹配,所以需要进一步获取目标字符进行后续匹配,该目标字符是目标关键字首字符“a”在字符串中对应的字符的左相邻的下一个字符“m”。
请参见图5,根据目标字符“m”查询预设的数组得到的位置编号“3”,目标字符“m”在数组中存在对应的位置编号,所以偏移量的数值等于位置编号的数值,即偏移量为3,将目标关键字“admin”向左偏移3个字符,偏移后如图6所示。此时,目标关键字“admin”与待匹配的报文“aus:\r\n\0:adminismaster”中“ismas”对齐,首先比较二者的尾字符,“n”和“s”不匹配,获取待匹配的报文中下一个目标字符“n”,查询预设数组得到位置编号“5”,再将目标关键字向左偏移5个字符,此时,目标关键字“admin”与待匹配的报文“aus:\r\n\0:adminismaster”中“admin”对齐,将二者按照从右向左的顺序逐字比对,二者对应位置上的字符均匹配时,停止匹配。
上述目标字符还可以不和目标关键字的下标相同,此时在预设的数组中查询上述目标字符,偏移量为目标关键字的长度L与1的和,目标关键字“admin”的长度为5,所以偏移量为5+1=6;匹配结束后,还可以输出目标关键字在待匹配的报文中的位置。若待匹配的报文中没有目标关键字的内容,那么当匹配到待匹配的报文最左端时结束匹配。识别是否到达待匹配的报文最左端有多种实现方式,如可以通过待匹配的报文长度与总偏移量进行计算,也可以通过在待匹配报文左端设置用于标记结束的字符等,本申请不对其进行限定。
在本申请的示例性实施例中,还提供一种字符反向匹配装置。参见图7所示,该装置可以包括:
对齐模块110,用于将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
目标字符获取模块120,用于当所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配时,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的数组下标包括与所述位置编号对应的所述目标关键字中的字符;
偏移量查询模块130,用于如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并根据将查询到的所述位置编号的取值确定为偏移量M;
偏移模块140,用于将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
在本申请的示例性实施例中,还提供了一种能够实现上述方法的计算设备。
本说明书字符反向匹配装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在字符反向匹配的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本说明书实施例字符反向匹配装置所在计算机设备的一种硬件结构图,除了图8所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中装置331所在的服务器或电子设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施例的方法。
在本申请的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施例的步骤。
根据本申请的实施例的用于实现上述方法的程序产品,可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本申请的其他实施例。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本申请的精神和原理,但是应该理解,本申请并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (13)
1.一种字符反向匹配方法,其特征在于,所述方法包括:
将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
如果所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的数组下标包括与所述位置编号对应的所述目标关键字中的字符;
如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并将查询到的所述位置编号的取值确定为偏移量M;
将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
2.根据权利要求1所述的方法,其特征在于,所述目标关键字,包括:
与预设的报文特征对应的关键字。
3.根据权利要求1所述的方法,其特征在于,所述待匹配的报文,包括:
报文头和报文内容;其中,所述报文头对应的字符串中包括用于标识报文的特殊字符。
4.根据权利要求3所述的方法,其特征在于,所述特殊字符,包括:
影响字符匹配的特殊字符。
5.根据权利要求4所述的方法,其特征在于,所述影响字符匹配的特殊字符,包括:
在编译器中作为字符串结束符的“\0”字符。
6.根据权利要求4所述的方法,其特征在于,所述待匹配的报文对应的字符串中被设置了字符匹配范围;其中,所述字符匹配范围不包括所述报文头对应的字符串。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照从左到右的顺序为所述目标关键字中的字符分别标记对应的位置编号;
将所述位置编号作为所述数组元素,将所述目标关键字中与所述位置编号对应的字符作为数组的下标,以创建所述预设的数组。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果在所述预设的数组中未查询到所述目标字符,获取所述目标关键字的字符长度,并将所述字符长度与1的和确定为所述偏移量M。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述目标关键字中含有重复的字符时,所述预设的数组只含有所述重复的字符中第一次出现的字符。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配,输出所述目标关键字在所述字符串中的位置。
11.一种字符反向匹配装置,其特征在于,该装置包括:
对齐模块:用于将目标关键字的尾字符和待匹配的报文对应的字符串的尾字符进行右对齐处理,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别进行匹配;
目标字符获取模块:用于当所述目标关键字中的任一字符,与在所述字符串中对应位置上的字符不匹配时,进一步获取所述字符串中与所述目标关键字的首字符的位置对应的字符左相邻的下一个目标字符,并在预设的数组中查询所述目标字符;其中,所述预设的数组为基于所述目标关键字中包含的字符生成;所述预设的数组中的数组元素包括按照从左到右的顺序为所述目标关键字中的字符标记的位置编号;所述预设的数组中的数组下标包括与所述位置编号对应的所述目标关键字中的字符;
偏移量查询模块:用于如果在所述预设的数组中查询到所述目标字符,获取与所述目标字符对应的位置编号,并根据将查询到的所述位置编号的取值确定为偏移量M;偏移模块:用于将所述目标关键字向左偏移M个字符,并将所述目标关键字中的字符,与在所述字符串中对应位置上的字符分别继续进行匹配,以此类推,直到所述目标关键字中的字符,与在所述字符串中对应位置上的字符均匹配时停止。
12.一种存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-10中任一项所述方法的步骤。
13.一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111130164.2A CN113836367B (zh) | 2021-09-26 | 2021-09-26 | 一种字符反向匹配的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111130164.2A CN113836367B (zh) | 2021-09-26 | 2021-09-26 | 一种字符反向匹配的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113836367A true CN113836367A (zh) | 2021-12-24 |
CN113836367B CN113836367B (zh) | 2023-04-28 |
Family
ID=78970534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111130164.2A Active CN113836367B (zh) | 2021-09-26 | 2021-09-26 | 一种字符反向匹配的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113836367B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303405A (zh) * | 2023-05-12 | 2023-06-23 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953006A (en) * | 1992-03-18 | 1999-09-14 | Lucent Technologies Inc. | Methods and apparatus for detecting and displaying similarities in large data sets |
WO2010129330A1 (en) * | 2009-04-28 | 2010-11-11 | Perceptive Software, Inc. | Automatic forms processing systems and methods |
CN102063510A (zh) * | 2011-01-17 | 2011-05-18 | 珠海全志科技有限公司 | 字符串的匹配查找方法 |
CN103577598A (zh) * | 2013-11-15 | 2014-02-12 | 曙光信息产业(北京)有限公司 | 模式串与文本串的匹配方法和装置 |
CN104102877A (zh) * | 2013-04-08 | 2014-10-15 | 南京理工大学常熟研究院有限公司 | 一种基于改进的bm算法的移动智能终端的入侵检测方法 |
CN104519056A (zh) * | 2014-12-15 | 2015-04-15 | 广东科学技术职业学院 | 一种基于双跳跃的单模式匹配方法 |
CN107341224A (zh) * | 2017-06-30 | 2017-11-10 | 北方工业大学 | 一种字符串的匹配方法及装置 |
CN107609032A (zh) * | 2017-08-09 | 2018-01-19 | 联动优势科技有限公司 | 一种匹配方法及电子设备 |
CN108647299A (zh) * | 2018-05-09 | 2018-10-12 | 北京启明星辰信息安全技术有限公司 | 生僻字符匹配方法、字符串模式匹配方法及存储介质 |
CN109933644A (zh) * | 2019-03-22 | 2019-06-25 | 中国农业银行股份有限公司 | 一种字符串匹配方法及装置 |
CN110909214A (zh) * | 2019-11-15 | 2020-03-24 | 国网安徽省电力有限公司安庆供电公司 | 基于kmp匹配算法的字符串快速匹配方法 |
CN111159490A (zh) * | 2019-12-13 | 2020-05-15 | 杭州迪普科技股份有限公司 | 一种模式字符串的处理方法、装置及设备 |
CN112069303A (zh) * | 2020-09-17 | 2020-12-11 | 四川长虹电器股份有限公司 | 字符串的匹配查找方法、装置及终端 |
-
2021
- 2021-09-26 CN CN202111130164.2A patent/CN113836367B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953006A (en) * | 1992-03-18 | 1999-09-14 | Lucent Technologies Inc. | Methods and apparatus for detecting and displaying similarities in large data sets |
WO2010129330A1 (en) * | 2009-04-28 | 2010-11-11 | Perceptive Software, Inc. | Automatic forms processing systems and methods |
CN102063510A (zh) * | 2011-01-17 | 2011-05-18 | 珠海全志科技有限公司 | 字符串的匹配查找方法 |
CN104102877A (zh) * | 2013-04-08 | 2014-10-15 | 南京理工大学常熟研究院有限公司 | 一种基于改进的bm算法的移动智能终端的入侵检测方法 |
CN103577598A (zh) * | 2013-11-15 | 2014-02-12 | 曙光信息产业(北京)有限公司 | 模式串与文本串的匹配方法和装置 |
CN104519056A (zh) * | 2014-12-15 | 2015-04-15 | 广东科学技术职业学院 | 一种基于双跳跃的单模式匹配方法 |
CN107341224A (zh) * | 2017-06-30 | 2017-11-10 | 北方工业大学 | 一种字符串的匹配方法及装置 |
CN107609032A (zh) * | 2017-08-09 | 2018-01-19 | 联动优势科技有限公司 | 一种匹配方法及电子设备 |
CN108647299A (zh) * | 2018-05-09 | 2018-10-12 | 北京启明星辰信息安全技术有限公司 | 生僻字符匹配方法、字符串模式匹配方法及存储介质 |
CN109933644A (zh) * | 2019-03-22 | 2019-06-25 | 中国农业银行股份有限公司 | 一种字符串匹配方法及装置 |
CN110909214A (zh) * | 2019-11-15 | 2020-03-24 | 国网安徽省电力有限公司安庆供电公司 | 基于kmp匹配算法的字符串快速匹配方法 |
CN111159490A (zh) * | 2019-12-13 | 2020-05-15 | 杭州迪普科技股份有限公司 | 一种模式字符串的处理方法、装置及设备 |
CN112069303A (zh) * | 2020-09-17 | 2020-12-11 | 四川长虹电器股份有限公司 | 字符串的匹配查找方法、装置及终端 |
Non-Patent Citations (3)
Title |
---|
姜庆民 等: "面向入侵检测系统的模式匹配算法研究" * |
胡佳 等: "Snort中字符匹配算法的分析及优化研究" * |
蔡婷 等: "一种改进的字符串模式匹配算法" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303405A (zh) * | 2023-05-12 | 2023-06-23 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
CN116303405B (zh) * | 2023-05-12 | 2023-11-10 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113836367B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590214B (zh) | 搜索关键词的推荐方法、装置及电子设备 | |
US8516456B1 (en) | Compact instruction format for content search systems | |
US20150135061A1 (en) | Systems and methods for parallel traversal of document object model tree | |
US20130290356A1 (en) | Submatch extraction | |
US9336194B2 (en) | Submatch extraction | |
CN112540862A (zh) | 一种接口文档数据生成方法、装置、设备及存储介质 | |
CN111552640A (zh) | 一种代码检测方法、装置、设备及存储介质 | |
CN111241496B (zh) | 确定小程序特征向量的方法、装置和电子设备 | |
CN110851136A (zh) | 数据获取方法、装置、电子设备及存储介质 | |
CN113836367B (zh) | 一种字符反向匹配的方法及装置 | |
CN114760369A (zh) | 一种协议元数据提取方法、装置、设备及存储介质 | |
CN110795069A (zh) | 代码分析方法、智能终端及计算机可读存储介质 | |
CN113468534B (zh) | 针对安卓应用程序的漏洞检测方法及相关装置 | |
CN105718463A (zh) | 关键字模糊匹配方法及装置 | |
CN112395880B (zh) | 结构化三元组的纠错方法、装置、计算机设备及存储介质 | |
CN108304467B (zh) | 用于文本间匹配的方法 | |
CN111240790B (zh) | 一种应用的多语言适配方法、装置、客户端和存储介质 | |
CN111061927B (zh) | 数据处理方法、装置及电子设备 | |
CN115296878B (zh) | 一种报文检测方法、装置、电子设备及存储介质 | |
CN113221173A (zh) | 一种密文处理方法、装置、设备及存储介质 | |
CN112784596A (zh) | 一种识别敏感词的方法和装置 | |
CN113821211A (zh) | 命令解析方法、装置、存储介质和计算机设备 | |
CN112241621A (zh) | 一种通过用户代理识别客户端环境的方法和装置 | |
CN111339776A (zh) | 简历解析方法、装置、电子设备和计算机可读存储介质 | |
CN110019684B (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 |