CN101527648A - 一种能够完成整数匹配的状态树匹配方法 - Google Patents
一种能够完成整数匹配的状态树匹配方法 Download PDFInfo
- Publication number
- CN101527648A CN101527648A CN200810101524A CN200810101524A CN101527648A CN 101527648 A CN101527648 A CN 101527648A CN 200810101524 A CN200810101524 A CN 200810101524A CN 200810101524 A CN200810101524 A CN 200810101524A CN 101527648 A CN101527648 A CN 101527648A
- Authority
- CN
- China
- Prior art keywords
- byte
- numerical value
- integer
- state
- less
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种能够完成整数匹配的状态树匹配方法,在完成通用的并行模式匹配同时,完成整数的数值匹配,是一种用于计算机或网络的入侵监测、审计等多种基于数据监测的方法。本发明所述方法的步骤:读取整数定义模式的步骤,生成状态树的步骤,读取数据的步骤,模式匹配的步骤,上报结果的步骤。本发明可以在字符串匹配的同时,完成整数的匹配,从而提高匹配的速度。加快了在数据检测、审计的速度,减少了硬件开销,提高了数据检测和审计的效率。
Description
技术领域
本发明涉及一种能够完成整数匹配的状态树匹配方法,是一种并行模式的处理方法,在完成通用的字符串模式匹配同时,完成整数的数值匹配。是一种用于计算机或网络的入侵监测、审计等多种基于数据监测系统的方法。
背景技术
在目前的各类网络报文和文件数据的监测系统中,不仅需要对字符串内容进行监测,也需要对处于网络报文或者文件中不同位置的整数数值进行监测。单个的整数匹配操作比较简单,且速度非常快,但当有多个整数进行比较,且与字符串匹配一同进行时,其效率就不是很高。
目前的各类的IDS、审计等监测系统中,都是把整数比较与字符串比较分开进行,然后再对各个匹配的结果,统一考虑处理。这样的处理效率比较低。如下列2个匹配模式:
data[3]=34 and data[4]~abcd
data[7]>67 and data[23]~ghjkl
●匹配式1的含义为:当匹配数据的第3个字节等于34,且第4位起,包含abcd字符串时,符合匹配模式。
●匹配式2的含义为:当匹配数据的第7个字节大于67,且第4位起,包含ghjkl字符串时,符合匹配模式。
按照传统方法,需要分别对2个匹配式的4个子式进行匹配,再进行“与”分析。其中,2个字符串的匹配(abcd和ghjkl),可以采用基于状态树的并行模式匹配方法,无论多少个模式都可以一次完成数据匹配,但数据匹配(34和67),只能通过传统的数据计算依次完成,无法并行进行。因此,当匹配模式比较多时,整数的匹配一方面无法融入字符串的并行模式匹配,一方面也必须一个算式一个算式的串行进行,影响整体的处理性能。
本发明介绍的方法,就是采用有限自动机的方法,建立整数的状态树,把整数的匹配和字符串的匹配同时完成,建立统一的状态匹配树,统一进行数据的并行匹配。
发明内容
为了克服现有技术的不足,本发明提供一种能够完成整数匹配的状态树匹配方法,在完成通用的并行模式匹配同时,完成整数的数值匹配。本发明的目的是在状态树中完成整数的匹配,通过把整数转换为状态树,与字符串同时完成模式匹配,从而提高模式匹配的速度。
本发明解决所述技术问题所采用的技术方案是:一种基于状态树的整数匹配方法,包括作为用户的网络终端,计算机网络,其特征在于含有以下的步骤:
读取整数定义模式的步骤:读取文件中的整数比较定义式,定义格式为:
[addr,num]op data
其中,addr表示整数在输入数据中所在的位置,或者偏移量、num表示整数类型,有1、2、4三种、op为运算操作符,包括>、>=、=、<=、<五种、data为比较的数据数值;
生成状态树的步骤:按照整数类型和运算符号,对于一字节整数生成一字节整数匹配状态树结构,对于二字节整数生成二字节整数匹配状态树结构,对于四字节整数生成四字节整数匹配状态树结构;
读取数据的步骤:读取需要匹配的数据;
模式匹配的步骤:按照状态树,依次读取每个字节数据,并按照状态树的结构,进入相应的状态节点,直到生成匹配结果;
上报结果的步骤:在进入匹配成功的状态节点后,上报匹配成功结果。
本发明的有益效果:本发明可以在字符串匹配的同时,完成整数的匹配,从而提高匹配的速度。加快了在数据检测、审计的速度,减少了硬件开销,提高了数据检测和审计的效率。在背景技术中的2个匹配实例中,采用本方法,一次性建立统一的模式匹配树,进行一次数据匹配,就可以完成4个子匹配式的数据匹配,大大提高了处理速度。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明实施例一所述方法的处理流程;
图2是本发明实施例二所述一字节整数的状态树结构;
图3是本发明实施例三所述二字节整数的状态树结构;
图4是本发明实施例四所述四字节整数的状态树结构。
具体实施方式
实施例一:
本实施例是一种能够完成整数匹配的状态树匹配方法,图1描述了所述方法的处理流程。分2个阶段、5个步骤:
初始化阶段:
●读取整数定义模式:读取文件中的整数比较定义式,定义格式如下:
[addr,num]op data
其中,addr表示整数在输入数据中所在的位置,或者偏移量;num表示整数类型,有1字节整数、2字节整数、4字节整数三种;op为运算操作符,包括>(大于运算)、>=(大于等于运算)、=(等于运算)、<=(小于等于运算)、<(小于运算)五种;data为比较的数据数值。实例如下:
[10,2]>100:表示在起始位置偏移10字节处的一个二字节整数,其数值大于100。
●生成状态树:按照整数类型和运算符号,分别生成相应的整数匹配状态树(生成状态树结构,见图2、图3、图4);
实施匹配阶段:
●读取数据:读取需要匹配的数据;
●模式匹配:按照状态树,依次读取每个字节数据,并按照状态树的结构,进入相应的状态节点,直到生成匹配结果;
●上报结果:在进入匹配成功的状态节点后,上报匹配成功结果。
实施例二:
本实施例是实施例一关于生成状态树的细化,是一个优选方案,是一字节整数生成的状态树结构的建立方法,图2所示的是一字节整数生成的状态树结构。本实施例采用AC的多模匹配方法,其核心是生成用于匹配的状态树。图2说明了一字节整数的状态树结构和对应的5种运算模式的状态节点。
●[单字节x]:表示匹配起始节点,当前整数数值为x;
●[00]、[x-1]:表示小于x的状态树节点;这些节点对应的运算结果应该是小于状态,即模式定义为小于x时匹配成功;
●[x]:表示等于x的状态树节点;该节点对应的运算结果应该是等于状态,即模式定义为等于x时匹配成功;
●[x+1]、[ff]:表示大于x的状态树节点;这些节点对应的运算结果应该是大于状态,即模式定义为大于x时匹配成功;
●当把[等于]状态与大于、小于2个状态合并时,也就是把等于状态和大于状态、等于状态和小于状态都分别设置为匹配成功状态,可以生成大于等于、小于等于运算结果。
本实施例生成状态树时,使用五种运算的处理方法:
1)大于匹配运算:在图2中,“>成功”标识匹配成功,其他节点为不成功;
2)大于等于匹配运算:在图2中,“>=成功”标识匹配成功,其他节点为不成功;
3)等于匹配运算:在图2中,“=成功”标识匹配成功,其他节点为不成功;
4)小于等于匹配运算:在图2中,“<=成功”标识匹配成功,其他节点为不成功;
5)小于匹配运算:在图2中,“<成功”标识匹配成功,其他节点为不成功;
实施例三:
本实施例是实施例一关于生成状态树的细化,是一个优选方案,是二字节整数生成的状态树结构。图3描述了二字节整数生成的状态树结构,所述状态树有2层,需要对2个字节先后进行2次匹配。图3说明了二字节整数的状态树结构和对应的5种运算模式的状态节点。
●[高字节x][低字节y]:表示匹配起始节点,当前整数的高位字节数值为x,低位字节数值为y;
●[高字节x]:首先匹配高字节,有三种可能的结果:大于x、等于x、小于x;在这三个状态基础上,进行低字节的匹配;
●[低字节y][<x]:当高字节数值小于x时,无论低字节数值是多少,该整数都是小于给定数值的;这里“*”表示任意数值;其匹配结果必然是小于状态;
●[低字节y][>x]:当高字节数值大于x时,无论低字节数值是多少,该整数都是大于给定数值的;这里“*”表示任意数值;其匹配结果必然是大于状态;
●[低字节y][=x]:当高字节数值等于x时,根据低字节数值的大小,有三种可能结果,分别是:小于、等于、大于;
●当把低字节的[等于]状态与低字节的大于、等于2个状态合并时,可以生成大于等于、小于等于运算结果。
实施例四:
本实施例是实施例一关于生成状态树的细化,是一个优选方案,是四字节整数生成的状态树结构。图4描述了四字节整数生成的状态树结构,所述状态树有4层,需要对4个字节先后进行4次匹配。图4说明了四字节整数的状态树结构和对应的5种运算模式的状态节点。
●[第一字节a][第二字节b][第三字节c][第四字节d]:表示匹配起始节点,当前整数的最高位字节数值为a,次高位字节数值为b,次低位字节数值为c;最低位字节数值为d;
●[第一字节a]:首先匹配最高位的第一字节,有三种可能的结果:大于a、等于a、小于a;在这三个状态基础上,进行后续字节的匹配;
●[第二字节b]:当第一字节数值小于a时,无论后续字节数值是多少,该整数都是小于给定数值的;这里及后续的“*”表示任意数值;其匹配结果必然是小于状态;当第一字节数值大于a时,无论后续字节数值是多少,该整数都是大于给定数值的;这里及后续的“*”表示任意数值;其匹配结果必然是大于状态;当第一字节数值等于a时,根据b的数值,有三种可能的结果:大于b、等于b、小于b;在这三个状态基础上,再进行后续字节的匹配;
●[第三字节c]:当第一字节数值小于a时、或者第一字节数值等于a第二字节小于b时,无论后续字节数值是多少,该整数都是小于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是小于状态;当第一字节数值大于a时、或者第一字节数值等于a第二字节大于b时,无论后续字节数值是多少,该整数都是大于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是小于状态;当第一字节数值等于a、且第二字节数值等于b时,根据c的数值,有三种可能的结果:大于c、等于c、小于c;在这三个状态基础上,再进行后续字节的匹配;
●[第四字节d]:当第一字节数值小于a时、或者第二字节数值等于a第二字节小于b、或者第一、二字节数值等于a、b第三字节小于c时,无论后续字节数值是多少,该整数都是小于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是小于状态;当第一字节数值大于a时、或者第一字节数值等于a第二字节大于b、或者第一、二字节数值等于a、b第三字节大于c时,无论后续字节数值是多少,该整数都是大于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是大于状态;当第一字节数值等于a、且第二字节数值等于b、第三字节数值等于c时,需要由第四字节数据d的大小来确定该整数匹配的结果,有三种可能结果,分别是:小于、等于、大于;
●当把第四字节的[等于]状态与第四字节的大于、小于2个状态合并时,可以生成大于等于、小于等于运算结果。
Claims (4)
1.一种状态树匹配方法,其特征在于含有以下的步骤:
读取整数定义模式的步骤:读取文件中的整数比较定义式,定义格式为:
[addr,num]op data
其中,addr表示整数在输入数据中所在的位置,或者偏移量、num表示整数类型,有1、2、4三种、op为运算操作符,包括>、>=、=、<=、<五种、data为比较的数据数值;
生成状态树的步骤:按照整数类型和运算符号,对于一字节整数生成一字节整数匹配状态树结构,对于二字节整数生成二字节整数匹配状态树结构,对于四字节整数生成四字节整数匹配状态树结构;
读取数据的步骤:读取需要匹配的数据;
模式匹配的步骤:按照状态树,依次读取每个字节数据,并按照状态树的结构,进入相应的状态节点,直到生成匹配结果;
上报结果的步骤:在进入匹配成功的状态节点后,上报匹配成功结果。
2.根据权利要求1所述的一种状态树匹配方法,其特征在于所述的生成状态树的步骤中生成一字节整数匹配状态树结构的步骤有:
[单字节x]:表示匹配起始节点,当前整数数值为x;
[00]、[x-1]:表示小于x的状态树节点;这些节点对应的运算结果应该是小于状态,即模式定义为小于x时匹配成功;
[x]:表示等于x的状态树节点;该节点对应的运算结果应该是等于状态,即模式定义为等于x时匹配成功;
[x+1]、[ff]:表示大于x的状态树节点;这些节点对应的运算结果应该是大于状态,即模式定义为大于x时匹配成功;
当把[等于]状态与大于、小于2个状态合并时,可以生成大于等于、小于等于运算结果。
3.根据权利要求1所述的一种状态树匹配方法,其特征在于所述的生成状态树的步骤中生成二字节整数匹配状态树结构的步骤有:
[高字节x][低字节y]:表示匹配起始节点,当前整数的高位字节数值为x,低位字节数值为y;
[高字节x]:首先匹配高字节,有三种可能的结果:大于x、等于x、小于x;在这三个状态基础上,进行低字节的匹配;
[低字节y][<x]:当高字节数值小于x时,无论低字节数值是多少,该整数都是小于给定数值的;这里“*”表示任意数值;其匹配结果必然是小于状态;
[低字节y][>x]:当高字节数值大于x时,无论低字节数值是多少,该整数都是大于给定数值的;这里“*”表示任意数值;其匹配结果必然是大于状态;
[低字节y][=x]:当高字节数值等于x时,根据低字节数值的大小,有三种可能结果,分别是:小于、等于、大于;
当把低字节的[等于]状态与低字节的大于、等于2个状态合并时,可以生成大于等于、小于等于运算结果。
4.根据权利要求1所述的一种状态树匹配方法,其特征在于所述的生成状态树的步骤中生成四字节整数匹配状态树结构的步骤有:
[第一字节a][第二字节b][第三字节c][第四字节d]:表示匹配起始节点,当前整数的最高位字节数值为a,次高位字节数值为b,次低位字节数值为c;最低位字节数值为d;
[第一字节a]:首先匹配最高位的第一字节,有三种可能的结果:大于a、等于a、小于a;在这三个状态基础上,进行后续字节的匹配;
[第二字节b]:当第一字节数值小于a时,无论后续字节数值是多少,该整数都是小于给定数值的;这里及后续的“*”表示任意数值;其匹配结果必然是小于状态;当第一字节数值大于a时,无论后续字节数值是多少,该整数都是大于给定数值的;这里及后续的“*”表示任意数值;其匹配结果必然是大于状态;当第一字节数值等于a时,根据b的数值,有三种可能的结果:大于b、等于b、小于b;在这三个状态基础上,再进行后续字节的匹配;
[第三字节c]:当第一字节数值小于a时、或者第一字节数值等于a第二字节小于b时,无论后续字节数值是多少,该整数都是小于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是小于状态;当第一字节数值大于a时、或者第一字节数值等于a第二字节大于b时,无论后续字节数值是多少,该整数都是大于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是小于状态;当第一字节数值等于a、且第二字节数值等于b时,根据c的数值,有三种可能的结果:大于c、等于c、小于c;在这三个状态基础上,再进行后续字节的匹配;
[第四字节d]:当第一字节数值小于a时、或者第二字节数值等于a第二字节小于b、或者第一、二字节数值等于a、b第三字节小于c时,无论后续字节数值是多少,该整数都是小于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是小于状态;当第一字节数值大于a时、或者第一字节数值等于a第二字节大于b、或者第一、二字节数值等于a、b第三字节大于c时,无论后续字节数值是多少,该整数都是大于给定数值的;这里及后续的“*”表示任意数值,其匹配结果必然是大于状态;当第一字节数值等于a、且第二字节数值等于b、第三字节数值等于c时,需要由第四字节数据d的大小来确定该整数匹配的结果,有三种可能结果,分别是:小于、等于、大于;
当把第四字节的[等于]状态与第四字节的大于、小于2个状态合并时,可以生成大于等于、小于等于运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810101524A CN101527648A (zh) | 2008-03-07 | 2008-03-07 | 一种能够完成整数匹配的状态树匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810101524A CN101527648A (zh) | 2008-03-07 | 2008-03-07 | 一种能够完成整数匹配的状态树匹配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101527648A true CN101527648A (zh) | 2009-09-09 |
Family
ID=41095356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810101524A Pending CN101527648A (zh) | 2008-03-07 | 2008-03-07 | 一种能够完成整数匹配的状态树匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101527648A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049516A (zh) * | 2012-12-14 | 2013-04-17 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据处理方法及装置 |
-
2008
- 2008-03-07 CN CN200810101524A patent/CN101527648A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049516A (zh) * | 2012-12-14 | 2013-04-17 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据处理方法及装置 |
CN103049516B (zh) * | 2012-12-14 | 2016-01-20 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | Temporal network embedding with micro-and macro-dynamics | |
Bern et al. | Generalized unitarity and six-dimensional helicity | |
CN101753369A (zh) | 一种检测防火墙规则冲突的方法及装置 | |
CN105373601A (zh) | 一种基于关键字词频特征的多模式匹配方法 | |
Ganguly et al. | pBWT: Achieving succinct data structures for parameterized pattern matching and related problems | |
CN112217805B (zh) | 一种配电物联网多模协议适配方法 | |
Xu et al. | Power-law graphs have minimal scaling of Kemeny constant for random walks | |
CN101527648A (zh) | 一种能够完成整数匹配的状态树匹配方法 | |
CN109800337A (zh) | 一种适用于大字母表的多模式正则匹配算法 | |
Huang et al. | Answering regular path queries on workflow provenance | |
Feng et al. | Hypergraph isomorphism computation | |
CN1494278A (zh) | 一种数据流分类方法 | |
Liu et al. | Projectively lag synchronization and uncertain parameters identification of a new hyperchaotic system | |
Wang et al. | Disk: a distributed framework for single-source simrank with accuracy guarantee | |
Fumex et al. | Indexed induction and coinduction, fibrationally | |
CN101771675B (zh) | 一种对数据包进行特征匹配的方法及装置 | |
CN108829930B (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
Qu et al. | A parallel algorithm of string matching based on message passing interface for multicore processors | |
Zhao et al. | J-pairing interaction, number of states, and nine-j sum rules of four identical particles | |
CN113037553A (zh) | 一种基于ia-svm的iec102协议通讯行为异常检测方法和系统 | |
CN103198065A (zh) | 一种正则表达式匹配电路的优化方法 | |
CN105955066A (zh) | 一种仿真系统中通用的模型数据编码和解码方法 | |
Chang et al. | Huffman algebras for independent random variables | |
Long et al. | A rigorous and efficient approach to finding and quantifying symmetries in complex networks | |
Ganikhodjaev et al. | Potts model with next-nearest-neighbor ternary interactions on an arbitrary-order Cayley tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090909 |