基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)_第1頁
基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)_第2頁
基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)_第3頁
基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)_第4頁
基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、96工礦自動化基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)黃興王獻偉顧軍(中國礦業(yè)大學(xué)信息與電氣工程學(xué)院江蘇徐州221008【摘要】基于以太網(wǎng)包捕獲原理以及Winpcap軟件包的體系結(jié)構(gòu)和功能,設(shè)計了一種基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件,利用Winpcap直接對網(wǎng)卡進行操作來捕獲數(shù)據(jù),并對捕獲到的數(shù)據(jù)進行協(xié)議分析,實現(xiàn)對網(wǎng)絡(luò)的監(jiān)控?!娟P(guān)鍵詞】網(wǎng)絡(luò)監(jiān)控包捕獲Winpcap協(xié)議分析1前言隨著Internet技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)中出現(xiàn)的不安全因素越來越多.從病毒的出現(xiàn)到人為的惡意攻擊。網(wǎng)絡(luò)中的合法用戶受到的危害越來越大,網(wǎng)絡(luò)管理及安全越來越為人們所重視,網(wǎng)絡(luò)技術(shù)人員開始對網(wǎng)絡(luò)的安全管理進行研究.在

2、抵御網(wǎng)絡(luò)上的病毒和惡意攻擊中,網(wǎng)絡(luò)監(jiān)聽成為網(wǎng)管人員必須掌握的技術(shù)。監(jiān)聽,指利用計算機網(wǎng)絡(luò)接口截獲目的地為其他計算機的數(shù)據(jù)報文的技術(shù)。它為網(wǎng)絡(luò)管理員提供一類管理工具,使用這類工具可以監(jiān)視網(wǎng)絡(luò)的狀態(tài)、數(shù)據(jù)流動情況以及網(wǎng)絡(luò)上傳輸?shù)男畔⒉⒗眠@些信息來排除網(wǎng)絡(luò)故障、發(fā)現(xiàn)病毒、檢測惡意攻擊等等。2數(shù)據(jù)包的采集技術(shù)2.1數(shù)據(jù)包的采集在共享式以太網(wǎng)中,所有的通信都是廣播,也就是說通常在同一網(wǎng)段中的所有網(wǎng)絡(luò)接口都可以訪問在物理媒體上傳輸?shù)臄?shù)據(jù),使用ARP 和RARP協(xié)議進行相互轉(zhuǎn)換。在正常情況下,一個網(wǎng)絡(luò)接口應(yīng)該只響應(yīng)兩種數(shù)據(jù)幀:1幀的目標地址具有和本地網(wǎng)絡(luò)接口相匹配的硬件地址,2幀的目標地址是“廣播地址”。

3、在一個實際的系統(tǒng)中,數(shù)據(jù)的收發(fā)都由網(wǎng)卡來完成。每張以太網(wǎng)卡擁有一個全球唯一的以太網(wǎng)地址。它是由48位的二進制數(shù)組成(如000AEB09BB一02。在網(wǎng)卡中內(nèi)建了一個數(shù)據(jù)包過濾器.該數(shù)據(jù)包過濾器的作用是保留以自身網(wǎng)卡的MAC地址為通信目的的數(shù)據(jù)包和廣播數(shù)據(jù)包.丟棄所有其他無關(guān)的數(shù)據(jù)包,以免除CPU對無關(guān)的數(shù)據(jù)包做元謂的處理。這是以太網(wǎng)卡在一般情況下的工作方式。數(shù)據(jù)包過濾器是可以編程禁用的。禁用數(shù)據(jù)包過濾器后,即網(wǎng)卡處于混雜模式時,該網(wǎng)卡具備“廣播地址”,繞過系統(tǒng)正常工作的處理機制。直接訪問網(wǎng)絡(luò)底層。它對所有收到的每一個數(shù)據(jù)幀都產(chǎn)生一個硬件中斷以提醒操作系統(tǒng)處理每一個報文包。然后直接訪問數(shù)據(jù)鏈路層

4、,截獲相關(guān)數(shù)據(jù)。由應(yīng)用程序而非上層如IP層TCP 層協(xié)議對數(shù)據(jù)過濾處理,這樣就可以采集到流經(jīng)網(wǎng)卡的所有數(shù)據(jù)。2.2Winpcap分析目前大多數(shù)操作系統(tǒng)都為應(yīng)用程序提供了訪問數(shù)據(jù)鏈路層的手段,它使得應(yīng)用程序可以監(jiān)視數(shù)據(jù)鏈路層上的所有分組。但遺憾的是Windows系統(tǒng)并沒有提供內(nèi)置的分組捕獲機制,這一功能必須由應(yīng)用系統(tǒng)提供,Winpcap使用BPF虛擬機(在Windows中通常稱為NPF*I,充了這一機制。它提供了一整套標準的函數(shù)集,可以完整的截獲網(wǎng)絡(luò)數(shù)據(jù)包。Winpcap的體系結(jié)構(gòu)如圖1所示。(11數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動程序可把設(shè)備驅(qū)動增加在Windows2000/XP上,它直接從數(shù)據(jù)鏈路層取得網(wǎng)絡(luò)

5、數(shù)據(jù)包并不加修改地傳遞給運行在用戶層的應(yīng)用程序,也允許用戶發(fā)送原始數(shù)據(jù)包。數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動程序支持NPF過濾機制,可以靈活地設(shè)置過濾規(guī)則。(2低級的動態(tài)鏈接庫(packet.d11運行在用黃興等:基于Windows下的網(wǎng)絡(luò)監(jiān)控軟件設(shè)計與開發(fā)97應(yīng)用程序f User bufferI手. 1/Packet.dll -。/.。-一一士一/內(nèi)核緩存區(qū)嗡簍鬈瓢l(fā) NIc驅(qū)動程序再戶層內(nèi)核層網(wǎng)絡(luò)數(shù)據(jù)包網(wǎng)絡(luò)圖1Winpcap體系結(jié)構(gòu)戶層,把應(yīng)用程序和數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動程序隔離開來,使得應(yīng)用程序可以不加修改地在不同的Windows系統(tǒng)上運行。通過packet.dll提供的能用來直接訪問BPF驅(qū)動程序的包驅(qū)動

6、API,利用“raw”模式發(fā)送和接收包。不同Windows系統(tǒng)上的packet.dll并不相同,但它們提供了一套相同的調(diào)用接口,使庫不依賴于Windows平臺。(3高級系統(tǒng)無關(guān)庫(wpcap.d11和應(yīng)用程序編譯在一起,它使用低級動態(tài)鏈接庫提供的服務(wù),向應(yīng)用程序提供完善的監(jiān)聽口。3協(xié)議解碼分析3.1數(shù)據(jù)包解碼經(jīng)過內(nèi)核過濾后獲得的數(shù)據(jù)包存放在包獲取組提供的緩沖區(qū)中,此時獲得的數(shù)據(jù)包是數(shù)據(jù)鏈路層的幀,因此需要對數(shù)據(jù)包進行解碼。當主機接收到一個以太網(wǎng)數(shù)據(jù)幀時,數(shù)據(jù)從協(xié)議棧中由底向上升,同時去掉各層協(xié)議加上的報文首部,每層協(xié)議都要檢查報文首部的協(xié)議標識.以確定接收數(shù)據(jù)的上層協(xié)議。我們把不符合條件的數(shù)據(jù)

7、包丟棄,只保留運行TCP/P協(xié)議的數(shù)據(jù)包。協(xié)議分析過程如圖2所示。3.2協(xié)議分析在數(shù)據(jù)鏈路層,網(wǎng)卡的驅(qū)動程序會自動計算校驗和,并取走幀中的前同步碼字段和校驗和字段,因此Winpcap接收的數(shù)據(jù)包僅僅是其中的幀頭和載荷部分。我們從幀頭數(shù)據(jù)可以得到數(shù)據(jù)包發(fā)送和接收的機器網(wǎng)卡的MAC地址.并TCP首部應(yīng)用數(shù)據(jù)卜TCP段一IP首部TCP首部應(yīng)用數(shù)據(jù)色TD黼撼掘、Jf姒搬,K,I以太網(wǎng)首部IP首部TCP首部應(yīng)用數(shù)據(jù)以太網(wǎng)尾部J 陪一以太網(wǎng)幀461500字節(jié)一I圖2數(shù)據(jù)出棧的解析過程根據(jù)幀類型來判斷上一層(網(wǎng)絡(luò)層的協(xié)議類型, IP協(xié)議為Ox0800,不是IP協(xié)議的數(shù)據(jù)包則丟棄,如果是IP協(xié)議,則調(diào)用相應(yīng)的

8、解析函數(shù),載荷部分進入下一層協(xié)議分析。圖3描述了以太網(wǎng)數(shù)據(jù)鏈路層的幀格式。÷一幀頭_十載荷÷十幀尾÷圖3以太網(wǎng)數(shù)據(jù)鏈路層的幀格式在網(wǎng)絡(luò)層,IP包頭主要包含以下內(nèi)容:版本號、首部長度、服務(wù)類型、總長度、標識符、標志、分片偏移量、壽命、協(xié)議類型、首部校驗和、源IP 地址、目的IP地址。利用解析函數(shù),對IP包頭信息進行解析,根據(jù)IP包內(nèi)的協(xié)議類型指明該IP 包負載的協(xié)議類型,即TCP、UDP或ICMP。最后根據(jù)傳輸層所用的協(xié)議類型調(diào)用相應(yīng)的解析函數(shù),載荷部分進入下一層協(xié)議分析。在傳輸層,TCP包頭主要包含源端口、目的端口、標志位、包序列號及ACK等域。利用解析函數(shù)解析T

9、CP包,根據(jù)解析的TCP包中的源和目的端口號就可以得到該包的應(yīng)用類型.比如FTP的端口為21,Telnet為23.SMTP為25,從而可以實現(xiàn)監(jiān)控不同的應(yīng)用程序。對UDP包也可作類似分析。在應(yīng)用層.包含的協(xié)議很多。常用的一些應(yīng)用層協(xié)議有WWW、FTP、SMTP、Telnet 等。對數(shù)據(jù)包的包頭進行分析,可以確定該包中應(yīng)用層的協(xié)議。同時對包頭的控制域及選擇項進行說明和文字描述,將協(xié)議可視化,為用戶提供直觀的監(jiān)視手段。4系統(tǒng)設(shè)計與實現(xiàn)本系統(tǒng)在windows2000環(huán)境下采用Visual c+6.0工具開發(fā)。整個系統(tǒng)主要由數(shù)據(jù)包的捕捉模塊、協(xié)議分析模塊、統(tǒng)計分析模塊組成。4.1數(shù)據(jù)包采集模塊98工礦

10、自動化要獲得網(wǎng)絡(luò)上的所有數(shù)據(jù)包,必須直接訪問數(shù)據(jù)鏈路層。目前大多數(shù)操作系統(tǒng)都為應(yīng)用程序提供了訪問數(shù)據(jù)鏈路層的手段,使應(yīng)用程序可以監(jiān)視數(shù)據(jù)鏈路層的所有分組。如果結(jié)合使用網(wǎng)絡(luò)接口的混雜模式,則可以接收本地網(wǎng)絡(luò)上的所有分組。在程序中使用了Winpcap.dll提供的一些函數(shù)設(shè)置來捕獲網(wǎng)絡(luò)設(shè)備上傳輸?shù)臄?shù)據(jù)。這些函數(shù)在Libpcap.h文件中都有定義。首先調(diào)用函數(shù)pcap_lookupdev(char*errbuO獲得主機上的網(wǎng)絡(luò)設(shè)備。該函數(shù)返回一個指向主機上網(wǎng)絡(luò)設(shè)備(如網(wǎng)卡的指針;然后調(diào)用函數(shù)pcap_ipen_live(char木device,int snaplen,int promisc,int

11、to_ms,char*ebu0打開一個網(wǎng)絡(luò)設(shè)備,該函數(shù)返回一個包捕獲描述符pcap_t。其中, device是要打開的網(wǎng)絡(luò)設(shè)備字符串,snaplen設(shè)定捕獲的包的最大長度。promisc確定接口是否被設(shè)為混雜模式。在系統(tǒng)中,將promisc參數(shù)設(shè)為混雜模式,以捕捉本地網(wǎng)絡(luò)上的所有包。to_ms設(shè)定讀超時的毫秒數(shù),ebuf用于返回錯誤文本。最后用函數(shù)pcapnext(pcap_t水p,struct pcap_pkthdr卑h或pcap_loop(pcap_t木p,int cnt, pcaphandler callback,u_char*user捕獲網(wǎng)絡(luò)上所有的數(shù)據(jù)包,以供應(yīng)用程序分析。4.2協(xié)議

12、分析模塊協(xié)議分析模塊是系統(tǒng)的核心。根據(jù)系統(tǒng)的要求和用戶的選擇,該模塊對捕獲的數(shù)據(jù)包進行協(xié)議解碼和分析。解碼和分析主要是按照相關(guān)協(xié)議,對數(shù)據(jù)包的包頭進行處理。網(wǎng)絡(luò)協(xié)議分析系統(tǒng)的層次結(jié)構(gòu)如圖4所示。網(wǎng)段上的數(shù)據(jù)捕獲模塊圜0DBC數(shù)據(jù)源IP層數(shù)據(jù)處理模塊F/圜圖4網(wǎng)絡(luò)協(xié)議分析系統(tǒng)的層次結(jié)構(gòu)4.3統(tǒng)計分析模塊通過對應(yīng)用和協(xié)議的分析與識別以及對數(shù)據(jù)包中相應(yīng)的數(shù)據(jù)進行分析,可以得到所需參數(shù)的值.從而能對該網(wǎng)段的運行及使用情況有一個全面的掌握和了解。5總結(jié)本文根據(jù)以太網(wǎng)中同一網(wǎng)段上的數(shù)據(jù)包以廣播方式發(fā)送的原理,利用Winpcap開發(fā)包,通過將網(wǎng)卡設(shè)為混雜模式,采集數(shù)據(jù)包,然后利用解析函數(shù)對采集到的數(shù)據(jù)包進行

13、多種協(xié)議族的底層和高層協(xié)議的解析,從而實現(xiàn)對網(wǎng)絡(luò)進行實時監(jiān)視的功能。Winpcap功能強大,如果需要的話,可以按照自己的意圖構(gòu)造幀,直接寫向數(shù)據(jù)鏈路層發(fā)送到以太網(wǎng)上。在某種程度上不光可以監(jiān)視也可以控制本地網(wǎng)上的活動。參考文獻:1.莊春興,彭奇志.基于Winpcap的網(wǎng)絡(luò)嗅探程序設(shè)計.計算機與現(xiàn)代化,2002,52.Fulvio Risso,Loris Degianni.Development of an Architecture for Packet Capture and Network Traffic AnalysisDB/OL.http:/netgroup2serv. pohto.it/winpcap.2000050213

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論