CN117975485B - 一种字符串的扫描方法、装置、电子设备及存储介质 - Google Patents
一种字符串的扫描方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117975485B CN117975485B CN202410361724.2A CN202410361724A CN117975485B CN 117975485 B CN117975485 B CN 117975485B CN 202410361724 A CN202410361724 A CN 202410361724A CN 117975485 B CN117975485 B CN 117975485B
- Authority
- CN
- China
- Prior art keywords
- character
- scanning
- state
- target
- preset
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000007704 transition Effects 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 2
- 230000014509 gene expression Effects 0.000 abstract description 10
- 238000012545 processing Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 101100481876 Danio rerio pbk gene Proteins 0.000 description 1
- 101100481878 Mus musculus Pbk gene Proteins 0.000 description 1
- 101100261006 Salmonella typhi topB gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 101150032437 top-3 gene Proteins 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/19—Recognition using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Character Input (AREA)
Abstract
本申请提供了一种字符串的扫描方法、装置、电子设备及存储介质,涉及数据处理领域,其中,方法包括响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;针对当前的未处理字符组,确定未处理字符组中是否存在非信任字符;若不存在,则更新未处理字符组;若存在,则确定首个非信任字符为目标字符,根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式,进而避免了大量的扫描状态占用资源,同时提高了正则表达式匹配中字符串扫描的速度。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种字符串的扫描方法、装置、电子设备及存储介质。
背景技术
正则表达式规则可以等价编译转化成确定型有穷自动机(DFA)进行字符串的扫描,尽管现有技术中已经对DFA(确定型有穷自动机)的扫描速度进行加速研究,实现了多步长的字符串扫描,提高了扫描速度,但多步长扫描存在会导致DFA状态转移表膨胀爆炸。因此,正则表达式匹配中字符串的扫描速度仍亟待提高。
发明内容
有鉴于此,本申请的目的在于提供一种字符串的扫描方法、装置、电子设备及存储介质,以提高正则表达式匹配时字符串的扫描速度。
第一方面,本申请提供了一种字符串的扫描方法,方法包括响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;针对当前的未处理字符组,确定未处理字符组未处理字符组中是否存在非信任字符;若不存在,则更新未处理字符组;若存在,则确定首个非信任字符为目标字符,根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式。
优选的,根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式的步骤,具体包括:确定多个预设扫描状态值是否均相等;若均相等,则确定预设扫描状态值是否在目标访问状态集合内,若是,则更新未处理字符组,若否,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式;若不是均相等,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式。
优选的,通过以下方式确定出信任字符和非信任字符:基于预设好的DFA状态转移表对随机字符串进行扫描,以获取每个字符对应的目标访问状态值;基于统计出的所有目标扫描状态的值的访问频率,确定出前K个目标访问状态值构成目标访问状态集合;针对DFA状态转移表中每个字符所对应的状态列,确定该状态列的前K个状态值中是否存在目标访问状态集合之外的状态值;若是,则确定该字符为非信任字符;若否,则确定该字符为信任字符。
优选的,预设扫描状态值包括第一预设扫描状态值,针对目标字符,通过以下方式确定出多个第一预设扫描状态值:针对确定出的每个目标访问状态值,以该目标访问状态值为当前状态值,基于DFA状态转移表对目标字符进行扫描,以获得对应的第一预设扫描状态值。
优选的,预设扫描状态值包括第二预设扫描状态值,针对目标字符,通过以下方式确定出多个第二预设扫描状态值:针对每个第一预设扫描状态值,以该第一预设扫描状态为当前状态值,基于DFA状态转移表对目标字符进行扫描,以获得对应的第二预设扫描状态值。
优选的,当确定多个预设扫描状态值不是均相等时,还包括:针对每个预设扫描状态值,确定该预设扫描状态值是否与可接受状态值匹配;若是,则对当前目标字符进行标记,以基于预设好的DFA状态转移表对待测字符串进行扫描,以确定待测字符串是否命中预设规则。
优选的,当确定退出快速扫描模式时,则基于预设好的DFA状态转移表对待测字符串进行扫描,以确定待测字符串未处理字符组是否命中预设规则。
第二方面,本申请提供了一种字符串的扫描装置,装置包括:
响应模块,用于响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;
分析模块,用于针对当前的未处理字符组,确定未处理字符组未处理字符组中是否存在非信任字符;若不存在,则更新未处理字符组;若存在,则确定首个非信任字符为目标字符,根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式。
第三方面,本申请还提供一种电子设备,包括:处理器、存储器和总线,存储器存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储器之间通过总线通信,机器可读指令被处理器执行时执行如上述的一种字符串的扫描方法的步骤。
第四方面,本申请还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的一种字符串的扫描方法的步骤。
本申请提供的一种字符串的扫描方法、装置、电子设备及存储介质,其中,方法包括响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;针对当前的未处理字符组,确定未处理字符组未处理字符组中是否存在非信任字符;若不存在,则更新未处理字符组;若存在,则确定首个非信任字符为目标字符,根据多个目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式。这样,通过对待测字符串中分组分析,判断其中是否存在非信任字符以及是否扫描后会存在可接受状态,确定是否满足快速扫描条件,若满足,则可以跳过对当前未处理字符组的扫描,进而避免了大量的扫描状态占用资源,同时提高了正则表达式匹配中字符串扫描的速度。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例所提供的一种DFA状态转移表的示意图;
图2为本申请实施例所提供的一种字符串的扫描方法的流程图;
图3为本申请实施例所提供的一种分析扫描状态步骤的流程图;
图4为本申请实施例所提供的一种字符串的扫描装置的结构示意图;
图5为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可应用于正则表达式匹配中的字符串扫描。
正则表达式规则可以等价编译转化成确定型有穷自动机(DFA)进行字符串的扫描。在字符串扫描之前,通常根据需要为正则表达式规则编译等价转化为对应的DFA状态转移表,用于对字符串的扫描。同时,可以确定出对应的可接受状态值以及非接受状态值。
传统的DFA匹配方式通常会采用串行扫描的方式,即单次只提取1个字符进行扫描。
以字符组T=“abca”为例,假设初始状态S0=1,基于如图1所示的DFA状态转移表依次进行扫描,则最终获得的状态序列变化过程为(S0,S1,S2,S3,S4)=(1,2,3,5,2),即扫描该字符组后,扫描状态由初始的S0=1变为了S4=2,但其中出现了可接受状态值S3=5,则该字符组则可以确定命中了匹配规则。
这里的匹配规则可以是用于对异常流量的识别等。例如,字符组T中存在的异常流量可以是“bca”或“abca”。
可以理解的是,如果对于大体量的字符串,按照前述扫描方法进行扫描则状态序列会消耗大量匹配时间,基于此,本申请实施例提供了一种字符串的扫描方法、装置、电子设备及存储介质。
实施例一
请参阅图2,图2为本申请实施例所提供的一种字符串的扫描方法的流程图。
在扫描之前的预处理阶段,可以通过以下方式确定出信任字符和非信任字符:
基于预设好的DFA状态转移表对随机字符串进行扫描,以获取每个字符对应的目标访问状态值。基于统计出的所有目标扫描状态的值的访问频率,确定出前K个目标访问状态值构成目标访问状态集合。
针对DFA状态转移表中每个字符所对应的状态列,确定该状态列的前K个状态值中是否存在目标访问状态集合之外的状态值。若是,则确定该字符为非信任字符。若否,则确定该字符为信任字符。
这里通过对随机字符串进行扫描,进而对每个扫描后得到的状态值进行统计。例如,这里以随机字符串作为输入,统计出DFA状态转移表中最常被访问的K个状态值,例如,1、2、……、I,可以是连续或非连续的,当不连续时,则可以将状态值前移转换为连续状态。前K个状态为非接受状态,剩余状态为非接受状态或可接受状态。
进而,以DFA状态转移表的字符行可以为ASCII表的256个字符,针对每个字符,如果该字符对应的状态列中的前K个状态值中若包含大于I的状态值,则该字符可以确定为非信任字符。类似的,如果该字符对应的状态列中的前K个状态值中没有大于I的状态值,则该字符为信任字符。
如图2中所示,本申请实施例提供的一种字符串的扫描方法,包括:
S1、响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N。
这里,假设N=100,M=5,则首次提取未处理字符组时,则从待测字符串中的首个字符开始,从左到右提取第1至5个字符,作为未处理字符组,下一次更新未处理字符组时,则顺次选择第6至10个字符,作为更新后的未处理字符组。
在扫描起始阶段,可以设置step=0,L11=0,L12=0。其中,step用于记录已处理的字符数, L11为距离第step个字符最近的汇聚点字符位置,L12记录对应于L11的状态值。
S2、针对当前的未处理字符组,确定未处理字符组中是否存在非信任字符。
对于当前的未处理字符组,其中可能存在一个或多个非信任字符,也可能不存在非信任字符。
S3、若不存在,则更新未处理字符组。
若当前的未处理字符组中不存在非信任字符,则step=step+M ,并返回执行步骤S2。
S4、若存在,则确定首个非信任字符为目标字符,根据多个预设扫描状态值,确定是否退出快速扫描模式。
若当前的未处理字符组中存在非信任字符,假设当前的未处理字符组中第X个字符为首个非信任字符,则确定为当前的目标字符。同时令step=step+X。其中,X小于等于M。
如图3所示,图3为本申请实施例所提供的一种分析扫描状态步骤的流程图。根据目标字符对应的多个预设扫描状态值,确定是否退出快速扫描模式的步骤,具体包括:
S40、确定多个预设扫描状态值是否均相等。
在步骤S40中,预设扫描状态值包括第一预设扫描状态和第二预设扫描状态。
当目标字符为首个非信任字符时,则预设扫描状态值为第一预设扫描状态,针对目标字符,通过以下方式确定出多个第一预设扫描状态值:
针对确定出的每个目标访问状态值,以该目标访问状态值为当前状态值,基于DFA状态转移表对目标字符进行扫描,以获得对应的第一预设扫描状态值。
具体的,未处理字符组可以为“adcac”,以最常被访问的K个目标访问状态值为初始状态值,扫描获得的下一状态值分别作为多个第一预设扫描状态值。
例如,非信任字符c,分别以初始状态值(1,2,3,4,5)对目标字符c进行扫描,则可以对应的获得5个第一预设扫描状态值记为目标序列(1,1,5,1,1)。
也可以直接将在DFA状态转移表中目标字符的状态列中的前K个目标访问状态值为多个第一预设扫描状态值。
例如,非信任字符d,其对应的状态列的前K=3个目标访问状态值(4,4,4)作为第一预设扫描状态值。
当目标字符为更新后的目标字符时,如,非信任字符d为首个目标字符,更新后的目标字符为位于d后的下一个字符c。
此时,针对位于非信任字符后的目标字符,通过以下方式确定出多个第二预设扫描状态值:
针对每个第一预设扫描状态值,以该第一预设扫描状态为当前状态值,基于DFA状态转移表对目标字符进行扫描,以获得对应的第二预设扫描状态值。
例如,目标字符为c,则以(4,4,4)为初始状态值,分别对目标字符c进行扫描,获得第二预设扫描状态值对应的目标序列(1,1,1)。S41、若不是均相等,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式。
示例性的,若当前的目标字符所对应的目标序列为(2,1,2),不是全部状态值相等的且目标序列不包含可接受状态5(假设可接受状态为5),则获取下一个字符作为目标字符(并令step=step+1),返回执行S40中确定第二预设扫描状态是否均相等的步骤。直到更新目标字符的次数达到预设更新次数。则退出快速扫描模式,从头开始对待测字符串进行常规扫描。
示例性的,若当前的目标字符所对应的目标序列为(1,1,5),不是全部状态值相等且目标序列包含可接受状态5,则以L12为初始状态,L11为当前目标字符位置,获取当前字符作为目标字符,基于DFA状态转移表对目标字符进行扫描直到第step+1位置的字符,并返回执行步骤S1。
S42、若均相等,则确定第一预设扫描状态值是否在目标访问状态集合内。
当确定出目标字符所对应的目标序列中的所有预设扫描状态值均相等时,则确定这个预设扫描状态值是否在目标访问状态结合内,即是否小于K。
若是,则更新未处理字符组。令L11=step,L12等于当前状态值。
例如,预设扫描状态值1小于I=3,则返回执行步骤S1,以当前目标字符的下一字符为未处理字符组中的首个字符,更新未处理字符组,并且将1更新为当前状态值,令L12=1,L11=3(c为“adcac”的第3个字符位置),以用于后续扫描作为初始扫描值。
若否,则更新目标字符,执行步骤S40,当更新次数满足条件后,则退出快速扫描模式。
如第一预设扫描状态值4大于状态值I=3,则说明当前的扫描状态已经跳转出topK=top3={1,2,3}范围外,则以4作为初始状态值,对当前未处理字符组中的下一个字符进行扫描,获得多个第二预设扫描状态值,并确定多个第二预设扫描状态值是否相等直到更新次数达到预设次数,则退出快速扫描模式。
当确定退出快速扫描模式时,则基于预设好的DFA状态转移表对待测字符串进行扫描,以确定待测字符串未处理字符组是否命中预设规则。此时,扫描范围为待测字符串中上一次被标记的字符到当前标记的字符。
常规扫描模式的扫描结果则指出当前扫描范围内的字符中是否存在命中规则的字符组。随后,可以以未处理的字符为未处理字符组,重新返回运行快速扫描模式。
在该实施例中,本申请提供了一种字符串的扫描方法,通过对待测字符串中分组分析,判断其中是否存在非信任字符以及是否扫描后会存在可接受状态,确定是否满足快速扫描条件,若满足,则可以跳过对当前未处理字符组的扫描,进而避免了大量的扫描状态占用资源,同时提高了正则表达式匹配中字符串扫描的速度。
实施例二
在该实施例中,在步骤S41中,在更新目标字符之前,可以针对每个预设扫描状态值,确定该预设扫描状态值是否与可接受状态值匹配。即,确定当前的第一/第二预设扫描状态值中是否存在可接受状态值。
若是,则对当前目标字符进行标记,以基于预设好的DFA状态转移表对待测字符串进行扫描,以确定待测字符串是否命中预设规则。
此时,扫描范围为待测字符串的第L11个位置的字符(最邻近的已标记字符)到当前目标字符。
示例性的,若多个第一预设扫描状态值中存在至少一个第一预设扫描状态值为可接受状态值。当前处理过的字符中存在命中规则的可能性,需要后续扫描判断。这样,在正则表达式匹配中,只需要对第L11个位置的字符(最邻近的已标记字符)到标记的当前目标字符进行扫描,确定其是否命中规则,提高了匹配速率。
实施例三
参阅图4,图4为本申请一实施例提供的一种字符串的扫描装置的结构示意图。如图4中所示,本申请实施例提供的一种字符串的扫描装置的结构示意图,包括:
响应模块410,用于响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;
分析模块420,用于针对当前的未处理字符组,确定未处理字符组未处理字符组中是否存在非信任字符;若不存在,则更新所述未处理字符组;若存在,则确定首个非信任字符为目标字符,根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式。
在一优选实施例中,分析模块420具体用于确定多个预设扫描状态值是否均相等;若均相等,则确定预设扫描状态值是否在目标访问状态集合内,若是,则更新未处理字符组,若否,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式;若不是均相等,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式。
在一优选实施例中,还包括随机模块(图中未示出),用于通过以下方式信任字符和非信任字符:基于预设好的DFA状态转移表对随机字符串进行扫描,以获取每个字符对应的目标访问状态值;基于统计出的所有目标扫描状态的值的访问频率,确定出前K个目标访问状态值构成目标访问状态集合;针对DFA状态转移表中每个字符所对应的状态列,确定该状态列的前K个状态值中是否存在目标访问状态集合之外的状态值;若是,则确定该字符为非信任字符;若否,则确定该字符为信任字符。
在一优选实施例中, 预设扫描状态值包括第一预设扫描状态值,分析模块420还用于针对目标字符,通过以下方式确定出多个第一预设扫描状态值:针对确定出的每个目标访问状态值,以该目标访问状态值为当前状态值,基于DFA状态转移表对目标字符进行扫描,以获得对应的第一预设扫描状态值。
在一优选实施例中,预设扫描状态值包括第二预设扫描状态值,分析模块420还用于针对目标字符,通过以下方式确定出多个第二预设扫描状态值:针对每个第一预设扫描状态值,以该第一预设扫描状态为当前状态值,基于DFA状态转移表对目标字符进行扫描,以获得对应的第二预设扫描状态值。
在一优选实施例中,分析模块420还用于当确定多个预设扫描状态值不是均相等时,还包括:针对每个预设扫描状态值,确定该预设扫描状态值是否与可接受状态值匹配;若是,则对当前目标字符进行标记,以基于预设好的DFA状态转移表对待测字符串进行扫描,以确定待测字符串是否命中预设规则。
在一优选实施例中,当确定是否退出快速扫描模式的步骤时,分析模块420具体用于基于预设好的DFA状态转移表对当前的未处理字符组待测字符串进行扫描,以确定待测字符串未处理字符组是否命中预设规则。
实施例四
请参阅图5,图5为本申请实施例所提供的一种电子设备的结构示意图。如图5中所示,所述电子设备500包括处理器510、存储器520和总线530。
所述存储器520存储有所述处理器510可执行的机器可读指令,当电子设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时,可以执行如上述方法实施例中的飞行物的警报方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述方法实施例中的飞行物的警报方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种字符串的扫描方法,其特征在于,所述方法包括:
在扫描之前的预处理阶段,可以通过以下方式确定出信任字符和非信任字符:基于预设好的DFA状态转移表对随机字符串进行扫描,以获取每个字符对应的目标访问状态值;基于统计出的所有目标扫描状态的值的访问频率,确定出前K个目标访问状态值构成目标访问状态集合;针对DFA状态转移表中每个字符所对应的状态列,确定该状态列的前K个状态值中是否存在目标访问状态集合之外的状态值,若是,则确定该字符为非信任字符,若否,则确定该字符为信任字符;
响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;
针对当前的未处理字符组,确定未处理字符组未处理字符组中是否存在非信任字符;
若不存在,则更新所述未处理字符组;
若存在,则确定首个非信任字符为目标字符;
根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式;
其中,所述根据目标字符所对应的所述多个预设扫描状态值,确定是否退出快速扫描模式的步骤,具体包括:
确定所述多个预设扫描状态值是否均相等;
若均相等,则确定预设扫描状态值是否在目标访问状态集合内,
若是,则更新所述未处理字符组,
若否,则更新所述目标字符,当更新次数满足条件后,则退出快速扫描模式;
若不是均相等,则更新所述目标字符,当更新次数满足条件后,则退出快速扫描模式。
2.根据权利要求1所述的方法,其特征在于,预设扫描状态值包括第一预设扫描状态值,
针对目标字符,通过以下方式确定出多个第一预设扫描状态值:
针对确定出的每个目标访问状态值,以该目标访问状态值为当前状态值,基于所述DFA状态转移表对所述目标字符进行扫描,以获得对应的第一预设扫描状态值。
3.根据权利要求 2所述的方法,其特征在于,预设扫描状态值包括第二预设扫描状态值,针对目标字符,通过以下方式确定出多个第二预设扫描状态值:
针对每个第一预设扫描状态值,以该第一预设扫描状态为当前状态值,基于所述DFA状态转移表对所述目标字符进行扫描,以获得对应的第二预设扫描状态值。
4.根据权利要求1所述的方法,其特征在于,当确定多个预设扫描状态值不是均相等时,还包括:
针对每个预设扫描状态值,确定该预设扫描状态值是否与可接受状态值匹配;
若是,则对当前目标字符进行标记,以基于预设好的DFA状态转移表对所述待测字符串进行扫描,以确定所述待测字符串是否命中预设规则。
5.根据权利要求1所述的方法,其特征在于,当确定退出快速扫描模式时,则基于预设好的DFA状态转移表对所述待测字符串进行扫描,以确定所述待测字符串未处理字符组是否命中预设规则。
6.一种字符串的扫描装置,其特征在于,所述装置包括:
响应模块,用于响应快速扫描模式指令,从获取到的长度为N的待测字符串中按序提取M个字符作为未处理字符组,其中M小于N;
分析模块,用于针对当前的未处理字符组,确定未处理字符组未处理字符组中是否存在非信任字符;若不存在,则更新所述未处理字符组;若存在,则确定首个非信任字符为目标字符,根据目标字符所对应的多个预设扫描状态值,确定是否退出快速扫描模式;
分析模块具体用于确定多个预设扫描状态值是否均相等;若均相等,则确定预设扫描状态值是否在目标访问状态集合内,若是,则更新未处理字符组,若否,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式;若不是均相等,则更新目标字符,当更新次数满足条件后,则退出快速扫描模式;
随机模块,用于通过以下方式信任字符和非信任字符:基于预设好的DFA状态转移表对随机字符串进行扫描,以获取每个字符对应的目标访问状态值;基于统计出的所有目标扫描状态的值的访问频率,确定出前K个目标访问状态值构成目标访问状态集合;针对DFA状态转移表中每个字符所对应的状态列,确定该状态列的前K个状态值中是否存在目标访问状态集合之外的状态值;若是,则确定该字符为非信任字符;若否,则确定该字符为信任字符。
7.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至5任一所述字符串的扫描方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至5任一所述字符串的扫描方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410361724.2A CN117975485B (zh) | 2024-03-28 | 2024-03-28 | 一种字符串的扫描方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410361724.2A CN117975485B (zh) | 2024-03-28 | 2024-03-28 | 一种字符串的扫描方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117975485A CN117975485A (zh) | 2024-05-03 |
CN117975485B true CN117975485B (zh) | 2024-06-07 |
Family
ID=90858281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410361724.2A Active CN117975485B (zh) | 2024-03-28 | 2024-03-28 | 一种字符串的扫描方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117975485B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117077624A (zh) * | 2023-10-12 | 2023-11-17 | 深圳市云希谷科技有限公司 | 一种字库在线处理方法、设备和介质 |
CN117540060A (zh) * | 2023-11-15 | 2024-02-09 | 中国电子信息产业集团有限公司第六研究所 | 一种字符串的扫描方法、系统及存储介质 |
CN117675417A (zh) * | 2024-02-02 | 2024-03-08 | 中国电子信息产业集团有限公司第六研究所 | 一种文本的快速扫描方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12034897B2 (en) * | 2021-06-03 | 2024-07-09 | Canon Kabushiki Kaisha | Information processing apparatus and control method that provide an inspecting feature of inspecting for a predetermined character string in scanned data depending on a transmission destination |
-
2024
- 2024-03-28 CN CN202410361724.2A patent/CN117975485B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117077624A (zh) * | 2023-10-12 | 2023-11-17 | 深圳市云希谷科技有限公司 | 一种字库在线处理方法、设备和介质 |
CN117540060A (zh) * | 2023-11-15 | 2024-02-09 | 中国电子信息产业集团有限公司第六研究所 | 一种字符串的扫描方法、系统及存储介质 |
CN117675417A (zh) * | 2024-02-02 | 2024-03-08 | 中国电子信息产业集团有限公司第六研究所 | 一种文本的快速扫描方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117975485A (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112003870A (zh) | 一种基于深度学习的网络加密流量识别方法及装置 | |
EP2868045B1 (en) | A method of and network server for detecting data patterns in an input data stream | |
US20090133125A1 (en) | Method and apparatus for malware detection | |
JP7115552B2 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
CN111368289B (zh) | 一种恶意软件检测方法和装置 | |
CN111881289A (zh) | 分类模型的训练方法、数据风险类别的检测方法及装置 | |
CN110928793B (zh) | 一种正则表达式检测方法、装置及计算机可读存储介质 | |
CN117675417B (zh) | 一种文本的快速扫描方法、装置、电子设备及存储介质 | |
US7216364B2 (en) | System security approaches using state tables | |
CN112866292B (zh) | 一种面向多样本组合攻击的攻击行为预测方法和装置 | |
EP1607823A2 (en) | Method and system for virus detection based on finite automata | |
CN106789837A (zh) | 网络异常行为检测方法及检测装置 | |
CN117690153B (zh) | 一种基于确定型有限自动机的文本检测方法、装置及设备 | |
CN111400718B (zh) | 一种系统漏洞与攻击的检测方法、装置及其相关设备 | |
CN113791837B (zh) | 页面处理方法、装置、设备和存储介质 | |
CN117975485B (zh) | 一种字符串的扫描方法、装置、电子设备及存储介质 | |
CN111104670B (zh) | 一种apt攻击的识别和防护方法 | |
CN112070161A (zh) | 一种网络攻击事件分类方法、装置、终端及存储介质 | |
CN112769595A (zh) | 异常检测方法、装置、电子设备及可读存储介质 | |
CN114003784A (zh) | 请求录制方法、装置、设备及存储介质 | |
CN110197066B (zh) | 一种云计算环境下的虚拟机监控方法及监控系统 | |
CN114024701A (zh) | 域名检测方法、装置及通信系统 | |
CN118410487B (zh) | 一种批量扫描方法、装置、计算设备及存储介质 | |
CN112580038A (zh) | 反病毒数据的处理方法、装置及设备 | |
CN114978616B (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 |