本申请涉及存储技术领域,特别涉及一种工业审计系统的报文存储方法及装置。
背景技术:
在工业互联网的发展过程中,为了保证工业控制系统的稳定运行,工业审计系统应运而生,由其对工业控制系统的运行状况进行检查与评价。
工业审计系统对工业控制系统的运行状况进行检查与评价的前提是,需要对工业控制系统中的大量原始信息进行存储,其中存储的信息过大会对处理器和磁盘造成较大负荷,影响工业审计系统的性能,但若精简存储的信息,会导致审计需要的信息不完整。因此,如何实现审计系统性能与存储的信息完整性的兼得成为问题。
技术实现要素:
为解决上述技术问题,本申请实施例提供一种数据交互处理方法及装置,以达到提高数据交互的可靠性且降低代价的目的,技术方案如下:
一种工业审计系统的报文存储方法,应用于工业审计系统,该方法包括:
在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征;
若存在,则从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值;
若所述匹配队列中的报文为周期性报文,则判断数据库中是否存在所述匹配队列中的报文;
若存在,则丢弃所述匹配队列中的报文;
若不存在,则将所述匹配队列中的报文存储在所述数据库中。
优选的,所述判断所述工业控制报文中是否存在设定类型的报文特征,包括:
判断工业控制报文中是否存在源ip地址、源端口、目的ip地址、目的端口及工业控制协议信息;
若存在,则判断所述工业控制协议信息中是否存在设定类型的报文特征。
优选的,包括:所述利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,包括:
提取出匹配队列中的全部报文,将提取出的全部报文作为第一报文序列;
在所述报文池中查找是否存在与所述设定类型的报文特征及所述第一报文序列中报文的所述设定类型的报文特征匹配的报文序列;
若存在,将匹配的报文序列作为目标报文序列,并判断所述目标报文序列在所述报文池中出现的次数是否达到设定的出现次数阈值;
若是,则判断所述目标报文序列在所述报文池中出现的时间间隔是否小于设定的时间阈值;
若小于设定的时间阈值,则将所述工业控制报文写入所述匹配队列中;
若不小于设定的时间阈值,则判断所述匹配队列中的报文个数是否不小于设定的报文个数阈值;
若不小于设定的报文个数阈值,则确定所述匹配队列中的报文为周期性报文。
优选的,所述确定所述匹配队列中的报文为周期性报文之后,还包括:
清空所述匹配队列中的报文,并将所述工业控制报文写入所述匹配队列中。
优选的,若所述数据库中存在所述匹配队列中的报文,所述方法还包括:
更新所述匹配队列中的报文的周期数量,并将更新后的周期数量存储在所述数据库中。
优选的,所述设定类型的报文特征,包括:
操作功能码信息、操作位置信息和返回状态信息中的任意一种或多种。
一种工业审计系统的报文存储装置,应用于工业审计系统,该装置包括:
第一判断模块,用于在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征;
识别模块,用于若所述工业控制报文中存在设定类型的报文特征,则从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值;
第二判断模块,用于若所述匹配队列中的报文为周期性报文,则判断数据库中是否存在所述匹配队列中的报文;
丢弃模块,用于若所述数据库中存在所述匹配队列中的报文,则丢弃所述匹配队列中的报文;
第一存储模块,用于若所述数据库中不存在所述匹配队列中的报文,则将所述匹配队列中的报文存储在所述数据库中。
优选的,所述第一判断模块,具体用于:
判断工业控制报文中是否存在源ip地址、源端口、目的ip地址、目的端口及工业控制协议信息;
若存在,则判断所述工业控制协议信息中是否存在设定类型的报文特征。
优选的,所述识别模块,具体用于:
提取出匹配队列中的全部报文,将提取出的全部报文作为第一报文序列;
在所述报文池中查找是否存在与所述设定类型的报文特征及所述第一报文序列中报文的所述设定类型的报文特征匹配的报文序列;
若存在,将匹配的报文序列作为目标报文序列,并判断所述目标报文序列在所述报文池中出现的次数是否达到设定的出现次数阈值;
若是,则判断所述目标报文序列在所述报文池中出现的时间间隔是否小于设定的时间阈值;
若小于设定的时间阈值,则将所述工业控制报文写入所述匹配队列中;
若不小于设定的时间阈值,则判断所述匹配队列中的报文个数是否不小于设定的报文个数阈值;
若不小于设定的报文个数阈值,则确定所述匹配队列中的报文为周期性报文。
优选的,所述识别模块,还用于:
清空所述匹配队列中的报文,并将所述工业控制报文写入所述匹配队列中。
优选的,所述装置还包括:
第二存储模块,用于更新所述匹配队列中的报文的周期数量,并将更新后的周期数量存储在所述数据库中。
优选的,所述设定类型的报文特征,包括:
操作功能码信息、操作位置信息和返回状态信息中的任意一种或多种。
与现有技术相比,本申请的有益效果为:
在本申请中,在接收到工业控制报文时,通过判断工业控制报文中是否存在设定类型的报文特征,并提取设定类型的报文特征,可以保证工业控制报文的有效性,在此基础上,利用设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,若为周期性报文且数据库中已经存在,则不对匹配队列中的报文进行存储,若为周期性报文且数据库中不存在,则对匹配队列中的报文进行存储,保证不对周期性报文进行冗余存储,同时可以保证工业审计系统存储的报文的完整性,以此实现工业审计系统性能和存储的信息完整性的兼得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种工业审计系统的报文存储方法实施例1的流程图;
图2是本申请提供的一种工业审计系统的报文存储方法实施例2的流程图;
图3是本申请提供的一种工业审计系统的报文存储方法实施例3的流程图;
图4是本申请提供的一种工业审计系统的报文存储方法实施例4的流程图;
图5是本申请提供的一种工业审计系统的报文存储装置的逻辑结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种工业审计系统的报文存储方法,应用于工业审计系统,该方法包括:在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征;若存在,则从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值;若所述匹配队列中的报文为周期性报文,则判断数据库中是否存在所述匹配队列中的报文;若存在,则在所述数据库中不存储所述匹配队列中的报文;若不存在,则将所述匹配队列中的报文存储在所述数据库中。在本申请中,可以实现工业审计系统性能和存储的信息完整性的兼得。
接下来对本申请实施例公开的工业审计系统的报文存储方法进行介绍,工业审计系统的报文存储方法应用于工业审计系统,如图1所示的,为本申请提供的一种工业审计系统的报文存储方法实施例1的流程图,可以包括以下步骤:
步骤s11、在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征。
若存在,则执行步骤s12;若不存在,则可以确定工业控制报文为无效的报文。
若工业控制报文中存在设定类型的报文特征,则可以确定工业控制报文为有效的报文,则可以进一步执行后续步骤。
步骤s12、从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文。
所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值。
报文池可以理解为程序运行过程中在内存开辟的空间,用于在接收到工业公开报文时,对其进行缓存。
若是,则执行步骤s13。
步骤s13、判断数据库中是否存在所述匹配队列中的报文。
若存在,则执行步骤s14;若不存在,则执行步骤s15。
步骤s14、丢弃所述匹配队列中的报文。
在匹配队列中的报文为周期性报文且数据库中存在匹配队列中的报文的情况下,丢弃匹配队列中的报文,避免周期性报文的冗余存储,提高工业审计系统的性能。
步骤s15、将所述匹配队列中的报文存储在所述数据库中。
在匹配队列中的报文为周期性报文且数据库中不存在匹配队列中的报文的情况下,将匹配队列中的报文存储在数据库中,保证工业审计系统存储的报文的完整性。
在本申请中,在接收到工业控制报文时,通过判断工业控制报文中是否存在设定类型的报文特征,并提取设定类型的报文特征,可以保证工业控制报文的有效性,在此基础上,利用设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,若为周期性报文且数据库中已经存在,则不对匹配队列中的报文进行存储,若为周期性报文且数据库中不存在,则对匹配队列中的报文进行存储,保证不对周期性报文进行冗余存储,同时可以保证工业审计系统存储的报文的完整性,以此实现工业审计系统性能和存储的信息完整性的兼得。
作为本申请另一可选实施例,参照图2,为本申请提供的一种工业审计系统的报文存储方法实施例2的流程图,本实施例主要是对上述实施例1描述的工业审计系统的报文存储方法的细化方案,如图2所示,该方法可以包括但并不局限于以下步骤:
步骤s21、在接收到工业控制报文时,判断工业控制报文中是否存在源ip地址、源端口、目的ip地址、目的端口及工业控制协议信息。
若存在,可以确定工业控制报文为标准的工业控制报文,则执行步骤s22;若不存在,可以丢弃该工业控制报文。
步骤s22、判断所述工业控制协议信息中是否存在设定类型的报文特征。
若存在,则可以确定工业控制报文有效,则执行步骤s23;若不存在,则可以确定工业控制报文无效,不执行后续步骤。
本实施例中,设定类型的报文特征可以包括但不局限于:操作功能码信息、操作位置信息和返回状态信息中的任意一种或多种。
步骤s21-s22为实施例1中步骤s11的一种具体实施方式。
步骤s23、从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文。
所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值。
若是,则执行步骤s24。
步骤s24、判断数据库中是否存在所述匹配队列中的报文。
若存在,则执行步骤s25;若不存在,则执行步骤s26。
步骤s25、丢弃所述匹配队列中的报文。
步骤s26、将所述匹配队列中的报文存储在所述数据库中。
步骤s23-s26的详细过程可以参见实施例1中步骤s12-s15的相关介绍,在此不再赘述。
作为本申请另一可选实施例,参照图3,为本申请提供的一种工业审计系统的报文存储方法实施例3的流程图,本实施例主要是对上述实施例1描述的工业审计系统的报文存储方法的细化方案,如图3所示,该方法可以包括但并不局限于以下步骤:
步骤s31、在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征。
若存在,则执行步骤s32。
步骤s32、从所述工业控制报文中提取所述设定类型的报文特征,并提取出匹配队列中的全部报文,将提取出的全部报文作为第一报文序列。
步骤s33、在所述报文池中查找是否存在与所述设定类型的报文特征及所述第一报文序列中报文的所述设定类型的报文特征匹配的报文序列。
若存在,则执行步骤s34;
步骤s34、将匹配的报文序列作为目标报文序列,并判断所述目标报文序列在所述报文池中出现的次数是否达到设定的出现次数阈值。
若是,则执行步骤s35。
设定的出现次数阈值可以根据需要进行设置,在此不做限制。
优选的,设定的出现次数阈值可以设置为3。
步骤s35、判断所述目标报文序列在所述报文池中出现的时间间隔是否小于设定的时间阈值。
若是,则执行步骤s36;若否,则执行步骤s37。
本实施例中,设定的时间阈值可以根据需要进行设置,在此不做限制。但优选的,设定的时间阈值可以设置为200ms。
步骤s36、将所述工业控制报文写入所述匹配队列中。
步骤s37、判断所述匹配队列中的报文个数是否不小于设定的报文个数阈值。
若是,则执行步骤s38。
本实施例中,可以根据需要对设定的报文个数阈值进行设置,在此不做限制。
但,优选的,设定的报文个数阈值可以设置为4。
步骤s38、确定所述匹配队列中的报文为周期性报文。
本实施例中,步骤s38之后还可以包括:
清空所述匹配队列中的报文,并将所述工业控制报文写入所述匹配队列中。
步骤s32-s38为实施例1中步骤s12的一种具体实施方式。
步骤s39、判断数据库中是否存在所述匹配队列中的报文。
若存在,则执行步骤s310;若不存在,则执行步骤s311。
步骤s310、丢弃所述匹配队列中的报文。
步骤s311、将所述匹配队列中的报文存储在所述数据库中。
步骤s39-s311的详细过程可以参见实施例1中步骤s13-s15的相关介绍,在此不再赘述。
本实施例中,为了更加详细的对识别匹配队列中的报文是否为周期性报文的过程进行介绍,现举例对步骤s32-s38的过程进行说明,例如:
将设定的出现次数阈值设置为3,将设定的时间阈值设置为200ms,将设定的报文个数阈值设置为4,假定这些报文收到的时间间隔均满足小于等于200ms,仅按报文序列顺序来说明:
1.工业审计系统收到“wincc向plc发送的请求包(以下简称请求包)a”。
2.比对a在报文池中出现的次数为0次,匹配失败。
3.将a的特征信息(以下简称a)存入报文池。
4.由于a报文匹配失败,在数据库中存储a报文的报文信息。
5.审计系统收到“plc向wincc发送的应答包(以下简称应答包)b”。
6.比对b在报文池中出现的次数为0次,匹配失败。
7.将b的特征信息(以下简称b)存入报文池。
8.由于b报文匹配失败,在数据库中存储b报文的报文信息。
9.同理,审计系统收到“请求包c”,“应答包d”,均匹配次数0次而失败,随后在数据库中存储c,d报文的报文信息。
10.审计系统又收到“请求包a”。
11.比对a在报文池中出现的次数,此时报文池已存储之前接收到的abcd,匹配次数为1次,仍未达到3次,匹配失败。
12.将a存入报文池。
13.由于a报文匹配失败,在数据库中存储a报文的报文信息。
14.同理,随后收到“应答包b”,“请求包c”,应答包“d”在报文池中出现的次数也无法匹配成功。
15.随后审计系统又收到“请求包a”。
16.比对a在报文池中出现的次数,此时报文池已存储之前接收到的abcdabcd,匹配次数为2次,仍未达到3次,匹配失败。
17.将a存入报文池。
18.由于a报文匹配失败,在数据库中存储a报文的报文信息。
19.同理,随后收到“应答包b”,“请求包c”,应答包“d”在报文池中出现的次数也无法匹配成功。
20.随后审计系统又收到“请求包a”。
21.比对a在报文池中出现的次数,此时报文池已存储之前接收到的abcdabcdabcd,匹配次数为3次,匹配成功。
22.随后按照报文序列在报文池中出现的时间间隔是否小于设定的时间阈值,也认为成功。
23将a存入报文池,将“请求包a”存入匹配队列。
24.随后审计系统又收到“应答包b”。
25.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcda(注意上一个a也存入了)。按照【步骤s33】的描述,提取匹配队列中的“请求包a”,将“请求包a”和“应答包b”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配ab,发现出现3次,匹配成功,重复【步骤s35】匹配时间,也认为成功。
26将b存入报文池,将“应答包b”存入匹配队列。
27.随后审计系统又收到“请求包e”。
28.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdab。按照【步骤s33】的描述,提取匹配队列中的“请求包a”,“应答包b”,将“请求包a”和“应答包b”和“请求包e”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配abe,发现出现0次,匹配失败。
29.此时进入【步骤s37】,到收到某一个报文后匹配失败的情况,提取匹配队列中的“请求包a”,“应答包b”,包个数只有2个,未达到设置的4个,所以“请求包a”,“应答包b”匹配失败,在数据库中存储a和b报文的报文信息。
30.将e存入报文池,将“请求包e”存入匹配队列。
31.随后审计系统又收到“应答包f”。
32.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdabe。按照【步骤s33】的描述,提取匹配队列中的“请求包e”,将“请求包e”和“应答包f”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配ef,发现出现0次,匹配失败。
33.此时进入【步骤s37】,到收到某一个报文后匹配失败的情况,提取匹配队列中的“请求包e”,包个数只有1个,未达到设置的4个,所以“请求包e”匹配失败,在数据库中存储e报文的报文信息。
34.将f存入报文池,将“应答包f”存入匹配队列。
35.随后审计系统又收到“请求包a”。
36.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdabef。按照【步骤s33】的描述,提取匹配队列中的“应答包f”,将“应答包f”和“请求包a”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配fa,发现出现0次,匹配失败。
37.此时进入【步骤s37】,到收到某一个报文后匹配失败的情况,提取匹配队列中的“应答包f”,包个数只有1个,未达到设置的4个,所以“应答包f”匹配失败,在数据库中存储f报文的报文信息。
38.将a存入报文池,将“请求包a”存入匹配队列。
39.随后审计系统又收到“应答包b”。
40.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdabefa。按照【步骤s33】的描述,提取匹配队列中的“请求包a”,将“请求包a”和“应答包b”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配ab,发现出现4次,匹配成功,重复【步骤s35】匹配时间,也认为成功。
41.将b存入报文池,将“应答包b”存入匹配队列。
42.随后审计系统又收到“请求包c”。
43.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdabefab。按照【步骤s33】的描述,提取匹配队列中的“请求包a”和“应答包b”,将“请求包a”和“应答包b”和“请求包c”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配abc,发现出现3次,匹配成功,重复【步骤s35】匹配时间,也认为成功。
44.将c存入报文池,将“请求包c”存入匹配队列。
45.随后审计系统又收到“应答包d”。
46.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdabefabc。按照【步骤s33】的描述,提取匹配队列中的“请求包a”和“应答包b”和“请求包c”,将“请求包a”和“应答包b”和“请求包c”和“应答包d”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配abcd,发现出现4次,匹配成功,重复【步骤s35】匹配时间,也认为成功。
47.将d存入报文池,将“应答包d”存入匹配队列。
48.随后审计系统又收到“请求包a”。
49.由于匹配队列存在,所以开始进行序列匹配,此时报文池中已存储之前接收到的abcdabcdabcdabefabcd。按照【步骤s33】的描述,提取匹配队列中的请求包a”和“应答包b”和“请求包c”和“应答包d”,将请求包a”和“应答包b”和“请求包c”和“应答包d”和“请求包a”的报文组去报文池中匹配,重复【步骤s34】,到报文池中匹配abcda,发现出现2次,匹配失败。
50.此时进入【步骤s37】,到收到某一个报文后匹配失败的情况,提取匹配队列中的请求包a”和“应答包b”和“请求包c”和“应答包d”,包个数有4个,达到设置的4个,所以请求包a”和“应答包b”和“请求包c”和“应答包d”匹配成功,成功提取一组周期性报文。无需在数据库中存储该组abcd报文信息。
51.将a存入报文池,将“请求包a”存入匹配队列。
52.随后若连续收到“应答包b”和“请求包c”和“应答包d”的报文,则均可提取出周期。
其中,需要说明的是,若工业审计系统始终按照abcd的顺序接收到报文,几个周期之后,会出现报文池中为abcdabcdabcdabcdabcdabcd的情况。在这种情况下,工业审计系统按顺序收到abcd均可匹配成功,均存入匹配队列;随后收到a,按照abcda仍可匹配成功,存入匹配队列;随后依次收到bcd,仍可按照abcdabcd匹配成功(池中出现3次)。此时,匹配队列中出现abcdabcd双周期的情况,若匹配队列的长度超过了预设的报文数量的2倍,也就是8个,若匹配队列中存储的8个报文满足双周期,也就是报文1和5,2和6,3和7,4和8的特征信息是一样的,则认为匹配队列中的报文为双周期报文,可以将该匹配队列中的报文取出;若不是双周期报文,则保留在匹配队列中不取出。
作为本申请另一可选实施例,参照图4,为本申请提供的一种工业审计系统的报文存储方法实施例4的流程图,本实施例主要是对上述实施例1描述的工业审计系统的报文存储方法的扩展方案,如图4所示,该方法可以包括但并不局限于以下步骤:
步骤s41、在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征。
若存在,则执行步骤s42;
步骤s42、从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文。
所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值。
若是,则执行步骤s43;
步骤s43、判断数据库中是否存在所述匹配队列中的报文。
若存在,则执行步骤s44;若不存在,则执行步骤s46。
步骤s44、丢弃所述匹配队列中的报文。
步骤s41-s44的详细过程可以参见实施例1中步骤s11-s14的相关介绍,在此不再赘述。
步骤s45、更新所述匹配队列中的报文的周期数量,并将更新后的周期数量存储在所述数据库中。
所述匹配队列中的报文的周期数量可以理解为:所述匹配队列中的报文的出现次数。
步骤s46、将所述匹配队列中的报文存储在所述数据库中。
步骤s46的详细过程可以参见实施例1中步骤s15的相关介绍,在此不再赘述。
接下来对本申请提供的工业审计系统的报文存储装置进行介绍,下文介绍的工业审计系统的报文存储装置与上文介绍的工业审计系统的报文存储方法可相互对应参照。
请参见图5,工业审计系统的报文存储装置应用于工业审计系统,工业审计系统的报文存储装置包括:第一判断模块11、识别模块12、第二判断模块13、丢弃模块14和第一存储模块15。
第一判断模块11,用于在接收到工业控制报文时,判断所述工业控制报文中是否存在设定类型的报文特征;
识别模块12,用于若所述工业控制报文中存在设定类型的报文特征,则从所述工业控制报文中提取所述设定类型的报文特征,并利用所述设定类型的报文特征,识别匹配队列中的报文是否为周期性报文,所述匹配队列中的报文在报文池中出现的次数不小于设定的报文出现次数阈值且出现的时间间隔小于设定的时间间隔阈值;
第二判断模块13,用于若所述匹配队列中的报文为周期性报文,则判断数据库中是否存在所述匹配队列中的报文;
丢弃模块14,用于若所述数据库中存在所述匹配队列中的报文,则丢弃所述匹配队列中的报文;
第一存储模块15,用于若所述数据库中不存在所述匹配队列中的报文,则将所述匹配队列中的报文存储在所述数据库中。
本实施例中,所述第一判断模块11,具体可以用于:
判断工业控制报文中是否存在源ip地址、源端口、目的ip地址、目的端口及工业控制协议信息;
若存在,则判断所述工业控制协议信息中是否存在设定类型的报文特征。
本实施例中,所述识别模块12,具体可以用于:
提取出匹配队列中的全部报文,将提取出的全部报文作为第一报文序列;
在所述报文池中查找是否存在与所述设定类型的报文特征及所述第一报文序列中报文的所述设定类型的报文特征匹配的报文序列;
若存在,将匹配的报文序列作为目标报文序列,并判断所述目标报文序列在所述报文池中出现的次数是否达到设定的出现次数阈值;
若是,则判断所述目标报文序列在所述报文池中出现的时间间隔是否小于设定的时间阈值;
若小于设定的时间阈值,则将所述工业控制报文写入所述匹配队列中;
若不小于设定的时间阈值,则判断所述匹配队列中的报文个数是否不小于设定的报文个数阈值;
若不小于设定的报文个数阈值,则确定所述匹配队列中的报文为周期性报文。
本实施例中,识别模块12,还可以用于:
清空所述匹配队列中的报文,并将所述工业控制报文写入所述匹配队列中。
本实施例中,工业审计系统的报文存储装置还可以包括:
第二存储模块,用于更新所述匹配队列中的报文的周期数量,并将更新后的周期数量存储在所述数据库中。
本实施例中,上述设定类型的报文特征,可以包括:
操作功能码信息、操作位置信息和返回状态信息中的任意一种或多种。
需要说明的是,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种工业审计系统的报文存储方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。