欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具的制作方法

文檔序號(hào):6630152閱讀:334來(lái)源:國(guó)知局
安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具的制作方法
【專利摘要】本發(fā)明涉及一種安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,屬于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域。包含一套協(xié)議描述和解析流程及工具鏈。包括安卓環(huán)境下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲,協(xié)議形式化描述解析,數(shù)據(jù)包內(nèi)容解析三個(gè)模塊,并最終顯示協(xié)議分析的結(jié)果。具體通過(guò)定義典型網(wǎng)絡(luò)協(xié)議的形式化描述語(yǔ)言解析流程和關(guān)鍵函數(shù),以及數(shù)據(jù)包內(nèi)容解析的流程和元素類定義、關(guān)鍵函數(shù)定義來(lái)實(shí)現(xiàn)。本發(fā)明應(yīng)用于Android操作系統(tǒng)下的實(shí)時(shí)網(wǎng)絡(luò)情況分析,協(xié)議質(zhì)量分析以及安全性分析等相關(guān)研究和應(yīng)用領(lǐng)域。能夠在正常流量情況下對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行捕獲,程序設(shè)計(jì)對(duì)系統(tǒng)的影響小,且能夠正常順利的完成對(duì)數(shù)據(jù)包協(xié)議形式化描述的工作。
【專利說(shuō)明】安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,特別涉及協(xié)議工程、安卓操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議形式化描述方面,尤指一種安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,是一種安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述和分析方法,以及以此為基礎(chǔ)的協(xié)議形式化分析工具。

【背景技術(shù)】
[0002]安卓(Android)操作系統(tǒng)是Google于2007年11月宣布的基于Linux平臺(tái)的開源移動(dòng)操作系統(tǒng),采用軟件堆層的架構(gòu),主要分為三部分:底層以Linux內(nèi)核工作為基礎(chǔ),由C語(yǔ)言開發(fā),只提供基本功能;中間層包括函數(shù)庫(kù)和虛擬機(jī),有C++開發(fā);上層為各種應(yīng)用軟件,由各公司自行開發(fā)。系統(tǒng)結(jié)構(gòu)圖如附圖1。
[0003]Android系統(tǒng)的組件可以分為以下幾個(gè)部分:
(I)關(guān)鍵應(yīng)用程序(Applicat1ns)
Android系統(tǒng)與一系列核心應(yīng)用程序包一起發(fā)布,包括Email客戶端、SMS短消息程序,日歷,地圖,瀏覽器等。
[0004]( 2 )應(yīng)用程序框架
開發(fā)人員可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架,這種設(shè)計(jì)簡(jiǎn)化了組件的重用,任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊,并且其他的程序可以使用。其中包括視圖、內(nèi)容提供器、資源管理器等。
[0005](3)系統(tǒng)運(yùn)行庫(kù)
包括程序庫(kù)、和運(yùn)行庫(kù),能夠被Android系統(tǒng)中的不同組件使用,提供了 JAVA編程語(yǔ)言核心庫(kù)的大多數(shù)功能。
[0006](4) Linux 內(nèi)核
Android的核心系統(tǒng)依賴于Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議和驅(qū)動(dòng)模型。Linux內(nèi)核也作為硬件和軟件棧之間的抽象層。
[0007]網(wǎng)絡(luò)協(xié)議形式化模型常用的主要包含三種:
(I)有限狀態(tài)機(jī)FSM
FSM是許多形式化方法的基礎(chǔ),它可以實(shí)現(xiàn)與其他形式化方法的組合和轉(zhuǎn)換,并且易于自動(dòng)實(shí)現(xiàn),因此在形式化描述中占有重要地位?;贔SM描述的協(xié)議驗(yàn)證可通過(guò)構(gòu)造可達(dá)樹來(lái)實(shí)現(xiàn)。FSM簡(jiǎn)單直觀,但描述能力有限,因此在通信協(xié)議的描述中,通常需要對(duì)其進(jìn)行擴(kuò)展和優(yōu)化。
[0008](2) Petri 網(wǎng)
Petri網(wǎng)是一種適合于并發(fā)、異步、分布式系統(tǒng)描述與分析的圖形數(shù)學(xué)工具,目前已經(jīng)成為網(wǎng)絡(luò)協(xié)議分析和設(shè)計(jì)的典型模型之一。Petri網(wǎng)在協(xié)議系統(tǒng)的描述和分析方面,有許多分析技術(shù),例如可達(dá)性分析、不變量分析、構(gòu)造理論、形式語(yǔ)言理論等。為了在不同領(lǐng)域的應(yīng)用,從基本Petri網(wǎng)演化出許多擴(kuò)展的研究,包括謂詞/動(dòng)作Petri網(wǎng),時(shí)間Petri網(wǎng),隨機(jī)Petri網(wǎng)等。
[0009](3)通信進(jìn)程演算CCS
CCS是進(jìn)程代數(shù)的基礎(chǔ),能夠嚴(yán)格的表述一個(gè)系統(tǒng)或進(jìn)程執(zhí)行時(shí)事件的時(shí)序性以及系統(tǒng)之間通信的特性。能以嚴(yán)密的代數(shù)演算方法驗(yàn)證協(xié)議的性質(zhì),因此它也是計(jì)算機(jī)通信系統(tǒng)的基本理論模型之一。使用擴(kuò)展規(guī)則、限制規(guī)則以及其他運(yùn)算法則將包含組合算子的表達(dá)式擴(kuò)展為不包含組合算子的表達(dá)式,可以驗(yàn)證多個(gè)進(jìn)程組合而成的系統(tǒng)是否有活動(dòng)性和安全性。其優(yōu)點(diǎn)在于能夠精密的表達(dá)謝意的邏輯結(jié)構(gòu)和協(xié)議的時(shí)序性,但不能直觀的描述協(xié)議性質(zhì)。
[0010]網(wǎng)絡(luò)協(xié)議形式化描述語(yǔ)言通常是以嚴(yán)格的數(shù)學(xué)方法為基礎(chǔ),并且有嚴(yán)格的語(yǔ)法和語(yǔ)義的定義,可以精確、完全的表達(dá)協(xié)議的功能、性能和行為,廣泛的應(yīng)用于協(xié)議的分析、驗(yàn)證、實(shí)現(xiàn)、測(cè)試等系統(tǒng)中。
[0011]網(wǎng)絡(luò)協(xié)議形式化描述語(yǔ)言通常分為公用部分和擴(kuò)展部分。公用部分定義了網(wǎng)絡(luò)協(xié)議的組成部分以及協(xié)議之間的關(guān)系,擴(kuò)展部分用于定義網(wǎng)絡(luò)協(xié)議的一些特殊的細(xì)節(jié)。在實(shí)際的描述系統(tǒng)中,系統(tǒng)所使用的公用部分都是相同的,而對(duì)于擴(kuò)展部分,各個(gè)系統(tǒng)有獨(dú)特的部分,因?yàn)楦鱾€(gè)系統(tǒng)所要描述的重點(diǎn)是不同的。
[0012]擴(kuò)展標(biāo)記語(yǔ)言(XML)是一種廣泛應(yīng)用的描述語(yǔ)言,源自于標(biāo)準(zhǔn)導(dǎo)引標(biāo)識(shí)語(yǔ)言SGML。XML是一種元標(biāo)記語(yǔ)言,可以根據(jù)不同需求定義不同的標(biāo)記語(yǔ)言,其語(yǔ)法主要包括元素、處理指令、注釋、屬性等。XML的特點(diǎn)主要體現(xiàn)在以下四點(diǎn):(1)信息的描述與信息處理是分開的;(2) XML文檔具有自我描述能力;(3) XML具有很強(qiáng)的開放性和擴(kuò)展性;(4) XML文檔具有可驗(yàn)證性。
[0013]現(xiàn)有的針對(duì)安卓系統(tǒng)的研究,在協(xié)議形式化描述方面的研究較少,并且偏向于在理論層面。已有的系統(tǒng)或者工具,通常對(duì)網(wǎng)絡(luò)流量具有一定的限制,同時(shí)對(duì)所安裝的系統(tǒng)有較大的影響,因此限制了應(yīng)用。


【發(fā)明內(nèi)容】

[0014]本發(fā)明的目的在于提供一種安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,解決了現(xiàn)有技術(shù)存在的上述問(wèn)題,本發(fā)明的主要功能是捕獲流經(jīng)當(dāng)前系統(tǒng)的數(shù)據(jù)包,并將數(shù)據(jù)包內(nèi)的數(shù)據(jù)進(jìn)行解析,生成并輸出協(xié)議形式化描述。系統(tǒng)的功能主要分為三大模塊:網(wǎng)絡(luò)數(shù)據(jù)采集模塊、協(xié)議形式化描述解析模塊和數(shù)據(jù)包內(nèi)容解析模塊。
[0015]本發(fā)明的上述目的通過(guò)以下技術(shù)方案實(shí)現(xiàn):
安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,包括
(1)基于安卓的網(wǎng)絡(luò)數(shù)據(jù)采集模塊,數(shù)據(jù)采集部分采用開源的Tcpdump工具實(shí)現(xiàn),步驟包括安卓環(huán)境下Tcpdump的安裝和授權(quán)方法,以及獲取數(shù)據(jù)后的存儲(chǔ)和管理方法三項(xiàng);
(2)協(xié)議形式化描述解析模塊,包含一種四步驟的協(xié)議語(yǔ)言解析的流程以及兩個(gè)關(guān)鍵函數(shù)的定義:
(2.1)程序當(dāng)前路徑獲?。?br> (2.2)構(gòu)造 ProtocolBuilder 對(duì)象;
(2.3)調(diào)用 recurs1nPROTree 函數(shù);
(2.4)得到DOM樹;
(2.5)兩個(gè)關(guān)鍵函數(shù)定義:recurs1nPROTree O 函數(shù),和 addToBuilderList O 函數(shù); (3)數(shù)據(jù)包內(nèi)容解析模塊,包括一種五步驟的數(shù)據(jù)包解析流程:
(3.1) Netpdl 解析;
(3.2)獲得DOM樹根節(jié)點(diǎn);
(3.3)查找一個(gè)協(xié)議定義的入口;
(3.4)在協(xié)議容器中創(chuàng)建協(xié)議;
(3.5)構(gòu)造協(xié)議元素。
[0016]所述的數(shù)據(jù)包內(nèi)容解析模塊,包括四個(gè)解析元素類的定義: (‘丨彡用以對(duì)節(jié)點(diǎn)進(jìn)行簡(jiǎn)單描述的卩如^仏!^);
(4.2)用以決定節(jié)點(diǎn)是否可見(jiàn)的PRO_ItemViewable O ;
(4.3)用以對(duì)節(jié)點(diǎn)進(jìn)行抽象描述的PRO_AbstractElement O ;
(4.4)以及作為基類的PRO-ElementO,其中包含協(xié)議結(jié)構(gòu)中的數(shù)據(jù)元素和控制元素。
[0017]所述的數(shù)據(jù)包內(nèi)容解析模塊包括四個(gè)解析的關(guān)鍵函數(shù):
(5.1)用于構(gòu)造協(xié)議節(jié)點(diǎn)對(duì)象的getProInfoO ;
(5.2)用于取得當(dāng)前數(shù)據(jù)下有意義的當(dāng)前字段的子字段的getNextNodeForDataO ;
(5.3)用于構(gòu)造協(xié)議結(jié)構(gòu)的createProtocol O ;
(5.4)以及用于設(shè)置協(xié)議結(jié)構(gòu)中元素之間的父子關(guān)系的setAssocO。
[0018]本發(fā)明公開的工具鏈和方法用以提供一種運(yùn)行于安卓環(huán)境下的協(xié)議形式化描述的實(shí)現(xiàn)流程,通過(guò)形式化表述,提升未來(lái)進(jìn)一步針對(duì)不同協(xié)議的統(tǒng)一分析能力,有助于開發(fā)新的安卓系統(tǒng)下的網(wǎng)絡(luò)協(xié)議分析和內(nèi)容審計(jì)工具,彌補(bǔ)當(dāng)前這一領(lǐng)域研究和應(yīng)用的不足,在科研和產(chǎn)業(yè)界都可以有一定的應(yīng)用價(jià)值。
[0019]本發(fā)明的有益效果在于:經(jīng)過(guò)對(duì)工具功能、捕獲丟包率、對(duì)系統(tǒng)性能影響等的測(cè)試,與現(xiàn)有的技術(shù)相比,本發(fā)明的主要優(yōu)勢(shì)在于能夠在正常流量情況下對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行捕獲,程序設(shè)計(jì)對(duì)系統(tǒng)的影響小,能夠正常順利的完成對(duì)數(shù)據(jù)包協(xié)議形式化描述的工作。

【專利附圖】

【附圖說(shuō)明】
[0020]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。
[0021]圖1為本發(fā)明的安卓系統(tǒng)體系結(jié)構(gòu)示意圖;
圖2為本發(fā)明的協(xié)議形式化描述解析流程示意圖;
圖3為本發(fā)明的recurs1nPROTree O函數(shù)流程示意圖;
圖4為本發(fā)明的addToBuilderList O函數(shù)流程示意圖;
圖5為本發(fā)明的數(shù)據(jù)包內(nèi)容解析流程示意圖;
圖6為本發(fā)明的捕獲數(shù)據(jù)包的存儲(chǔ)示意圖;
圖7為本發(fā)明的TCP協(xié)議結(jié)構(gòu)解析示意圖;
圖8為本發(fā)明的數(shù)據(jù)包內(nèi)容解析結(jié)果示意圖。

【具體實(shí)施方式】
[0022]下面結(jié)合附圖進(jìn)一步說(shuō)明本發(fā)明的詳細(xì)內(nèi)容及其【具體實(shí)施方式】。
[0023]參見(jiàn)圖1至圖8所味,本發(fā)明的安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,包括 (1)基于安卓的網(wǎng)絡(luò)數(shù)據(jù)采集模塊,采用開源的Tcpdump工具實(shí)現(xiàn),步驟包括安卓環(huán)境下Tcpdump的安裝和授權(quán)方法,以及獲取數(shù)據(jù)后的存儲(chǔ)和管理方法三項(xiàng);
(2)協(xié)議形式化描述解析模塊,包含一種四步驟的協(xié)議語(yǔ)言解析的流程以及兩個(gè)關(guān)鍵函數(shù)的定義,四個(gè)步驟包括程序當(dāng)前路徑獲取、構(gòu)造ProtocolBuilder對(duì)象、調(diào)用recurs1nPROTree函數(shù)、得到DOM ;兩個(gè)關(guān)鍵函數(shù)定義包括recurs1nPROTree ()函數(shù),和addToBuilderList ()函數(shù);
(3)數(shù)據(jù)包內(nèi)容解析模塊,包括一種五步驟的數(shù)據(jù)包解析流程,Netpdl解析,獲得DOM樹根節(jié)點(diǎn),查找一個(gè)協(xié)議定義的入口,在協(xié)議容器中創(chuàng)建協(xié)議,構(gòu)造協(xié)議元素。
[0024]所述的數(shù)據(jù)包內(nèi)容解析模塊,包括四個(gè)解析元素類的定義:用于構(gòu)造協(xié)議節(jié)點(diǎn)對(duì)象的getProInfoO,用于取得當(dāng)前數(shù)據(jù)下有意義的當(dāng)前字段的子字段的getNextNodeForDataO,用于構(gòu)造協(xié)議結(jié)構(gòu)的createProtocol O ,以及用于設(shè)置協(xié)議結(jié)構(gòu)中元素之間的父子關(guān)系的setAssocO ;
所述的數(shù)據(jù)包內(nèi)容解析模塊,包括四個(gè)解析的關(guān)鍵函數(shù):用以對(duì)節(jié)點(diǎn)進(jìn)行簡(jiǎn)單描述的PR0_Item(),用以決定節(jié)點(diǎn)是否可見(jiàn)的PRO_ItemViewable O,用以對(duì)節(jié)點(diǎn)進(jìn)行抽象描述的PRO_AbstractElement O ,以及作為基類的PRO-ElementO,其中包含協(xié)議結(jié)構(gòu)中的數(shù)據(jù)元素和控制元素。
[0025]實(shí)施例:
1、基于安卓的網(wǎng)絡(luò)數(shù)據(jù)采集
基于安卓的網(wǎng)絡(luò)數(shù)據(jù)采集模塊主要進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)包的過(guò)濾和捕獲。采用Tcpdump工具實(shí)現(xiàn)數(shù)據(jù)包的采集和管理功能。過(guò)程如下:
(1)將Tcpdump上傳至手機(jī)/system/bin/文件夾中,并將Tcpdump賦予權(quán)限,即運(yùn)行命令 adb shell chmod 6755 /system/bin/Tcpdump
(2)運(yùn)行Tcpdump,前提是操作系統(tǒng)已經(jīng)獲取root權(quán)限,否則Tcpdump無(wú)法捕獲數(shù)據(jù)包。以下是捕獲數(shù)據(jù)包的命令。
[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 )數(shù)據(jù)包捕獲后,存儲(chǔ)格式為.cap,如附圖6所示。
[0027]2、協(xié)議形式化描述解析
形式化描述語(yǔ)言將多種協(xié)議結(jié)構(gòu)組織成一個(gè)樹形結(jié)構(gòu),采用DOM解析器將這個(gè)樹形結(jié)構(gòu)進(jìn)行解析,提取出結(jié)構(gòu)中的節(jié)點(diǎn)及其屬性,并把樹中的節(jié)點(diǎn)和相應(yīng)的屬性以及節(jié)點(diǎn)之間的父子關(guān)系進(jìn)行封裝,最后形成用來(lái)存儲(chǔ)協(xié)議結(jié)構(gòu)以及協(xié)議相關(guān)信息的DOM樹。
[0028]本發(fā)明采用DOM樹對(duì)形式化描述的節(jié)點(diǎn)進(jìn)行分析,它可以以一種獨(dú)立于平臺(tái)和語(yǔ)言的方式訪問(wèn)和修改一個(gè)文檔的內(nèi)容和結(jié)構(gòu),在java語(yǔ)言中有封裝好的ProtocolBuilder類來(lái)定義和執(zhí)行DOM的相關(guān)操作。ProtocolBuilder使用DOM提供的API提取各個(gè)節(jié)點(diǎn)的名字和屬性構(gòu)造proArrayList對(duì)象,形成協(xié)議樹。
[0029]建立Document對(duì)象,使用Document對(duì)象提供的getChildNodes O方法獲得所有協(xié)議的根節(jié)點(diǎn),之后調(diào)用recurs1nPROTree方法即可生成DOM樹。協(xié)議形式化描述解析流程如附圖2所示:
關(guān)鍵函數(shù)設(shè)計(jì)如下。
[0030]( Drecurs1nPROTree O函數(shù)。作用是得到一個(gè)節(jié)點(diǎn),掛載到父節(jié)點(diǎn)下,遞歸生成該節(jié)點(diǎn)的子節(jié)點(diǎn)。Nodes參數(shù)是父節(jié)點(diǎn)中包含的所有子節(jié)點(diǎn),level參數(shù)是記錄當(dāng)前遞歸的深度,由此值確定節(jié)點(diǎn)之間的關(guān)系。函數(shù)的流程圖如附圖3所示。
[0031](2) addToBuilderList O函數(shù)。作用是通過(guò)得到的節(jié)點(diǎn)獲得節(jié)點(diǎn)信息,將節(jié)點(diǎn)轉(zhuǎn)換為節(jié)點(diǎn)對(duì)象,節(jié)點(diǎn)信息轉(zhuǎn)換為節(jié)點(diǎn)對(duì)象的屬性,將節(jié)點(diǎn)對(duì)象返回程序,流程圖如附圖4。
[0032]對(duì)所捕獲的數(shù)據(jù)包結(jié)構(gòu)中的TCP層協(xié)議進(jìn)行描述,可以從描述結(jié)果中得到TCP層協(xié)議內(nèi)各個(gè)字段在數(shù)據(jù)包中對(duì)應(yīng)的實(shí)際值,以及當(dāng)前TCP協(xié)議附帶的選項(xiàng)。TCP協(xié)議解析如附圖7所示。解析的字段說(shuō)明如下:
第一個(gè)〈field〉字段中,獲取的是TCP協(xié)議中對(duì)數(shù)據(jù)包的確認(rèn)的信息,長(zhǎng)度為四個(gè)字節(jié)。
[0033]第二個(gè)〈field〉字段中,獲取的是TCP包頭長(zhǎng)度,由于TCP的包頭信息不固定,會(huì)根據(jù)Opt1n字段而動(dòng)態(tài)的改變,所以往后會(huì)利用該字段的實(shí)際數(shù)據(jù)對(duì)Opt1n數(shù)據(jù)進(jìn)行分析。
[0034]最后一個(gè)〈field〉字段是TCP中的可選項(xiàng)字段,通過(guò)之前確定的TCP包頭文件長(zhǎng)度動(dòng)態(tài)生成的長(zhǎng)度,主要攜帶TCP協(xié)議所需要的附加信息。協(xié)議長(zhǎng)度由TCP包頭長(zhǎng)度決定。
[0035]3、數(shù)據(jù)包內(nèi)容解析
對(duì)數(shù)據(jù)包內(nèi)容解析是將其中的數(shù)據(jù)按照事先規(guī)定的格式顯示出來(lái)。協(xié)議結(jié)構(gòu)解析是從DOM樹上形成另一種數(shù)據(jù)結(jié)構(gòu),通過(guò)這種結(jié)構(gòu)能把一個(gè)數(shù)據(jù)包解析出來(lái),而對(duì)于一個(gè)特定的數(shù)據(jù)包的解析稱為協(xié)議解析。
[0036]對(duì)于一個(gè)實(shí)際的數(shù)據(jù)包,它的協(xié)議格式是固定的,每個(gè)字段都有相應(yīng)的值。在解析結(jié)果子樹中,樹狀結(jié)構(gòu)和協(xié)議結(jié)構(gòu)相同,只是在每個(gè)節(jié)點(diǎn)中加入了描述要顯示的字段在數(shù)據(jù)包中的位置。對(duì)數(shù)據(jù)包解析后,可生成協(xié)議結(jié)構(gòu)的一個(gè)子結(jié)構(gòu),即協(xié)議結(jié)構(gòu)中的某幾個(gè)協(xié)議結(jié)構(gòu)的組合,它是這個(gè)數(shù)據(jù)包的真正組成。通過(guò)數(shù)據(jù)元素、控制元素、表達(dá)式、協(xié)議等類,再按照一定的算法就可以生成協(xié)議結(jié)構(gòu)。數(shù)據(jù)包內(nèi)容解析的過(guò)程如附圖5所示。
[0037]協(xié)議結(jié)構(gòu)解析的算法如下:
Stepl:從協(xié)議結(jié)構(gòu)解析結(jié)果得到DOM樹的根節(jié)點(diǎn);
Step2:利用DOM樹節(jié)點(diǎn)提供的遍歷接口查找節(jié)點(diǎn)名字為"protocol"的節(jié)點(diǎn),即查找一個(gè)協(xié)議定義入口;
Step3:創(chuàng)建該協(xié)議,并把該協(xié)議放入?yún)f(xié)議容器中;
Step4:從〈protocol〉節(jié)點(diǎn)開始遍歷其子節(jié)點(diǎn),根據(jù)節(jié)點(diǎn)的不同類型創(chuàng)建相應(yīng)的元素,直到〈protocol〉的所有子節(jié)點(diǎn)都遍歷過(guò);
Step5:查找是否還有節(jié)點(diǎn)名字為〈protocol〉的節(jié)點(diǎn),即查找是否還有協(xié)議定義,如果有則重復(fù)執(zhí)行第3、4步;如果沒(méi)有則退出,完成協(xié)議結(jié)構(gòu)解析。
[0038]數(shù)據(jù)包內(nèi)容解析關(guān)鍵元素類定義如下:
(I)PR0_Item()
CXMLItem是對(duì)節(jié)點(diǎn)的簡(jiǎn)單描述,其存儲(chǔ)的數(shù)據(jù)是節(jié)點(diǎn)屬性列表中對(duì)應(yīng)屬性名字為〃name〃的屬性值。
[0039](2) PR0_ItemViewable () 對(duì)于協(xié)議包解析的過(guò)程中,并不是所有的節(jié)點(diǎn)都是可見(jiàn)的,只有數(shù)據(jù)節(jié)點(diǎn)才是可見(jiàn)的,所以PRO_ItemViewable是一類特殊的節(jié)點(diǎn),它們決定節(jié)點(diǎn)是否可見(jiàn)。
[0040](3) PRO_AbstractElementO
PRO_AbstractElement是對(duì)節(jié)點(diǎn)的抽象描述。它提供了節(jié)點(diǎn)之間的父子關(guān)系以及該元素對(duì)應(yīng)的協(xié)議,并提供了重要的函數(shù)showSummary O和getNextNode O。
[0041](4) PR0_EIement ()
PR0_EIement 是 PR0_Item, PRO_ItemViewable,和 PRO_AbstractElement 的基類。協(xié)議結(jié)構(gòu)中的數(shù)據(jù)元素和控制元素都是從PR0_Element繼承的。
[0042]數(shù)據(jù)包內(nèi)容解析的關(guān)鍵函數(shù)定義:
(I) getProInfoO
用于協(xié)議節(jié)點(diǎn)對(duì)象構(gòu)造,功能是用現(xiàn)有的數(shù)據(jù)對(duì)字段的結(jié)構(gòu)進(jìn)行比對(duì)和計(jì)算。對(duì)于可顯示的數(shù)據(jù)字段,根據(jù)字段的長(zhǎng)度獲取數(shù)據(jù)并把數(shù)據(jù)存儲(chǔ)到該字段對(duì)應(yīng)的對(duì)象中,并且把指向當(dāng)前解析位置的指針向后移動(dòng)到適當(dāng)?shù)奈恢茫粚?duì)于不可顯示的控制字段,對(duì)該字段的結(jié)構(gòu)進(jìn)行以下計(jì)算:
對(duì)于IF結(jié)構(gòu),需要計(jì)算表達(dá)式的結(jié)果;對(duì)于Switch結(jié)構(gòu),該函數(shù)需要計(jì)算哪一個(gè)子Case結(jié)構(gòu)符合條件;對(duì)于Loop結(jié)構(gòu),該函數(shù)需要計(jì)算循環(huán)的結(jié)束條件。
[0043](2) getNextNodeForDataO
在解析的過(guò)程中,取得在當(dāng)前的數(shù)據(jù)下有一意義的當(dāng)前字段的子字段。對(duì)于數(shù)據(jù)字段,無(wú)論在什么情況下子字段都是不存在的,因此主要的變數(shù)在于控制字段:對(duì)于IF字段,如果條件表達(dá)式為true,那么返子結(jié)構(gòu);對(duì)于Switch字段,返回符合條件的子Case結(jié)構(gòu);對(duì)于Loop字段,返回子結(jié)構(gòu),一直到符合循環(huán)退出條件為止。
[0044](3) createProtoeol O
構(gòu)造協(xié)議結(jié)構(gòu)時(shí)使用,對(duì)于每個(gè)協(xié)議都通過(guò)該函數(shù)構(gòu)造協(xié)議結(jié)構(gòu)。
[0045](4) setAssocO
用于設(shè)置協(xié)議結(jié)構(gòu)中元素之間的父子關(guān)系。
[0046]附圖8顯示了數(shù)據(jù)包中的ethernet和ip協(xié)議的內(nèi)容解析結(jié)果。
[0047]以上所述僅為本發(fā)明的優(yōu)選實(shí)例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡對(duì)本發(fā)明所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,其特征在于:包括 (1)基于安卓的網(wǎng)絡(luò)數(shù)據(jù)采集模塊,數(shù)據(jù)采集部分采用開源的Tcpdump工具實(shí)現(xiàn),步驟包括安卓環(huán)境下Tcpdump的安裝和授權(quán)方法,以及獲取數(shù)據(jù)后的存儲(chǔ)和管理方法三項(xiàng); (2)協(xié)議形式化描述解析模塊,包含一種四步驟的協(xié)議語(yǔ)言解析的流程以及兩個(gè)關(guān)鍵函數(shù)的定義: (2.1)程序當(dāng)前路徑獲取; (2.2)構(gòu)造 ProtocolBuilder 對(duì)象; (2.3)調(diào)用 recurs1nPROTree 函數(shù); (2.4)得到DOM樹; (2.5)兩個(gè)關(guān)鍵函數(shù)定義:recurs1nPROTree ()函數(shù),和 addToBuilderList ()函數(shù); (3)數(shù)據(jù)包內(nèi)容解析模塊,包括一種五步驟的數(shù)據(jù)包解析流程:
(3.1) Netpdl 解析; (3.2)獲得D0M樹根節(jié)點(diǎn); (3.3)查找一個(gè)協(xié)議定義的入口 ; (3.4)在協(xié)議容器中創(chuàng)建協(xié)議; (3.5)構(gòu)造協(xié)議元素。
2.根據(jù)權(quán)利要求1所述的安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,其特征在于:所述的數(shù)據(jù)包內(nèi)容解析模塊,包括四個(gè)解析元素類的定義: (4.1)用以對(duì)節(jié)點(diǎn)進(jìn)行簡(jiǎn)單描述的PR0_Item(); (4.2)用以決定節(jié)點(diǎn)是否可見(jiàn)的PRO_ItemViewable (); (4.3)用以對(duì)節(jié)點(diǎn)進(jìn)行抽象描述的PRO_AbstractElement (); (4.4)以及作為基類的PRO-Element(),其中包含協(xié)議結(jié)構(gòu)中的數(shù)據(jù)元素和控制元素。
3.根據(jù)權(quán)利要求1或2所述的安卓系統(tǒng)環(huán)境下的網(wǎng)絡(luò)協(xié)議形式化描述工具,其特征在于:所述的數(shù)據(jù)包內(nèi)容解析模塊包括四個(gè)解析的關(guān)鍵函數(shù): (5.1)用于構(gòu)造協(xié)議節(jié)點(diǎn)對(duì)象的getProInfoO ; (5.2)用于取得當(dāng)前數(shù)據(jù)下有意義的當(dāng)前字段的子字段的getNextNodeForDataO ; (5.3)用于構(gòu)造協(xié)議結(jié)構(gòu)的createProtocol (); (5.4)以及用于設(shè)置協(xié)議結(jié)構(gòu)中元素之間的父子關(guān)系的setAssocO。
【文檔編號(hào)】G06F9/44GK104360836SQ201410542038
【公開日】2015年2月18日 申請(qǐng)日期:2014年10月15日 優(yōu)先權(quán)日:2014年10月15日
【發(fā)明者】努爾布力, 解男男, 高程, 阿洪阿吉, 黃春虎, 沙利瓦爾, 楊志偉, 王寧, 王浩 申請(qǐng)人:新疆大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
建水县| 丰都县| 淮南市| 宾川县| 双城市| 区。| 个旧市| 新建县| 胶州市| 东城区| 独山县| 慈利县| 潞城市| 布尔津县| 梓潼县| 麻城市| 济阳县| 合水县| 青田县| 临桂县| 大石桥市| 同心县| 吴旗县| 尚义县| 宝兴县| 洛川县| 湘潭县| 兴山县| 韶关市| 黎城县| 当阳市| 鹤岗市| 天水市| 盖州市| 紫阳县| 会东县| 重庆市| 沁阳市| 凤台县| 大石桥市| 贡山|