一种未知协议报文格式推断方法技术

技术编号:12110518 阅读:154 留言:0更新日期:2015-09-24 10:42
本发明专利技术提出一种未知协议报文格式推断方法,捕获网络上的原始数据包,根据数据包的长度建立序列比对二叉树,从二叉树叶子节点向上进行序列比对,序列比对采用基于动态规划的序列比对算法,所有节点序列比对结束后得到具有相同的长度叶子节点对齐的结果,根据结果寻找相同的部分,实现自动对未知协议报文格式推断并输出。该发明专利技术提供的一种基于数据包序列比对的自动未知协议报文方法较之现有人工参与的未知数据包格式推断方法,在采集数据包数目确定的基础上,可以降低人工参与的工作量实现自动推断;在没有数据包格式任何先验信息的条件下,可以实现对未知协议数据包格式的有效推断。

【技术实现步骤摘要】

本专利技术属于网络数据流未知协议识别领域,具体为一种未知协议报文格式推断方 法,利用网络中截获的数据包,根据数据包序列比对技术实现对未知协议数据报文格式推 断。
技术介绍
现在的协议识别技术主要包括基于端口映射的协议识别技术、基于静态特征的深 度包检测协议识别技术和基于动态行为特征的协议识别技术等。这些方法都是根据从公开 的协议规范提取该类协议的协议特征,进而建立该协议的特征库,作为识别的依据。 根据协议格式规范,可以对流量进行应用识别。但是很多网络协议,例如私有协 议或者非标准协议,没有公共的协议规范,因此不能建立特征库,传统的协议识别工具无法 使用。现目前的挑战在于,现在未知协议分析没有自动的方法,大多采用人工参与的方式。 数据包中具有固定长度的域还可以人工反向推断出来,但是当数据包的格式中具有变长域 时,试图进行自动格式推断难度更大。
技术实现思路
要解决的技术问题 针对在侦察截获网络数据包后,如何根据网络数据包进行序列比对实现对未知协 议报文格式的推测的问题,本专利技术提出了一种基于数据包序列比对的自动未知协议报文推 断方法,该方法的提出主要有以下目的:1、未知协议报文推断仅根据网络截获的数据流,不 依赖于公共的协议格式规范;2、在网络截获数据充足的条件下,可以实现自动协议格式报 文数据域的有效推测,降低人工参与量。 技术方案 本专利技术的技术方案为: 所述,其特征在于:包括以下步骤: 步骤1 :采集N个数据包序列,按照数据包序列的长度对数据包序列进行排序;建 立最底层具有N个叶子节点,高度为『log2ATI啲比对完全二叉树;比对完全二叉树初始时, 将排序后的N个数据包序列依次对应赋值给最底层N个叶子节点,每个叶子节点内的值为 一个数据包序列,其余节点为空值; 步骤2 :根据构造的比对完全二叉树,按照下面的规则自下而上进行序列比对,使 得比对完全二叉树中的每个节点均有值,且每条边均有对应的空格插入操作方式:若一个 节点为空值,并且它的左右子节点均有值,则对其子节点进行序列比对,并将比对结果序列 存储到该节点中,同时将序列比对产生的空格插入操作方式记录到对应的边上; 所述序列比对采用以下方法: 步骤2. 1 :构造一个行数为M+1,列数为K+1的矩阵,其中M为第一数据包序列的长 度,K为第二数据包序列的长度; 步骤2.2 :将第一数据包序列放置在矩阵左侧,且第一数据包序列中的每个字符 对应矩阵的一行,第一数据包序列的所有字符依次对应第2行至第M+1行;将第二数据包序 列放置在矩阵上方,且第二数据包序列中的每个字符对应矩阵的一列,第二数据包序列的 所有字符依次对应第2列至第K+1列; 步骤2. 3 :将矩阵的第1行和第1列的元素全部赋0 ;矩阵中的其余元素值通过以 下公式得到: Qu为矩阵第i行第j列的元素值,i取2~M+l,j取2至K+l,Su为打分值,若矩 阵第i行对应的第一数据包序列中的字符与矩阵第j列对应的第二数据包序列中的字符相 同,则Si』=1,否则Si』=0 ; 步骤2. 4 :对于步骤2. 3得到的赋值完成的矩阵,从矩阵中取值最大的元素开始, 反向跟踪到矩阵的第1行第1列元素,得到一条从矩阵中取值最大的元素到矩阵第1行第 1列元素的路径;所述反向跟踪的规则为:对于第i行第j列元素:比较第i-1行第j列元 素、第i行第j-1列元素、第i-1行第j-1列元素的元素值,第i行第j列元素的反向跟踪 方向为第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素中元素值最大的 元素位置,若第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值 相同,则第i行第j列元素的反向跟踪方向为第i-1行第j-1列元素位置; 步骤2. 5 :根据步骤2. 4得到的路径,得到第一序列和第二序列的空格插入操作方 式:对于处于路径中的第i行第j列元素: 若反向跟踪方向为第i-1行第j-1列元素位置,则不进行操作; 若反向跟踪方向为第i行第j-1列元素位置,则在第一数据包序列中插入空格,空 格插入位置为矩阵第i行对应的字符与矩阵第i+1行对应的字符之间; 若反向跟踪方向为第i-1行第j列元素位置,则在第二数据包序列中插入空格,空 格插入位置为矩阵第j列对应的字符与矩阵第j+1列对应的字符之间; 步骤2. 6 :将第一数据包序列和第二数据包序列按照步骤2. 5得到的空格插入操 作方式插入空格,得到比对结果序列; 步骤3 :比对完全二叉树的根节点中得到所有叶子节点对齐的结果,所述所有叶 子节点对齐的结果具有相同的长度;在所有叶子节点对齐的结果中,具有相同位置且字符 相同的部分组成推断出的协议报文格式。 有益效果 该专利技术提供的一种基于数据包序列比对的自动未知协议报文方法较之现有人工 参与的未知数据包格式推断方法,在采集数据包数目确定的基础上,可以降低人工参与的 工作量实现自动推断;在没有数据包格式任何先验信息的条件下,可以实现对未知协议数 据包格式的有效推断。【附图说明】 图1序列比对^叉树不意图。 图2序列比对算法示例图。 图3基于序列比对的自动未知协议报文推断方法实施实例示意图。左侧是数据报 文;右侧是推断分析系统。 图4未知协议报文格式推断结果。【具体实施方式】 下面结合具体实施例描述本专利技术: 如图3所示,左侧的数据采集系统包括一个网络数据包捕获工具,捕获网络上的 原始数据包直接传递到分析推断系统。分析推断系统根据数据包的长度建立序列比对二叉 树,从二叉树叶子节点向上进行序列比对,序列比对采用基于动态规划的序列比对算法。所 有节点序列比对结束后得到具有相同的长度叶子节点对齐的结果,根据结果寻找相同的部 分,实现自动对未知协议报文格式推断并输出,如图4所示。实施实例表明本专利技术所提出的 方法具备对未知协议报文格式推断能力同时减少了人工操作。 实施例的具体实现步骤为: 步骤1 :采集N个数据包序列。数据包采集通过网络数据包采集工具实现。采用 基于libpcap的数据捕获工具,通过增加一个旁路处理,对发送和接收到的数据包做过滤/ 缓冲等相关处理,最后可以将捕获网络上的原始数据包直接传递到应用程序。通过数据包 采集得到的原始数据包将作为序列比对的对象。 按照数据包序列的长度对数据包序列进行排序;建立最底层具有N个叶子节点, 高度为丨l〇g2A/丨的比对完全二叉树,如图1所示。比对完全二叉树初始时,将排序后的N个 数据包序列依次对应赋值给最底层N个叶子节点,每个叶子节点内的值为一个数据包序 列,其余节点为空值; 步骤2 :根据构造的比对完全二叉树,按照下面的规则自下而上进行序列比对,使 得比对完全二叉树中的每个节点均有值,且每条边均有对应的空格插入操作方式:若当前第1页1 2 本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/62/CN104935567.html" title="一种未知协议报文格式推断方法原文来自X技术">未知协议报文格式推断方法</a>

【技术保护点】
一种未知协议报文格式推断方法,其特征在于:包括以下步骤:步骤1:采集N个数据包序列,按照数据包序列的长度对数据包序列进行排序;建立最底层具有N个叶子节点,高度为的比对完全二叉树;比对完全二叉树初始时,将排序后的N个数据包序列依次对应赋值给最底层N个叶子节点,每个叶子节点内的值为一个数据包序列,其余节点为空值;步骤2:根据构造的比对完全二叉树,按照下面的规则自下而上进行序列比对,使得比对完全二叉树中的每个节点均有值,且每条边均有对应的空格插入操作方式:若一个节点为空值,并且它的左右子节点均有值,则对其子节点进行序列比对,并将比对结果序列存储到该节点中,同时将序列比对产生的空格插入操作方式记录到对应的边上;所述序列比对采用以下方法:步骤2.1:构造一个行数为M+1,列数为K+1的矩阵,其中M为第一数据包序列的长度,K为第二数据包序列的长度;步骤2.2:将第一数据包序列放置在矩阵左侧,且第一数据包序列中的每个字符对应矩阵的一行,第一数据包序列的所有字符依次对应第2行至第M+1行;将第二数据包序列放置在矩阵上方,且第二数据包序列中的每个字符对应矩阵的一列,第二数据包序列的所有字符依次对应第2列至第K+1列;步骤2.3:将矩阵的第1行和第1列的元素全部赋0;矩阵中的其余元素值通过以下公式得到:Qij=maxQi-1,j-1+SijQi,j-1Qi-1,j]]>Qij为矩阵第i行第j列的元素值,i取2~M+1,j取2至K+1,Sij为打分值,若矩阵第i行对应的第一数据包序列中的字符与矩阵第j列对应的第二数据包序列中的字符相同,则Sij=1,否则Sij=0;步骤2.4:对于步骤2.3得到的赋值完成的矩阵,从矩阵中取值最大的元素开始,反向跟踪到矩阵的第1行第1列元素,得到一条从矩阵中取值最大的元素到矩阵第1行第1列元素的路径;所述反向跟踪的规则为:对于第i行第j列元素:比较第i‑1行第j列元素、第i行第j‑1列元素、第i‑1行第j‑1列元素的元素值,第i行第j列元素的反向跟踪方向为第i‑1行第j列元素、第i行第j‑1列元素、第i‑1行第j‑1列元素中元素值最大的元素位置,若第i‑1行第j列元素、第i行第j‑1列元素、第i‑1行第j‑1列元素的元素值相同,则第i行第j列元素的反向跟踪方向为第i‑1行第j‑1列元素位置;步骤2.5:根据步骤2.4得到的路径,得到第一序列和第二序列的空格插入操作方式:对于处于路径中的第i行第j列元素:若反向跟踪方向为第i‑1行第j‑1列元素位置,则不进行操作;若反向跟踪方向为第i行第j‑1列元素位置,则在第一数据包序列中插入空格,空格插入位置为矩阵第i行对应的字符与矩阵第i+1行对应的字符之间;若反向跟踪方向为第i‑1行第j列元素位置,则在第二数据包序列中插入空格,空格插入位置为矩阵第j列对应的字符与矩阵第j+1列对应的字符之间;步骤2.6:将第一数据包序列和第二数据包序列按照步骤2.5得到的空格插入操作方式插入空格,得到比对结果序列;步骤3:比对完全二叉树的根节点中得到所有叶子节点对齐的结果,所述所有叶子节点对齐的结果具有相同的长度;在所有叶子节点对齐的结果中,具有相同位置且字符相同的部分组成推断出的协议报文格式。...

【技术特征摘要】

【专利技术属性】
技术研发人员:詹成石荣李剑张伟李洲
申请(专利权)人:中国电子科技集团公司第二十九研究所
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1