国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于WinPcap 的網(wǎng)絡嗅探器設計與實現(xiàn)

2013-12-31 00:00:00趙鋼
電腦知識與技術 2013年15期

摘要: 針對安全問題在網(wǎng)絡管理中的日益突出,基于Winpcap開發(fā)平臺,使用Visual C + +作為開發(fā)工具,設計并開發(fā)了一個網(wǎng)絡嗅探器。該文設計了一個GUI程序,實現(xiàn)IP、TCP、UDP數(shù)據(jù)包捕獲和分析。同時分析了網(wǎng)絡嗅探器的基本工作原理,并闡述了應用捕獲數(shù)據(jù)包流,根據(jù)Winpcap關鍵功能給出了其具體實現(xiàn)。結果表明,該網(wǎng)絡嗅探器結構簡單,捕獲數(shù)據(jù)快速,對網(wǎng)絡安全管理具有重要意義。

關鍵詞:WinPcap;MFC;嗅探器;計算機網(wǎng)絡

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2013)15-3506-03

1 嗅探協(xié)議原理

1.1 IP協(xié)議

IP是英文Internet Protocol(網(wǎng)絡互連的協(xié)議)的縮寫,中文簡稱為“網(wǎng)協(xié)”,也就是為計算機網(wǎng)絡相互連接進行通信而設計的協(xié)議。在因特網(wǎng)中,它是能使連接到網(wǎng)上的所有計算機網(wǎng)絡實現(xiàn)相互通信的一套規(guī)則,規(guī)定了計算機在因特網(wǎng)上進行通信時應當遵守的規(guī)則。任何廠家生產(chǎn)的計算機系統(tǒng),只要遵守 IP協(xié)議就可以與因特網(wǎng)互連互通。

1.2 TCP協(xié)議

TCP:Transmission Control Protocol (傳輸控制協(xié)議)TCP是一種面向連接(連接導向)的、可靠的、基于字節(jié)流的運輸層通信協(xié)議。在OSI/RM模型中,它完成第四層傳輸層所指定的功能,UDP是同一層內(nèi)另一個重要的傳輸協(xié)議。

1.3 UDP協(xié)議

UDP的全稱是用戶數(shù)據(jù)報協(xié)議,在網(wǎng)絡中該協(xié)議用于處理數(shù)據(jù)包。它處在OSI模型中的第四層,即傳輸層,它處在TCP協(xié)議的更高一層。UDP不提供數(shù)據(jù)報分組、裝配,不能將退回的數(shù)據(jù)包進行排序。也就是說,在消息發(fā)送后,不知道是否它是安全完整無損地運到了。UDP是用來支持那些需要相互傳遞數(shù)據(jù)的計算機網(wǎng)絡應用程序。許多系統(tǒng),包括網(wǎng)絡視頻會議系統(tǒng),客戶端/服務器模式的網(wǎng)絡應用程序,都需要使用UDP協(xié)議。UDP協(xié)議從出現(xiàn)到目前為止已使用多年,雖然相比以前其光澤略有失色,但是即使是在今天,UDP仍是一個非常實用和可行的網(wǎng)絡傳輸層協(xié)議。

2 Winpcap基本理論

2.1 Winpcap概念

大多數(shù)Unix操作系統(tǒng)提供了一套允許應用程序直接與網(wǎng)絡相互聯(lián)系的系統(tǒng)調(diào)用。這些指令對于那些需要通過網(wǎng)絡捕獲連續(xù)的包數(shù)據(jù)而不用內(nèi)核進行過多的干預的包捕獲應用程序非常有用。在Windows環(huán)境下,WinPcap就是這樣一類工具。

WinPcap是一個免費的工具平臺,可以在Windows操作系統(tǒng)中用于直接訪問網(wǎng)絡開發(fā)工具包(API)編程。大多數(shù)Windows84dbdad721c234e5e09294fcb625478fb093d2c789fb58502b203d94aec6e1f3網(wǎng)絡應用程序是通過Winsock API(Windows socket)這樣的高級編程接口來訪問網(wǎng)絡的。這種方法允許簡單的在互聯(lián)網(wǎng)上的數(shù)據(jù)傳輸,這是因為操作系統(tǒng)的TCP / IP協(xié)議棧的實現(xiàn)軟件,可以處理低層細節(jié)(協(xié)議操作、流程再造等),并提供一個類似于函數(shù)接口來讀寫文件。

2.2 Winpcap目的與用途

發(fā)展WinPcap的目的是為Win32應用程序提供一個直接訪問底層網(wǎng)絡的接口。通過WinPcap平臺,web應用程序可以實現(xiàn)以下功能:捕獲原始數(shù)據(jù)包,包括發(fā)送到主機以及共享網(wǎng)絡數(shù)據(jù)包;數(shù)據(jù)過濾,在數(shù)據(jù)包被發(fā)送到應用程序后,按照規(guī)定的用戶捕獲數(shù)據(jù)包過濾;發(fā)送原始數(shù)據(jù),發(fā)送原始數(shù)據(jù)到網(wǎng)絡;數(shù)據(jù)包統(tǒng)計,統(tǒng)計數(shù)據(jù)網(wǎng)絡通信。函數(shù)通過一個設備驅(qū)動程序(驅(qū)動程序被安裝在網(wǎng)絡部分的Win32內(nèi)核)和一組動態(tài)鏈接庫(DLL)。所有這些功能都是通過一個強大的編程接口來實現(xiàn),應用程序可以簡化開發(fā),可以移植到各種操作系統(tǒng)中。

2.3 基于Winpcap可開發(fā)的網(wǎng)絡應用程序

目前,winpcap主要的開發(fā)和運行環(huán)境是windows NT/2000/XP。由于winpcap的用戶中只有很小一部分使用windows 95/98/Me,并且微軟也已經(jīng)放棄了對win9x的開發(fā)和支持。實際上,winpcap中的面向9x系統(tǒng)的概念和NT系統(tǒng)的非常相似,只是在某些實現(xiàn)上有點差異,比如說9x只支持ANSI編碼,而NT系統(tǒng)則提倡使用Unicode編碼。

Winpcap的組成與結構:WinPcap由一個數(shù)據(jù)包監(jiān)聽設備驅(qū)動程序(NPF)、一個底層的動態(tài)連接庫(packet.dll)和一個高層的不依賴于操作系統(tǒng)的靜態(tài)庫(wpcap.dll)共三個部分構成,如圖2.5所示。這里,NPF在操作系統(tǒng)的內(nèi)核級,packet.dll、wpcap.dll在用戶級。

3 系統(tǒng)設計

3.1 系統(tǒng)功能設計

本系統(tǒng)的基本功能為實現(xiàn)網(wǎng)絡數(shù)據(jù)包的捕獲,并將其數(shù)據(jù)內(nèi)容解析顯示。網(wǎng)絡數(shù)據(jù)包捕獲功能主要負責從網(wǎng)絡中捕獲和過濾數(shù)據(jù),這可以通過調(diào)用Winpcap提供的豐富的API函數(shù)來實現(xiàn);數(shù)據(jù)解析及顯示部分主要負責界面數(shù)據(jù)轉(zhuǎn)化、解析、處理、格式化、協(xié)議分析等,這一部分主要通過MFC來設計一個單文檔圖形用戶界面GUI,解析結果將通過MFC的類庫顯示到GUI中。

3.2 系統(tǒng)架構設計

網(wǎng)絡嗅探器的整體設計由三個模塊組成,自底向上分別是嗅探器設置模塊,數(shù)據(jù)包捕獲模塊,解析和顯示模塊。嗅探器設置模塊主要調(diào)用Winpcap提供的API,分為獲取網(wǎng)絡設備信息,設置并編譯過濾器,打開網(wǎng)絡設備 三個步驟。數(shù)據(jù)包捕獲模塊創(chuàng)建了新的線程,利用了Winpcap的非回調(diào)函數(shù)pcap_next_ex()函數(shù)從Winpcap底層驅(qū)動的數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)包。并將數(shù)據(jù)包存儲在系統(tǒng)臨時文件中,以便之后的分析。用pcap_open_offline()函數(shù)從離線文件中讀取包。讀取到的任意一個符合捕獲條件數(shù)據(jù)包,將其內(nèi)容解析,并顯示本數(shù)據(jù)包。捕獲完成后,進入解析和顯示模塊。

網(wǎng)絡嗅探器總體結構如圖1。

3.3 子系統(tǒng)與模塊設計

網(wǎng)絡嗅探器設置模塊分為三個子過程:

a.獲取已連接的網(wǎng)絡設備列表,WinPcap提供了 pcap_findalldevs_ex() 函數(shù),這個函數(shù)返回一個 pcap_if 結構的鏈表, 每個這樣的結構都包含了一個適配器的詳細信息。

b.打開網(wǎng)絡設備,Winpcap提供了pcap_open()函數(shù),該函數(shù)第一參數(shù)制定要捕獲數(shù)據(jù)包的哪些部分,第二參數(shù)用來制定適配器是否為混雜模式,第三參數(shù)為讀取數(shù)據(jù)的超時時間,當適配器被打開后,就可以進行捕獲工作了;

c.設置過濾器,Winpcap中用來過濾數(shù)據(jù)包的函數(shù)是 pcap_compile() 和 pcap_setfilter() 。pcap_compile() 它將一個高層的布爾過濾表達式編譯成一個能夠被過濾引擎所解釋的低層的字節(jié)碼。pcap_setfilter() 將一個過濾器與內(nèi)核捕獲會話相關聯(lián)。當 pcap_setfilter() 被調(diào)用時,這個過濾器將被應用到來自網(wǎng)絡的所有數(shù)據(jù)包,并且,所有的符合要求的數(shù)據(jù)包 (即那些經(jīng)過過濾器以后,布爾表達式為真的包) ,將會立即復制給應用程序。

3.4 網(wǎng)絡數(shù)據(jù)包的捕獲模塊

該部分創(chuàng)建了一個用于捕獲數(shù)據(jù)包的線程,在該線程中調(diào)用Winpcap提供的pcap_next_ex()函數(shù)從底層驅(qū)動數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)包,該函數(shù)接受已打開的網(wǎng)絡設備句柄,返回捕獲數(shù)據(jù)包的實體。并用pcap_dump()函數(shù)將每一個數(shù)據(jù)包寫入臨時文件中。

3.5 解析和顯示模塊

該部分在接收到用戶發(fā)出的捕獲完成消息后,將數(shù)據(jù)包從離線文件中逐條取出并進行解析和顯示。將解析完畢數(shù)據(jù)包中的各項內(nèi)容填入已經(jīng)預先聲明的協(xié)議的數(shù)據(jù)結構中,包括(序號,捕獲時間,以太幀長度,傳輸層協(xié)議,源IP地址,目的IP地址,源MAC地址,目的MAC地址),然后將數(shù)據(jù)結構添加到列表視圖中。

4 系統(tǒng)測試與運行

在運行本程序之前,須有一個正在連網(wǎng)的網(wǎng)絡接口,在本機中使用的是PPP/SLIP網(wǎng)絡接口。程序開始運行后,第一步須先設置嗅探器選項,選擇網(wǎng)絡設備與設置過濾器;第二步,點擊捕獲菜單欄下的開始捕獲菜單項或者工具欄中的開始按鈕,均可以啟動捕獲數(shù)據(jù)包線程;在用戶希望停止或者結束捕獲時,可以點擊捕獲菜單欄下的停止捕獲或者工具欄中的停止按鈕停止捕包。再次捕包時須重新設置嗅探器選項。點擊關閉按鈕,程序結束。

程序測試截圖見圖2:

5 總結

本文設計的基本內(nèi)容是捕獲IP,TCP,UDP數(shù)據(jù)包,通過解析數(shù)據(jù)包,可以進一步理解和分析各類數(shù)據(jù)包的結構。

1) 設計了一個GUI程序,完成了局域網(wǎng)數(shù)據(jù)包的捕獲和IP、TCP、UDP數(shù)據(jù)包的解析;

2) 捕獲了幾個網(wǎng)絡數(shù)據(jù)報,給出實例并分析了各數(shù)據(jù)包各字段的含義;

3) 說明了基于Winpcap編程的基本原理、程序總體框架。

參考文獻:

[1] 吳功宜,董大凡,王珺,等.計算機網(wǎng)絡高級軟件編程技術[M].北京:清華大學出版社,2008.

[2] 胡曉元,史浩山. Winpcap包截獲系統(tǒng)的分析及其應用[J].計算機工程,2005,(1): 96-97.

[3] 謝小特,王勇軍.基于Winpcap的捕包程序設計[J].軟件導刊,2007,(11): 71-72.

[4] 孫萍,徐朝陽,刁鳴.基于Winpcap的以太網(wǎng)監(jiān)聽系統(tǒng)的設計與實現(xiàn)[J].艦船電子對抗, 2007,(2): 94-95.

[5] 趙輝,葉子青.VisualC+ +系統(tǒng)開發(fā)實例精粹[M].北京:人民郵電出版社,2005.

[6] 莊春興,彭奇志.基于Winpcap的網(wǎng)絡嗅探程序設計[J].計算機與現(xiàn)代化,2002,(5):11-13.

洪泽县| 申扎县| 金山区| 武城县| 江都市| 三穗县| 太原市| 老河口市| 新河县| 修武县| 都兰县| 铜鼓县| 周至县| 大洼县| 项城市| 丘北县| 游戏| 鹰潭市| 淄博市| 长宁区| 丰镇市| 突泉县| 旅游| 黄骅市| 潼关县| 宜章县| 枞阳县| 东乡族自治县| 望奎县| 卢龙县| 河池市| 社会| 德兴市| 玛多县| 天津市| 东源县| 乌兰县| 库伦旗| 伊金霍洛旗| 留坝县| 赤水市|