安卓系统环境下的网络协议形式化描述工具的制作方法

文档序号:6630152阅读:280来源:国知局
安卓系统环境下的网络协议形式化描述工具的制作方法
【专利摘要】本发明涉及一种安卓系统环境下的网络协议形式化描述工具,属于计算机网络领域。包含一套协议描述和解析流程及工具链。包括安卓环境下的网络数据包捕获,协议形式化描述解析,数据包内容解析三个模块,并最终显示协议分析的结果。具体通过定义典型网络协议的形式化描述语言解析流程和关键函数,以及数据包内容解析的流程和元素类定义、关键函数定义来实现。本发明应用于Android操作系统下的实时网络情况分析,协议质量分析以及安全性分析等相关研究和应用领域。能够在正常流量情况下对网络数据包进行捕获,程序设计对系统的影响小,且能够正常顺利的完成对数据包协议形式化描述的工作。
【专利说明】安卓系统环境下的网络协议形式化描述工具

【技术领域】
[0001]本发明涉及计算机网络领域,特别涉及协议工程、安卓操作系统、网络协议形式化描述方面,尤指一种安卓系统环境下的网络协议形式化描述工具,是一种安卓系统环境下的网络协议形式化描述和分析方法,以及以此为基础的协议形式化分析工具。

【背景技术】
[0002]安卓(Android)操作系统是Google于2007年11月宣布的基于Linux平台的开源移动操作系统,采用软件堆层的架构,主要分为三部分:底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库和虚拟机,有C++开发;上层为各种应用软件,由各公司自行开发。系统结构图如附图1。
[0003]Android系统的组件可以分为以下几个部分:
(I)关键应用程序(Applicat1ns)
Android系统与一系列核心应用程序包一起发布,包括Email客户端、SMS短消息程序,日历,地图,浏览器等。
[0004]( 2 )应用程序框架
开发人员可以完全访问核心应用程序所使用的API框架,这种设计简化了组件的重用,任何一个应用程序都可以发布它的功能块,并且其他的程序可以使用。其中包括视图、内容提供器、资源管理器等。
[0005](3)系统运行库
包括程序库、和运行库,能够被Android系统中的不同组件使用,提供了 JAVA编程语言核心库的大多数功能。
[0006](4) Linux 内核
Android的核心系统依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议和驱动模型。Linux内核也作为硬件和软件栈之间的抽象层。
[0007]网络协议形式化模型常用的主要包含三种:
(I)有限状态机FSM
FSM是许多形式化方法的基础,它可以实现与其他形式化方法的组合和转换,并且易于自动实现,因此在形式化描述中占有重要地位。基于FSM描述的协议验证可通过构造可达树来实现。FSM简单直观,但描述能力有限,因此在通信协议的描述中,通常需要对其进行扩展和优化。
[0008](2) Petri 网
Petri网是一种适合于并发、异步、分布式系统描述与分析的图形数学工具,目前已经成为网络协议分析和设计的典型模型之一。Petri网在协议系统的描述和分析方面,有许多分析技术,例如可达性分析、不变量分析、构造理论、形式语言理论等。为了在不同领域的应用,从基本Petri网演化出许多扩展的研究,包括谓词/动作Petri网,时间Petri网,随机Petri网等。
[0009](3)通信进程演算CCS
CCS是进程代数的基础,能够严格的表述一个系统或进程执行时事件的时序性以及系统之间通信的特性。能以严密的代数演算方法验证协议的性质,因此它也是计算机通信系统的基本理论模型之一。使用扩展规则、限制规则以及其他运算法则将包含组合算子的表达式扩展为不包含组合算子的表达式,可以验证多个进程组合而成的系统是否有活动性和安全性。其优点在于能够精密的表达谢意的逻辑结构和协议的时序性,但不能直观的描述协议性质。
[0010]网络协议形式化描述语言通常是以严格的数学方法为基础,并且有严格的语法和语义的定义,可以精确、完全的表达协议的功能、性能和行为,广泛的应用于协议的分析、验证、实现、测试等系统中。
[0011]网络协议形式化描述语言通常分为公用部分和扩展部分。公用部分定义了网络协议的组成部分以及协议之间的关系,扩展部分用于定义网络协议的一些特殊的细节。在实际的描述系统中,系统所使用的公用部分都是相同的,而对于扩展部分,各个系统有独特的部分,因为各个系统所要描述的重点是不同的。
[0012]扩展标记语言(XML)是一种广泛应用的描述语言,源自于标准导引标识语言SGML。XML是一种元标记语言,可以根据不同需求定义不同的标记语言,其语法主要包括元素、处理指令、注释、属性等。XML的特点主要体现在以下四点:(1)信息的描述与信息处理是分开的;(2) XML文档具有自我描述能力;(3) XML具有很强的开放性和扩展性;(4) XML文档具有可验证性。
[0013]现有的针对安卓系统的研究,在协议形式化描述方面的研究较少,并且偏向于在理论层面。已有的系统或者工具,通常对网络流量具有一定的限制,同时对所安装的系统有较大的影响,因此限制了应用。


【发明内容】

[0014]本发明的目的在于提供一种安卓系统环境下的网络协议形式化描述工具,解决了现有技术存在的上述问题,本发明的主要功能是捕获流经当前系统的数据包,并将数据包内的数据进行解析,生成并输出协议形式化描述。系统的功能主要分为三大模块:网络数据采集模块、协议形式化描述解析模块和数据包内容解析模块。
[0015]本发明的上述目的通过以下技术方案实现:
安卓系统环境下的网络协议形式化描述工具,包括
(1)基于安卓的网络数据采集模块,数据采集部分采用开源的Tcpdump工具实现,步骤包括安卓环境下Tcpdump的安装和授权方法,以及获取数据后的存储和管理方法三项;
(2)协议形式化描述解析模块,包含一种四步骤的协议语言解析的流程以及两个关键函数的定义:
(2.1)程序当前路径获取;
(2.2)构造 ProtocolBuilder 对象;
(2.3)调用 recurs1nPROTree 函数;
(2.4)得到DOM树;
(2.5)两个关键函数定义:recurs1nPROTree O 函数,和 addToBuilderList O 函数; (3)数据包内容解析模块,包括一种五步骤的数据包解析流程:
(3.1) Netpdl 解析;
(3.2)获得DOM树根节点;
(3.3)查找一个协议定义的入口;
(3.4)在协议容器中创建协议;
(3.5)构造协议元素。
[0016]所述的数据包内容解析模块,包括四个解析元素类的定义: (‘丨彡用以对节点进行简单描述的卩如^仏!^);
(4.2)用以决定节点是否可见的PRO_ItemViewable O ;
(4.3)用以对节点进行抽象描述的PRO_AbstractElement O ;
(4.4)以及作为基类的PRO-ElementO,其中包含协议结构中的数据元素和控制元素。
[0017]所述的数据包内容解析模块包括四个解析的关键函数:
(5.1)用于构造协议节点对象的getProInfoO ;
(5.2)用于取得当前数据下有意义的当前字段的子字段的getNextNodeForDataO ;
(5.3)用于构造协议结构的createProtocol O ;
(5.4)以及用于设置协议结构中元素之间的父子关系的setAssocO。
[0018]本发明公开的工具链和方法用以提供一种运行于安卓环境下的协议形式化描述的实现流程,通过形式化表述,提升未来进一步针对不同协议的统一分析能力,有助于开发新的安卓系统下的网络协议分析和内容审计工具,弥补当前这一领域研究和应用的不足,在科研和产业界都可以有一定的应用价值。
[0019]本发明的有益效果在于:经过对工具功能、捕获丢包率、对系统性能影响等的测试,与现有的技术相比,本发明的主要优势在于能够在正常流量情况下对网络数据包进行捕获,程序设计对系统的影响小,能够正常顺利的完成对数据包协议形式化描述的工作。

【专利附图】

【附图说明】
[0020]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0021]图1为本发明的安卓系统体系结构示意图;
图2为本发明的协议形式化描述解析流程示意图;
图3为本发明的recurs1nPROTree O函数流程示意图;
图4为本发明的addToBuilderList O函数流程示意图;
图5为本发明的数据包内容解析流程示意图;
图6为本发明的捕获数据包的存储示意图;
图7为本发明的TCP协议结构解析示意图;
图8为本发明的数据包内容解析结果示意图。

【具体实施方式】
[0022]下面结合附图进一步说明本发明的详细内容及其【具体实施方式】。
[0023]参见图1至图8所味,本发明的安卓系统环境下的网络协议形式化描述工具,包括 (1)基于安卓的网络数据采集模块,采用开源的Tcpdump工具实现,步骤包括安卓环境下Tcpdump的安装和授权方法,以及获取数据后的存储和管理方法三项;
(2)协议形式化描述解析模块,包含一种四步骤的协议语言解析的流程以及两个关键函数的定义,四个步骤包括程序当前路径获取、构造ProtocolBuilder对象、调用recurs1nPROTree函数、得到DOM ;两个关键函数定义包括recurs1nPROTree ()函数,和addToBuilderList ()函数;
(3)数据包内容解析模块,包括一种五步骤的数据包解析流程,Netpdl解析,获得DOM树根节点,查找一个协议定义的入口,在协议容器中创建协议,构造协议元素。
[0024]所述的数据包内容解析模块,包括四个解析元素类的定义:用于构造协议节点对象的getProInfoO,用于取得当前数据下有意义的当前字段的子字段的getNextNodeForDataO,用于构造协议结构的createProtocol O ,以及用于设置协议结构中元素之间的父子关系的setAssocO ;
所述的数据包内容解析模块,包括四个解析的关键函数:用以对节点进行简单描述的PR0_Item(),用以决定节点是否可见的PRO_ItemViewable O,用以对节点进行抽象描述的PRO_AbstractElement O ,以及作为基类的PRO-ElementO,其中包含协议结构中的数据元素和控制元素。
[0025]实施例:
1、基于安卓的网络数据采集
基于安卓的网络数据采集模块主要进行网络数据包的过滤和捕获。采用Tcpdump工具实现数据包的采集和管理功能。过程如下:
(1)将Tcpdump上传至手机/system/bin/文件夹中,并将Tcpdump赋予权限,即运行命令 adb shell chmod 6755 /system/bin/Tcpdump
(2)运行Tcpdump,前提是操作系统已经获取root权限,否则Tcpdump无法捕获数据包。以下是捕获数据包的命令。
[0026]adb shell Tcpdump _i any -p _s 0 ι /sdcard/capture, pcap
#〃-1 any^: listen on any network interface
#〃-p〃: disable promiscuous mode (doesn’t work anyway)
#〃-s 0〃: capture the entire packet
#〃-w〃: write packets to a file (rather than printing to stdout)
(3 )数据包捕获后,存储格式为.cap,如附图6所示。
[0027]2、协议形式化描述解析
形式化描述语言将多种协议结构组织成一个树形结构,采用DOM解析器将这个树形结构进行解析,提取出结构中的节点及其属性,并把树中的节点和相应的属性以及节点之间的父子关系进行封装,最后形成用来存储协议结构以及协议相关信息的DOM树。
[0028]本发明采用DOM树对形式化描述的节点进行分析,它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构,在java语言中有封装好的ProtocolBuilder类来定义和执行DOM的相关操作。ProtocolBuilder使用DOM提供的API提取各个节点的名字和属性构造proArrayList对象,形成协议树。
[0029]建立Document对象,使用Document对象提供的getChildNodes O方法获得所有协议的根节点,之后调用recurs1nPROTree方法即可生成DOM树。协议形式化描述解析流程如附图2所示:
关键函数设计如下。
[0030]( Drecurs1nPROTree O函数。作用是得到一个节点,挂载到父节点下,递归生成该节点的子节点。Nodes参数是父节点中包含的所有子节点,level参数是记录当前递归的深度,由此值确定节点之间的关系。函数的流程图如附图3所示。
[0031](2) addToBuilderList O函数。作用是通过得到的节点获得节点信息,将节点转换为节点对象,节点信息转换为节点对象的属性,将节点对象返回程序,流程图如附图4。
[0032]对所捕获的数据包结构中的TCP层协议进行描述,可以从描述结果中得到TCP层协议内各个字段在数据包中对应的实际值,以及当前TCP协议附带的选项。TCP协议解析如附图7所示。解析的字段说明如下:
第一个〈field〉字段中,获取的是TCP协议中对数据包的确认的信息,长度为四个字节。
[0033]第二个〈field〉字段中,获取的是TCP包头长度,由于TCP的包头信息不固定,会根据Opt1n字段而动态的改变,所以往后会利用该字段的实际数据对Opt1n数据进行分析。
[0034]最后一个〈field〉字段是TCP中的可选项字段,通过之前确定的TCP包头文件长度动态生成的长度,主要携带TCP协议所需要的附加信息。协议长度由TCP包头长度决定。
[0035]3、数据包内容解析
对数据包内容解析是将其中的数据按照事先规定的格式显示出来。协议结构解析是从DOM树上形成另一种数据结构,通过这种结构能把一个数据包解析出来,而对于一个特定的数据包的解析称为协议解析。
[0036]对于一个实际的数据包,它的协议格式是固定的,每个字段都有相应的值。在解析结果子树中,树状结构和协议结构相同,只是在每个节点中加入了描述要显示的字段在数据包中的位置。对数据包解析后,可生成协议结构的一个子结构,即协议结构中的某几个协议结构的组合,它是这个数据包的真正组成。通过数据元素、控制元素、表达式、协议等类,再按照一定的算法就可以生成协议结构。数据包内容解析的过程如附图5所示。
[0037]协议结构解析的算法如下:
Stepl:从协议结构解析结果得到DOM树的根节点;
Step2:利用DOM树节点提供的遍历接口查找节点名字为"protocol"的节点,即查找一个协议定义入口;
Step3:创建该协议,并把该协议放入协议容器中;
Step4:从〈protocol〉节点开始遍历其子节点,根据节点的不同类型创建相应的元素,直到〈protocol〉的所有子节点都遍历过;
Step5:查找是否还有节点名字为〈protocol〉的节点,即查找是否还有协议定义,如果有则重复执行第3、4步;如果没有则退出,完成协议结构解析。
[0038]数据包内容解析关键元素类定义如下:
(I)PR0_Item()
CXMLItem是对节点的简单描述,其存储的数据是节点属性列表中对应属性名字为〃name〃的属性值。
[0039](2) PR0_ItemViewable () 对于协议包解析的过程中,并不是所有的节点都是可见的,只有数据节点才是可见的,所以PRO_ItemViewable是一类特殊的节点,它们决定节点是否可见。
[0040](3) PRO_AbstractElementO
PRO_AbstractElement是对节点的抽象描述。它提供了节点之间的父子关系以及该元素对应的协议,并提供了重要的函数showSummary O和getNextNode O。
[0041](4) PR0_EIement ()
PR0_EIement 是 PR0_Item, PRO_ItemViewable,和 PRO_AbstractElement 的基类。协议结构中的数据元素和控制元素都是从PR0_Element继承的。
[0042]数据包内容解析的关键函数定义:
(I) getProInfoO
用于协议节点对象构造,功能是用现有的数据对字段的结构进行比对和计算。对于可显示的数据字段,根据字段的长度获取数据并把数据存储到该字段对应的对象中,并且把指向当前解析位置的指针向后移动到适当的位置;对于不可显示的控制字段,对该字段的结构进行以下计算:
对于IF结构,需要计算表达式的结果;对于Switch结构,该函数需要计算哪一个子Case结构符合条件;对于Loop结构,该函数需要计算循环的结束条件。
[0043](2) getNextNodeForDataO
在解析的过程中,取得在当前的数据下有一意义的当前字段的子字段。对于数据字段,无论在什么情况下子字段都是不存在的,因此主要的变数在于控制字段:对于IF字段,如果条件表达式为true,那么返子结构;对于Switch字段,返回符合条件的子Case结构;对于Loop字段,返回子结构,一直到符合循环退出条件为止。
[0044](3) createProtoeol O
构造协议结构时使用,对于每个协议都通过该函数构造协议结构。
[0045](4) setAssocO
用于设置协议结构中元素之间的父子关系。
[0046]附图8显示了数据包中的ethernet和ip协议的内容解析结果。
[0047]以上所述仅为本发明的优选实例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种安卓系统环境下的网络协议形式化描述工具,其特征在于:包括 (1)基于安卓的网络数据采集模块,数据采集部分采用开源的Tcpdump工具实现,步骤包括安卓环境下Tcpdump的安装和授权方法,以及获取数据后的存储和管理方法三项; (2)协议形式化描述解析模块,包含一种四步骤的协议语言解析的流程以及两个关键函数的定义: (2.1)程序当前路径获取; (2.2)构造 ProtocolBuilder 对象; (2.3)调用 recurs1nPROTree 函数; (2.4)得到DOM树; (2.5)两个关键函数定义:recurs1nPROTree ()函数,和 addToBuilderList ()函数; (3)数据包内容解析模块,包括一种五步骤的数据包解析流程:
(3.1) Netpdl 解析; (3.2)获得D0M树根节点; (3.3)查找一个协议定义的入口 ; (3.4)在协议容器中创建协议; (3.5)构造协议元素。
2.根据权利要求1所述的安卓系统环境下的网络协议形式化描述工具,其特征在于:所述的数据包内容解析模块,包括四个解析元素类的定义: (4.1)用以对节点进行简单描述的PR0_Item(); (4.2)用以决定节点是否可见的PRO_ItemViewable (); (4.3)用以对节点进行抽象描述的PRO_AbstractElement (); (4.4)以及作为基类的PRO-Element(),其中包含协议结构中的数据元素和控制元素。
3.根据权利要求1或2所述的安卓系统环境下的网络协议形式化描述工具,其特征在于:所述的数据包内容解析模块包括四个解析的关键函数: (5.1)用于构造协议节点对象的getProInfoO ; (5.2)用于取得当前数据下有意义的当前字段的子字段的getNextNodeForDataO ; (5.3)用于构造协议结构的createProtocol (); (5.4)以及用于设置协议结构中元素之间的父子关系的setAssocO。
【文档编号】G06F9/44GK104360836SQ201410542038
【公开日】2015年2月18日 申请日期:2014年10月15日 优先权日:2014年10月15日
【发明者】努尔布力, 解男男, 高程, 阿洪阿吉, 黄春虎, 沙利瓦尔, 杨志伟, 王宁, 王浩 申请人:新疆大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1