CN113139593A - 一种基于对话分析的工控协议报文分类方法和系统 - Google Patents
一种基于对话分析的工控协议报文分类方法和系统 Download PDFInfo
- Publication number
- CN113139593A CN113139593A CN202110417738.8A CN202110417738A CN113139593A CN 113139593 A CN113139593 A CN 113139593A CN 202110417738 A CN202110417738 A CN 202110417738A CN 113139593 A CN113139593 A CN 113139593A
- Authority
- CN
- China
- Prior art keywords
- message
- messages
- dialogue
- dialog
- alignment
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
- G06F18/2135—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods based on approximation criteria, e.g. principal component analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
Landscapes
- Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于对话分析的工控协议报文分类方法,包括:从工控网络中获取多个包括请求报文和响应报文的对话报文。并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文,针对每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列,根据所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;针对排序后的多个对话报文而言,依次取出每个对话报文。本发明能够解决现有基于频繁序列的报文分类方法和基于聚类算法的报文分类方法均难以提取工控协议报文中类别标识的技术问题。
Description
技术领域
本发明属于工业控制网络技术领域,更具体地,涉及一种基于对话分析的工控协议报文分类方法和系统。
背景技术
工控协议,即用于工业控制网络中的各个节点间的通信规范。同传统网络协议相比,现有工控协议多为工控设备生产厂家自己制定的私有协议,具有高可用、低成本、低延时、易解析、高效率的特点,而相对协议本身对安全性、保密性的要求较低,安全保障依赖于物理隔离。但是,随着互联网技术的发展,信息化、自动化、智能化的趋势也逐渐渗透到了生产制造领域,越来越多的工业控制网络也打破了原有的物理隔离,实现了与传统计算机网络的互连,但这一趋势在给工业生产制造带来极大便利的同时,也带来了一系列的安全问题,但同时由于大多数工控协议为规范未知的私有协议,直接引入传统网络安全防护设备往往起不到较为理想的效果。为了增强工控网络的安全性,各种协议分析技术应运而生,报文分类技术就是其中的一种。
现有的报文分类技术按照实现原理可分为两种,基于频繁序列的报文分类方法和基于聚类算法的报文分类方法:基于频繁序列的报文分类方法即将分类问题转换为频繁序列提取问题,根据不同类型报文中包含的不同频繁序列完成报文分类;基于聚类算法的报文分类方法首先通过特征提取将报文转换为能反映报文信息的特征向量,然后选取合适的方法评估特征向量之间的距离或相似度,最后用聚类算法依照特征向量之间的距离或相似度对报文进行聚类。
然而,上述两种报文分类方法均存在一些不可忽略的缺陷:第一,基于频繁序列的报文分类方法仅适用对文本协议中固定不变的类别标识中的关键字进行提取,而工控协议作为一种二进制协议不存在标识字段类型的关键字,因此很难使用基于频繁序列的报文分类方法提取工控协议报文的类别标识;第二,基于聚类算法的报文分类方法仅通过从单一报文的类别中提取的特征进行分类,而工控协议中单一报文的类别特征可能仅表现为某字段的取值不同,因此很难使用基于聚类算法的报文分类方法提取单一工控协议报文中的类别标识;第三,基于聚类算法的报文分类方法需要计算所有报文中任意两个报文之间的距离或相似度,该过程往往非常耗时。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于对话分析的工控协议报文分类方法和系统,其目的在于,解决现有基于频繁序列的报文分类方法和基于聚类算法的报文分类方法均难以提取工控协议报文中类别标识的技术问题,以及现有基于聚类算法的报文分类方法难以从单一工控协议报文中提取类别特征的问题,以及由于需要计算所有报文中任意两个报文之间的距离或相似度,导致非常耗时的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于对话分析的工控协议报文分类方法,包括以下步骤:
(1)从工控网络中获取多个包括请求报文和响应报文的对话报文。并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文。
(2)针对步骤(1)得到的每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列;
(3)根据步骤(3)生成的所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;
(4)针对步骤(3)得到的排序后的多个对话报文而言,依次取出每个对话报文,根据该对话报文、以及该对话报文在排序后的多个对话报文中相邻的对话报文对该对话报文的所有位置进行投票处理,以得到该对话报文中所有位置的投票结果,并根据投票结果获取所有对话报文在各个位置的票数总和;
(5)根据步骤(4)得到的所有对话报文在各个位置的票数总和对所有位置进行筛选,以得到筛选后的位置与总票数的映射关系;
(6)根据步骤(5)得到的筛选后的位置与总票数的映射关系构建特征矩阵;
(7)使用PCA算法对步骤(6)得到的特征矩阵进行降维处理,以得到一维向量;
(8)使用Jenks-Break算法对步骤(7)得到的一维向量对应的所有对话报文进行分类,以得到分类结果。
优选地,步骤(1)包括以下子步骤:
(1-1)从工控网络中获取多个报文,取出多个报文中的第一个报文,与所有报文中的第二个报文进行匹配,若匹配成功,则将第一个报文和第二个报文分别作为请求报文和响应报文取出,并将二者组合为对话报文,然后将第一个报文继续与所有报文中的剩余报文进行匹配;若不匹配,则将第一个报文继续与所有报文中的剩余报文进行匹配,若所有报文中没有一个报文与第一个报文匹配,则将第一个报文丢弃。
(1-2)针对步骤(1-1)中获取的所有报文中的剩余报文,重复上述步骤(1-1),直至所有报文都被处理完毕为止,从而获得多个对话报文。
(1-3)从步骤(1-2)得到的所有对话报文中的第一个对话报文,根据该对话报文中的请求报文和响应报文初始化一个大小为(n+2)*(m+2)的二维矩阵M,其中的元素表示为M[i][j],0<i<n+3,0<j<m+3,其中m表示请求报文req的字节长度,n表示响应报文res的字节长度为n;
(1-4)设置计数器p=3;
(1-5)将二维矩阵M中的元素M[1][p]更新为req[p-2],其中req[p-2]表示请求报文req中的第p-2个字节值。
(1-6)计数器p=p+1,并判断p是否等于m+2,如果是则转入步骤(1-7),否则返回步骤(1-5)。
(1-7)设置计数器q=3;
(1-8)将二维矩阵M中的元素M[q][1]更新为res[q-2],其中res[q-2]表示响应报文res中的第q-2个字节值。
(1-9)设置计数器q=q+1,并判断q是否等于n+2,如果是则转入步骤(1-10),否则返回步骤(1-8)。
(1-10)设置计数器k=2;
(1-11)将二维矩阵M中的元素M[2][k]设置为0。
(1-12)设置计数器k=k+1,并判断k是否等于m+2,如果是则转入步骤(1-13),否则返回步骤(1-11)。
(1-13)设置计数器h=2;
(1-14)将二维矩阵M中的元素M[h][2]设置为0;
(1-15)设置计数器h=h+1,并判断h是否等于n+2,如果是则转入步骤(1-16),否则返回步骤(1-14)。
(1-16)设置计数器x=3。
(1-17)设置计数器y=3。
cagree(req[x-2],res[y-2])=|{0≤n<8:req[x-2]n=res[y-2]n}|表示req[x-2]和res[y-2]这两个字节值的二进制表示中相同位的个数。
(1-19)设置计数器y=y+1,并判断y是否等于m+2,如果是则转入步骤(1-20),否则返回步骤(1-18)。
(1-20)设置计数器x=x+1,并判断x是否等于n+2,如果是则转入步骤(1-21),否则返回步骤(1-17)。
(1-21)设置计数器a=n+2,b=m+2,c=0;
(1-22)初始化对齐请求报文和对齐响应报文,其可以为任意长度。
(1-23)判断二维矩阵M中的元素M[a][b]是否和以下两个元素中的任意一个相等:M[a-1][b]和M[a][b-1],如果M[a][b]与任意一个都不相等,则转入步骤(1-24),如果M[a][b]与M[a-1][b]相等,则转入步骤(1-25),如果M[a][b]与M[a][b-1]相等,则转入步骤(1-26);
(1-24)将对齐请求报文中的第c个字节值设置为req[b-2],将对齐响应报文中的第c个字节值设置为res[a-2],然后转入步骤(1-27)。
(1-25)将对齐请求报文中的第c个字节值设置为0,将对齐响应报文中的第c个字节值设置为res[a-2],然后转入步骤(1-27);
(1-26)将对齐请求报文中的第c个字节值设置为req[b-2],将对齐响应报文中的第c个字节值设置为0,然后转入步骤(1-27)。
(1-27)计数器a=a-1,b=b-1,c=c+1,并判断a和b是否都等于3,若是则转入步骤(1-28),否则返回步骤(1-23)。
(1-28)分别对获得的对齐请求报文和对齐响应报文进行逆向处理,以获得最终的对齐请求报文和对齐响应报文。
(1-29)针对步骤(1-2)得到的所有对话报文中的剩余对话报文,重复上述步骤(1-3)至(1-28),直至所有对话报文都被处理完毕为止,从而获得与每个对话报文对应的对齐请求报文和对齐响应报文。
优选地,步骤(1-1)中的具体匹配方式为:若第一个报文中的源IP与第二个报文中的目的IP相同,第一个报文中的源端口与第二个报文中的目的端口相同,第一个报文中的目的IP与第二个报文中的源IP相同,第一个报文中的目的端口与第二个报文中的源端口相同,则表示二者匹配成功,否则表示匹配失败。
优选地,步骤(2)中,如果对齐请求报文中第i个字节值为0,对齐响应报文中第i个字节值也为0,则状态序列中第i个字符为A;如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值为0,则状态序列中第i个字符为B,如果对齐请求报文中第i个字节值为0,对齐响应报文中第i个字节值不为0,则状态序列中第i个字符为C,如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值也不为0,二者相等,则状态序列中第i个字符为D,如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值也不为0,二者不等,则状态序列中第i个字符为E。
优选地,步骤(3)中的排序过程,首先是比较所有对话报文对应的状态序列中的第一个字符在字符表中ASIIC码的大小,并按照从大到小或者从小到大的顺序对对应的报文进行排序,如果出现多个ASIIC码的大小相同的情况,则进一步比较所有对话报文对应的状态序列中的第二个字符在字符表中ASIIC码的大小,并按照从大到小或者从小到大的顺序对对应的报文进行排序,…,以此类推,从而最终得到排序后的多个对话报文。
优选地,步骤(4)首先是取出排序后的多个对话报文中的第一个对话报文,然后判断该对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第二个对话报文所包括的请求报文中第一个位置的字符相同,并且该对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第二个对话报文所包括的响应报文中第一个位置的字符相同,如果是,则对第一个对话报文中的第一个位置进行投票,…,以此类推,从而得到第一个对话报文中所有位置的投票结果;接下来,针对排序后的多个对话报文中的剩余报文,重复上述过程,从而得到所有对话报文中所有位置的投票结果。
优选地,步骤(4)中如果取出来的是第二个对话报文,则判断条件是:该第二个对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第一个对话报文所包括的请求报文中第一个位置的字符相同,并且该第二个对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第一个对话报文所包括的响应报文中第一个位置的字符相同,同时该第二个对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第三个对话报文所包括的请求报文中第一个位置的字符相同,并且该第二个对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第三个对话报文所包括的响应报文中第一个位置的字符相同。
优选地,步骤(6)首先是从步骤(3)得到的排序后的多个对话报文取第一个对话报文,然后获取该对话报文所包括的请求报文和响应报文在步骤(5)得到的筛选后的位置与总票数的映射关系中第一个位置处的字节值之和,随后获取该对话报文所包括的请求报文和响应报文在步骤(5)得到的筛选后的位置与总票数的映射关系中第二个位置处的字节值之和,…,以此类推,最终得到与第一个对话报文对应的、由多个字节之和组成的向量;然后针对步骤(3)得到的排序后的多个对话报文中的剩余报文,重复上述过程,从而得到所有对话报文对应的向量,所有向量构成特征矩阵。
按照本发明的另一方面,提供了一种基于对话分析的工控协议报文分类系统,包括:
第一模块,用于从工控网络中获取多个包括请求报文和响应报文的对话报文。并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文。
第二模块,用于针对第一模块得到的每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列;
第三模块,用于根据第二模块生成的所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;
第四模块,用于针对第三模块得到的排序后的多个对话报文而言,依次取出每个对话报文,根据该对话报文、以及该对话报文在排序后的多个对话报文中相邻的对话报文对该对话报文的所有位置进行投票处理,以得到该对话报文中所有位置的投票结果,并根据投票结果获取所有对话报文在各个位置的票数总和;
第五模块,用于根据第四模块得到的所有对话报文在各个位置的票数总和对所有位置进行筛选,以得到筛选后的位置与总票数的映射关系;
第六模块,用于根据第五模块得到的筛选后的位置与总票数的映射关系构建特征矩阵;
第七模块,用于使用PCA算法对第六模块得到的特征矩阵进行降维处理,以得到一维向量;
第八模块,用于使用Jenks-Break算法对第七模块得到的一维向量对应的所有对话报文进行分类,以得到分类结果。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、由于本发明采用了步骤(1)和步骤(2),其首先使用序列比对算法从对话报文中生成能反映类别特征的对齐请求报文和对齐响应报文,再将对齐报文抽象为状态序列,解决了基于聚类算法的报文分类方法难以从单一工控协议报文中提取类别特征的问题。
2、由于本发明采用了步骤(4),其结合工控协议特征,首先通过对比状态序列相似的报文产生对关键字段位置的投票,然后根据得票率和字段值分布筛选出包含类别标识的关键字段位置,解决了基于聚类的报文分类方法和基于频繁序列的报文分类方法难以提取工控协议报文中的类别标识的问题。
3、由于本发明采用了步骤(8),其首先对依据关键字段构造的特征矩阵进行降维,然后就可以较为直观地从降维数据地分布中获得聚类数,最后使用Jenks-Break算法基于自然断点对报文进行分类,避免了多报文间两两比对、计算距离或相似度,解决了基于聚类算法的报文分类方法非常耗时的技术问题。
附图说明
图1是本发明基于对话分析的工控协议报文分类方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明提供了一种基于对话分析的工控协议报文分类方法,包括以下步骤:
(1)从工控网络中获取多个包括请求报文和响应报文的对话报文。并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文。
上述步骤(1)的优点在于,通过序列比对算法提取对话报文之间的关联特征,提高了分类精度。
具体而言,本步骤包括以下子步骤:
(1-1)从工控网络中获取多个报文,取出多个报文中的第一个报文,与所有报文中的第二个报文进行匹配,若匹配成功,则将第一个报文和第二个报文分别作为请求报文和响应报文取出,并将二者组合为对话报文,然后将第一个报文继续与所有报文中的剩余报文进行匹配;若不匹配,则将第一个报文继续与所有报文中的剩余报文进行匹配,若所有报文中没有一个报文与第一个报文匹配,则将第一个报文丢弃。
具体匹配方式如下:若第一个报文中的源IP与第二个报文中的目的IP相同,第一个报文中的源端口与第二个报文中的目的端口相同,第一个报文中的目的IP与第二个报文中的源IP相同,第一个报文中的目的端口与第二个报文中的源端口相同,则表示二者匹配成功,否则表示匹配失败。
(1-2)针对步骤(1-1)中获取的所有报文中的剩余报文,重复上述步骤(1-1),直至所有报文都被处理完毕为止,从而获得多个对话报文。
(1-3)从步骤(1-2)得到的所有对话报文中的第一个对话报文,根据该对话报文中的请求报文和响应报文初始化一个大小为(n+2)*(m+2)的二维矩阵M,其中的元素表示为M[i][j],0<i<n+3,0<j<m+3,其中m表示请求报文req的字节长度,n表示响应报文res的字节长度为n;
(1-4)设置计数器p=3;
(1-5)将二维矩阵M中的元素M[1][p]更新为req[p-2],其中req[p-2]表示请求报文req中的第p-2个字节值。
(1-6)计数器p=p+1,并判断p是否等于m+2,如果是则转入步骤(1-7),否则返回步骤(1-5)。
(1-7)设置计数器q=3;
(1-8)将二维矩阵M中的元素M[q][1]更新为res[q-2],其中res[q-2]表示响应报文res中的第q-2个字节值。
(1-9)设置计数器q=q+1,并判断q是否等于n+2,如果是则转入步骤(1-10),否则返回步骤(1-8)。
(1-10)设置计数器k=2;
(1-11)将二维矩阵M中的元素M[2][k]设置为0。
(1-12)设置计数器k=k+1,并判断k是否等于m+2,如果是则转入步骤(1-13),否则返回步骤(1-11)。
(1-13)设置计数器h=2;
(1-14)将二维矩阵M中的元素M[h][2]设置为0;
(1-15)设置计数器h=h+1,并判断h是否等于n+2,如果是则转入步骤(1-16),否则返回步骤(1-14)。
(1-16)设置计数器x=3。
(1-17)设置计数器y=3。
cagree(req[x-2],res[y-2])=|{0≤n<8:req[x-2]n=res[y-2]n}|表示req[x-2]和res[y-2]这两个字节值的二进制表示中相同位的个数。
上述子步骤(1-18)的优点在于,定义了字节间的相似度评估函数,即便相同字段间的取值不同也可以正确对齐。
(1-19)设置计数器y=y+1,并判断y是否等于m+2,如果是则转入步骤(1-20),否则返回步骤(1-18)。
(1-20)设置计数器x=x+1,并判断x是否等于n+2,如果是则转入步骤(1-21),否则返回步骤(1-17)。
(1-21)设置计数器a=n+2,b=m+2,c=0;
(1-22)初始化对齐请求报文和对齐响应报文,其可以为任意长度。
(1-23)判断二维矩阵M中的元素M[a][b]是否和以下两个元素中的任意一个相等:M[a-1][b]和M[a][b-1],如果M[a][b]与任意一个都不相等,则转入步骤(1-24),如果M[a][b]与M[a-1][b]相等,则转入步骤(1-25),如果M[a][b]与M[a][b-1]相等,则转入步骤(1-26);
(1-24)将对齐请求报文中的第c个字节值设置为req[b-2],将对齐响应报文中的第c个字节值设置为res[a-2],然后转入步骤(1-27)。
(1-25)将对齐请求报文中的第c个字节值设置为0,将对齐响应报文中的第c个字节值设置为res[a-2],然后转入步骤(1-27);
(1-26)将对齐请求报文中的第c个字节值设置为req[b-2],将对齐响应报文中的第c个字节值设置为0,然后转入步骤(1-27)。
(1-27)计数器a=a-1,b=b-1,c=c+1,并判断a和b是否都等于3,若是则转入步骤(1-28),否则返回步骤(1-23)。
(1-28)分别对获得的对齐请求报文和对齐响应报文进行逆向处理,以获得最终的对齐请求报文和对齐响应报文。
(1-29)针对步骤(1-2)得到的所有对话报文中的剩余对话报文,重复上述步骤(1-3)至(1-28),直至所有对话报文都被处理完毕为止,从而获得与每个对话报文对应的对齐请求报文和对齐响应报文。
(2)针对步骤(1)得到的每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列;
上述步骤(2)的优点在于,将反映关联性特征的对齐请求报文和对齐响应报文抽象为状态序列,简化了后续排序过程。
具体而言,如果对齐请求报文中第i个字节值为0,对齐响应报文中第i个字节值也为0,则状态序列中第i个字符为A;如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值为0,则状态序列中第i个字符为B,如果对齐请求报文中第i个字节值为0,对齐响应报文中第i个字节值不为0,则状态序列中第i个字符为C,如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值也不为0,二者相等,则状态序列中第i个字符为D,如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值也不为0,二者不等,则状态序列中第i个字符为E。
(3)根据步骤(2)生成的所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;
具体而言,本步骤中的排序过程,首先是比较所有对话报文对应的状态序列中的第一个字符在字符表中ASIIC码的大小,并按照从大到小或者从小到大的顺序对对应的报文进行排序,如果出现多个ASIIC码的大小相同的情况,则进一步比较所有对话报文对应的状态序列中的第二个字符在字符表中ASIIC码的大小,并按照从大到小或者从小到大的顺序对对应的报文进行排序,…,以此类推,从而最终得到排序后的多个对话报文。
(4)针对步骤(3)得到的排序后的多个对话报文而言,依次取出每个对话报文,根据该对话报文、以及该对话报文在排序后的多个对话报文中相邻的对话报文对该对话报文的所有位置进行投票处理,以得到该对话报文中所有位置的投票结果,并根据投票结果获取所有对话报文在各个位置的票数总和;
上述步骤(4)的优点在于,通过投票的方式,较为准确的从报文中识别出包含类别标识的关键字段位置。
具体而言,本步骤首先是取出排序后的多个对话报文中的第一个对话报文,然后判断该对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第二个对话报文所包括的请求报文中第一个位置的字符相同,并且该对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第二个对话报文所包括的响应报文中第一个位置的字符相同,如果是,则对第一个对话报文中的第一个位置进行投票,…,以此类推,从而得到第一个对话报文中所有位置的投票结果;接下来,针对排序后的多个对话报文中的剩余报文,重复上述过程,从而得到所有对话报文中所有位置的投票结果。
需要注意的是,如果取出来的是第二个对话报文,则判断条件是:该第二个对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第一个对话报文所包括的请求报文中第一个位置的字符相同,并且该第二个对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第一个对话报文所包括的响应报文中第一个位置的字符相同,同时该第二个对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第三个对话报文所包括的请求报文中第一个位置的字符相同,并且该第二个对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第三个对话报文所包括的响应报文中第一个位置的字符相同。
举例而言,本步骤中得到的所有对话报文在各个位置的票数总和可以是:
第一个位置:10票
第二个位置:5票
第三个位置:15票
第四个位置:20票
第五个位置:19票
第六个位置:18票
…
(5)根据步骤(4)得到的所有对话报文在各个位置的票数总和对所有位置进行筛选,以得到筛选后的位置与总票数的映射关系;
具体而言,筛选过程中各个位置的得票率(即该位置的总票数除以对话报文的总数)阈值是90%到95%之间,优先为90%。
针对步骤(4)的示例而言,假设对话报文总数是20,则第一个位置的得票率是50%,第二个位置的得票率是25%,第三个位置的得票率是75%,第四个位置的得票率是100%,第五个位置的得票率是95%,第六个位置的得票率是90%,…,以此类推。
因此经过本步骤的筛选后,得到新的映射关系是:
第四个位置:20票
第五个位置:19票
第六个位置:18票
(6)根据步骤(5)得到的筛选后的位置与总票数的映射关系构建特征矩阵;
具体而言,本步骤首先是从步骤(3)得到的排序后的多个对话报文取第一个对话报文,然后获取该对话报文所包括的请求报文和响应报文在步骤(5)得到的筛选后的位置与总票数的映射关系中第一个位置处的字节值之和,随后获取该对话报文所包括的请求报文和响应报文在步骤(5)得到的筛选后的位置与总票数的映射关系中第二个位置处的字节值之和,…,以此类推,最终得到与第一个对话报文对应的、由多个字节之和组成的向量;然后针对步骤(3)得到的排序后的多个对话报文中的剩余报文,重复上述过程,从而得到所有对话报文对应的向量,所有向量构成特征矩阵。
(7)使用PCA算法对步骤(6)得到的特征矩阵进行降维处理,以得到一维向量;
上述步骤(7)的优点在于,将多维矩阵映射为一维向量,简化了后续分类过程。
具体而言,本步骤是在PCA算法的执行过程中,将降维后的特征数量设置为1。
(8)使用Jenks-Break算法对步骤(7)得到的一维向量对应的所有对话报文进行分类,以得到分类结果。
上述步骤(8)的优势在于,基于自然断点对一维向量进行分类,避免了复杂的距离或相似度计算。
具体而言,本步骤首先根据步骤(7)得到的一维向量中自然断点的数量确定聚类数,然后依据聚类数并使用Jenks-Break算法对该一维向量中每个元素在特征矩阵中对应的行所对应的对话报文进行分类,从而得到分类结果。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于对话分析的工控协议报文分类方法,其特征在于,包括以下步骤:
(1)从工控网络中获取多个包括请求报文和响应报文的对话报文。并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文。
(2)针对步骤(1)得到的每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列;
(3)根据步骤(3)生成的所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;
(4)针对步骤(3)得到的排序后的多个对话报文而言,依次取出每个对话报文,根据该对话报文、以及该对话报文在排序后的多个对话报文中相邻的对话报文对该对话报文的所有位置进行投票处理,以得到该对话报文中所有位置的投票结果,并根据投票结果获取所有对话报文在各个位置的票数总和;
(5)根据步骤(4)得到的所有对话报文在各个位置的票数总和对所有位置进行筛选,以得到筛选后的位置与总票数的映射关系;
(6)根据步骤(5)得到的筛选后的位置与总票数的映射关系构建特征矩阵;
(7)使用PCA算法对步骤(6)得到的特征矩阵进行降维处理,以得到一维向量;
(8)使用Jenks-Break算法对步骤(7)得到的一维向量对应的所有对话报文进行分类,以得到分类结果。
2.根据权利要求1所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(1)包括以下子步骤:
(1-1)从工控网络中获取多个报文,取出多个报文中的第一个报文,与所有报文中的第二个报文进行匹配,若匹配成功,则将第一个报文和第二个报文分别作为请求报文和响应报文取出,并将二者组合为对话报文,然后将第一个报文继续与所有报文中的剩余报文进行匹配;若不匹配,则将第一个报文继续与所有报文中的剩余报文进行匹配,若所有报文中没有一个报文与第一个报文匹配,则将第一个报文丢弃。
(1-2)针对步骤(1-1)中获取的所有报文中的剩余报文,重复上述步骤(1-1),直至所有报文都被处理完毕为止,从而获得多个对话报文。
(1-3)从步骤(1-2)得到的所有对话报文中的第一个对话报文,根据该对话报文中的请求报文和响应报文初始化一个大小为(n+2)*(m+2)的二维矩阵M,其中的元素表示为M[i][j],0<i<n+3,0<j<m+3,其中m表示请求报文req的字节长度,n表示响应报文res的字节长度为n;
(1-4)设置计数器p=3;
(1-5)将二维矩阵M中的元素M[1][p]更新为req[p-2],其中req[p-2]表示请求报文req中的第p-2个字节值。
(1-6)计数器p=p+1,并判断p是否等于m+2,如果是则转入步骤(1-7),否则返回步骤(1-5)。
(1-7)设置计数器q=3;
(1-8)将二维矩阵M中的元素M[q][1]更新为res[q-2],其中res[q-2]表示响应报文res中的第q-2个字节值。
(1-9)设置计数器q=q+1,并判断q是否等于n+2,如果是则转入步骤(1-10),否则返回步骤(1-8)。
(1-10)设置计数器k=2;
(1-11)将二维矩阵M中的元素M[2][k]设置为0。
(1-12)设置计数器k=k+1,并判断k是否等于m+2,如果是则转入步骤(1-13),否则返回步骤(1-11)。
(1-13)设置计数器h=2;
(1-14)将二维矩阵M中的元素M[h][2]设置为0;
(1-15)设置计数器h=h+1,并判断h是否等于n+2,如果是则转入步骤(1-16),否则返回步骤(1-14)。
(1-16)设置计数器x=3。
(1-17)设置计数器y=3。
(1-18)将M[x][y]设置为以下三个值中的最大值:M[x][y-1]、M[x-1][y]、其中cagree(req[x-2],res[y-2])=|{0≤n<8:req[x-2]n=res[y-2]n}|表示req[x-2]和res[y-2]这两个字节值的二进制表示中相同位的个数。
(1-19)设置计数器y=y+1,并判断y是否等于m+2,如果是则转入步骤(1-20),否则返回步骤(1-18)。
(1-20)设置计数器x=x+1,并判断x是否等于n+2,如果是则转入步骤(1-21),否则返回步骤(1-17)。
(1-21)设置计数器a=n+2,b=m+2,c=0;
(1-22)初始化对齐请求报文和对齐响应报文,其可以为任意长度。
(1-23)判断二维矩阵M中的元素M[a][b]是否和以下两个元素中的任意一个相等:M[a-1][b]和M[a][b-1],如果M[a][b]与任意一个都不相等,则转入步骤(1-24),如果M[a][b]与M[a-1][b]相等,则转入步骤(1-25),如果M[a][b]与M[a][b-1]相等,则转入步骤(1-26);
(1-24)将对齐请求报文中的第c个字节值设置为req[b-2],将对齐响应报文中的第c个字节值设置为res[a-2],然后转入步骤(1-27)。
(1-25)将对齐请求报文中的第c个字节值设置为0,将对齐响应报文中的第c个字节值设置为res[a-2],然后转入步骤(1-27);
(1-26)将对齐请求报文中的第c个字节值设置为req[b-2],将对齐响应报文中的第c个字节值设置为0,然后转入步骤(1-27)。
(1-27)计数器a=a-1,b=b-1,c=c+1,并判断a和b是否都等于3,若是则转入步骤(1-28),否则返回步骤(1-23)。
(1-28)分别对获得的对齐请求报文和对齐响应报文进行逆向处理,以获得最终的对齐请求报文和对齐响应报文。
(1-29)针对步骤(1-2)得到的所有对话报文中的剩余对话报文,重复上述步骤(1-3)至(1-28),直至所有对话报文都被处理完毕为止,从而获得与每个对话报文对应的对齐请求报文和对齐响应报文。
3.根据权利要求1或2所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(1-1)中的具体匹配方式为:若第一个报文中的源IP与第二个报文中的目的IP相同,第一个报文中的源端口与第二个报文中的目的端口相同,第一个报文中的目的IP与第二个报文中的源IP相同,第一个报文中的目的端口与第二个报文中的源端口相同,则表示二者匹配成功,否则表示匹配失败。
4.根据权利要求1至3中任意一项所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(2)中,如果对齐请求报文中第i个字节值为0,对齐响应报文中第i个字节值也为0,则状态序列中第i个字符为A;如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值为0,则状态序列中第i个字符为B,如果对齐请求报文中第i个字节值为0,对齐响应报文中第i个字节值不为0,则状态序列中第i个字符为C,如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值也不为0,二者相等,则状态序列中第i个字符为D,如果对齐请求报文中第i个字节值不为0,对齐响应报文中第i个字节值也不为0,二者不等,则状态序列中第i个字符为E。
5.根据权利要求1所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(3)中的排序过程,首先是比较所有对话报文对应的状态序列中的第一个字符在字符表中ASIIC码的大小,并按照从大到小或者从小到大的顺序对对应的报文进行排序,如果出现多个ASIIC码的大小相同的情况,则进一步比较所有对话报文对应的状态序列中的第二个字符在字符表中ASIIC码的大小,并按照从大到小或者从小到大的顺序对对应的报文进行排序,…,以此类推,从而最终得到排序后的多个对话报文。
6.根据权利要求1所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(4)首先是取出排序后的多个对话报文中的第一个对话报文,然后判断该对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第二个对话报文所包括的请求报文中第一个位置的字符相同,并且该对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第二个对话报文所包括的响应报文中第一个位置的字符相同,如果是,则对第一个对话报文中的第一个位置进行投票,…,以此类推,从而得到第一个对话报文中所有位置的投票结果;接下来,针对排序后的多个对话报文中的剩余报文,重复上述过程,从而得到所有对话报文中所有位置的投票结果。
7.根据权利要求6所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(4)中如果取出来的是第二个对话报文,则判断条件是:该第二个对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第一个对话报文所包括的请求报文中第一个位置的字符相同,并且该第二个对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第一个对话报文所包括的响应报文中第一个位置的字符相同,同时该第二个对话报文所包括的请求报文中第一个位置的字符,是否和排序后的多个对话报文中的第三个对话报文所包括的请求报文中第一个位置的字符相同,并且该第二个对话报文所包括的响应报文中第一个位置的字符,是否和排序后的多个对话报文中的第三个对话报文所包括的响应报文中第一个位置的字符相同。
8.根据权利要求1所述的基于对话分析的工控协议报文分类方法,其特征在于,步骤(6)首先是从步骤(3)得到的排序后的多个对话报文取第一个对话报文,然后获取该对话报文所包括的请求报文和响应报文在步骤(5)得到的筛选后的位置与总票数的映射关系中第一个位置处的字节值之和,随后获取该对话报文所包括的请求报文和响应报文在步骤(5)得到的筛选后的位置与总票数的映射关系中第二个位置处的字节值之和,…,以此类推,最终得到与第一个对话报文对应的、由多个字节之和组成的向量;然后针对步骤(3)得到的排序后的多个对话报文中的剩余报文,重复上述过程,从而得到所有对话报文对应的向量,所有向量构成特征矩阵。
9.一种基于对话分析的工控协议报文分类系统,其特征在于,包括:
第一模块,用于从工控网络中获取多个包括请求报文和响应报文的对话报文。并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文。
第二模块,用于针对第一模块得到的每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列;
第三模块,用于根据第二模块生成的所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;
第四模块,用于针对第三模块得到的排序后的多个对话报文而言,依次取出每个对话报文,根据该对话报文、以及该对话报文在排序后的多个对话报文中相邻的对话报文对该对话报文的所有位置进行投票处理,以得到该对话报文中所有位置的投票结果,并根据投票结果获取所有对话报文在各个位置的票数总和;
第五模块,用于根据第四模块得到的所有对话报文在各个位置的票数总和对所有位置进行筛选,以得到筛选后的位置与总票数的映射关系;
第六模块,用于根据第五模块得到的筛选后的位置与总票数的映射关系构建特征矩阵;
第七模块,用于使用PCA算法对第六模块得到的特征矩阵进行降维处理,以得到一维向量;
第八模块,用于使用Jenks-Break算法对第七模块得到的一维向量对应的所有对话报文进行分类,以得到分类结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110417738.8A CN113139593B (zh) | 2021-04-19 | 2021-04-19 | 一种基于对话分析的工控协议报文分类方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110417738.8A CN113139593B (zh) | 2021-04-19 | 2021-04-19 | 一种基于对话分析的工控协议报文分类方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113139593A true CN113139593A (zh) | 2021-07-20 |
CN113139593B CN113139593B (zh) | 2022-06-21 |
Family
ID=76812691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110417738.8A Active CN113139593B (zh) | 2021-04-19 | 2021-04-19 | 一种基于对话分析的工控协议报文分类方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113139593B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110177517A1 (en) * | 2010-01-19 | 2011-07-21 | Artemis Health, Inc. | Partition defined detection methods |
CN102891852A (zh) * | 2012-10-11 | 2013-01-23 | 中国人民解放军理工大学 | 基于报文分析的协议格式自动推断方法 |
CN106850333A (zh) * | 2016-12-23 | 2017-06-13 | 中国科学院信息工程研究所 | 一种基于反馈聚类的网络设备识别方法及系统 |
CN107229842A (zh) * | 2017-06-02 | 2017-10-03 | 肖传乐 | 一种基于局部图的三代测序序列校正方法 |
CN108449356A (zh) * | 2018-04-04 | 2018-08-24 | 国家计算机网络与信息安全管理中心 | 一种基于多序列比对的在线协议格式推断方法 |
CN108712414A (zh) * | 2018-05-16 | 2018-10-26 | 东南大学 | 一种基于序列比对的二进制未知协议报文格式划分方法 |
CN108960307A (zh) * | 2018-06-22 | 2018-12-07 | 中国人民解放军战略支援部队信息工程大学 | 一种私有协议字段格式提取方法、装置及服务器 |
CN110110081A (zh) * | 2019-04-09 | 2019-08-09 | 国家计算机网络与信息安全管理中心 | 用于移动互联网海量监测数据的分级分类处理方法及系统 |
CN110336817A (zh) * | 2019-07-08 | 2019-10-15 | 大连大学 | 一种基于TextRank的未知协议帧定位方法 |
CN110602034A (zh) * | 2019-07-08 | 2019-12-20 | 湖南大学 | 一种基于pso-svm检测s7协议异常通讯行为的方法和系统 |
US20200036752A1 (en) * | 2007-06-29 | 2020-01-30 | Trend Micro Incorporated | Semi-automatic rule generator |
CN111314279A (zh) * | 2019-11-25 | 2020-06-19 | 北京航空航天大学 | 一种基于网络流量的未知协议逆向系统 |
-
2021
- 2021-04-19 CN CN202110417738.8A patent/CN113139593B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200036752A1 (en) * | 2007-06-29 | 2020-01-30 | Trend Micro Incorporated | Semi-automatic rule generator |
US20110177517A1 (en) * | 2010-01-19 | 2011-07-21 | Artemis Health, Inc. | Partition defined detection methods |
CN102891852A (zh) * | 2012-10-11 | 2013-01-23 | 中国人民解放军理工大学 | 基于报文分析的协议格式自动推断方法 |
CN106850333A (zh) * | 2016-12-23 | 2017-06-13 | 中国科学院信息工程研究所 | 一种基于反馈聚类的网络设备识别方法及系统 |
CN107229842A (zh) * | 2017-06-02 | 2017-10-03 | 肖传乐 | 一种基于局部图的三代测序序列校正方法 |
CN108449356A (zh) * | 2018-04-04 | 2018-08-24 | 国家计算机网络与信息安全管理中心 | 一种基于多序列比对的在线协议格式推断方法 |
CN108712414A (zh) * | 2018-05-16 | 2018-10-26 | 东南大学 | 一种基于序列比对的二进制未知协议报文格式划分方法 |
CN108960307A (zh) * | 2018-06-22 | 2018-12-07 | 中国人民解放军战略支援部队信息工程大学 | 一种私有协议字段格式提取方法、装置及服务器 |
CN110110081A (zh) * | 2019-04-09 | 2019-08-09 | 国家计算机网络与信息安全管理中心 | 用于移动互联网海量监测数据的分级分类处理方法及系统 |
CN110336817A (zh) * | 2019-07-08 | 2019-10-15 | 大连大学 | 一种基于TextRank的未知协议帧定位方法 |
CN110602034A (zh) * | 2019-07-08 | 2019-12-20 | 湖南大学 | 一种基于pso-svm检测s7协议异常通讯行为的方法和系统 |
CN111314279A (zh) * | 2019-11-25 | 2020-06-19 | 北京航空航天大学 | 一种基于网络流量的未知协议逆向系统 |
Non-Patent Citations (3)
Title |
---|
J. LU AT EL.: "Game-Theoretic Design of Optimal Two-Sided Rating Protocols for Service Exchange Dilemma in Crowdsourcing", 《 IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY》 * |
陆凯: "基于网络流量的二进制未知协议逆向技术研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
陶思宇: "二进制私有协议逆向字段格式提取技术研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113139593B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | Compound domain generalization via meta-knowledge encoding | |
Ibrahim et al. | Cluster representation of the structural description of images for effective classification | |
Lucchese et al. | A Unifying Framework for Mining Approximate Top-$ k $ Binary Patterns | |
CN109299741B (zh) | 一种基于多层检测的网络攻击类型识别方法 | |
CN109218223B (zh) | 一种基于主动学习的鲁棒性网络流量分类方法及系统 | |
CN111027048A (zh) | 一种操作系统识别方法、装置、电子设备及存储介质 | |
US11658989B1 (en) | Method and device for identifying unknown traffic data based dynamic network environment | |
CN113723440B (zh) | 一种云平台上加密tls应用流量分类方法及系统 | |
CN115357904B (zh) | 一种基于程序切片和图神经网络的多类漏洞检测方法 | |
WO2021190398A1 (zh) | 设备型号的识别方法、装置及系统 | |
CN105827603A (zh) | 未明协议特征库建立方法、未明报文分类方法及相关装置 | |
Wang et al. | Time-variant graph classification | |
CN115293919B (zh) | 面向社交网络分布外泛化的图神经网络预测方法及系统 | |
Esfandiari et al. | Almost linear time density level set estimation via dbscan | |
Liu et al. | End-to-end binary representation learning via direct binary embedding | |
CN112035449A (zh) | 数据处理方法及装置、计算机设备、存储介质 | |
Pasyuk et al. | Feature selection in the classification of network traffic flows | |
CN116032741A (zh) | 一种设备识别方法、装置、电子设备和计算机存储介质 | |
CN111737694B (zh) | 一种基于行为树的恶意软件同源性分析方法 | |
CN100440859C (zh) | 一种位图聚合的递推流分类方法及其系统 | |
CN113139593B (zh) | 一种基于对话分析的工控协议报文分类方法和系统 | |
Ma et al. | Toward making unsupervised graph hashing discriminative | |
Bai et al. | A hierarchical transitive-aligned graph kernel for un-attributed graphs | |
CN110417786B (zh) | 一种基于深度特征的p2p流量细粒度识别方法 | |
CN115242424A (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 |