[发明专利]一种基于对话分析的工控协议报文分类方法和系统有效
申请号: | 202110417738.8 | 申请日: | 2021-04-19 |
公开(公告)号: | CN113139593B | 公开(公告)日: | 2022-06-21 |
发明(设计)人: | 李肯立;边祥迪;刘刚;段明星;刘楚波 | 申请(专利权)人: | 湖南大学 |
主分类号: | H04L69/22 | 分类号: | H04L69/22;G06V10/762;G06V10/764;G06V10/77 |
代理公司: | 武汉臻诚专利代理事务所(普通合伙) 42233 | 代理人: | 宋业斌 |
地址: | 410082 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 对话 分析 协议 报文 分类 方法 系统 | ||
1.一种基于对话分析的工控协议报文分类方法,其特征在于,包括以下步骤:
(1)从工控网络中获取多个包括请求报文和响应报文的对话报文;并使用序列比对算法对每个对话报文中的请求报文和响应报文进行比对处理,以获取与该对话报文对应的对齐请求报文和对齐响应报文;步骤(1)包括以下子步骤:
(1-1)从工控网络中获取多个报文,取出多个报文中的第一个报文,与所有报文中的第二个报文进行匹配,若匹配成功,则将第一个报文和第二个报文分别作为请求报文和响应报文取出,并将二者组合为对话报文,然后将第一个报文继续与所有报文中的剩余报文进行匹配;若不匹配,则将第一个报文继续与所有报文中的剩余报文进行匹配,若所有报文中没有一个报文与第一个报文匹配,则将第一个报文丢弃;
(1-2)针对步骤(1-1)中获取的所有报文中的剩余报文,重复上述步骤(1-1),直至所有报文都被处理完毕为止,从而获得多个对话报文;
(1-3)从步骤(1-2)得到的所有对话报文中的第一个对话报文,根据该对话报文中的请求报文和响应报文初始化一个大小为(n+2)*(m+2)的二维矩阵M,其中的元素表示为M[i][j],0in+3,0jm+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),直至所有对话报文都被处理完毕为止,从而获得与每个对话报文对应的对齐请求报文和对齐响应报文;
(2)针对步骤(1)得到的每个对话报文而言,对其对应的对齐请求报文和对齐响应报文进行逐字节比对处理,以生成该对话报文对应的状态序列;
(3)根据步骤(2)生成的所有对话报文对应的状态序列对所有对话报文进行排序,以得到排序后的多个对话报文;
(4)针对步骤(3)得到的排序后的多个对话报文而言,依次取出每个对话报文,根据该对话报文、以及该对话报文在排序后的多个对话报文中相邻的对话报文对该对话报文的所有位置进行投票处理,以得到该对话报文中所有位置的投票结果,并根据投票结果获取所有对话报文在各个位置的票数总和;
(5)根据步骤(4)得到的所有对话报文在各个位置的票数总和对所有位置进行筛选,以得到筛选后的位置与总票数的映射关系;
(6)根据步骤(5)得到的筛选后的位置与总票数的映射关系构建特征矩阵;
(7)使用PCA算法对步骤(6)得到的特征矩阵进行降维处理,以得到一维向量;
(8)使用Jenks-Break算法对步骤(7)得到的一维向量对应的所有对话报文进行分类,以得到分类结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南大学,未经湖南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110417738.8/1.html,转载请声明来源钻瓜专利网。