基于Winpcap的網絡嗅探器的設計與實現_第1頁
基于Winpcap的網絡嗅探器的設計與實現_第2頁
基于Winpcap的網絡嗅探器的設計與實現_第3頁
基于Winpcap的網絡嗅探器的設計與實現_第4頁
基于Winpcap的網絡嗅探器的設計與實現_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 收稿日期 :2008-11-053基金項目 :黃石理工學院 2008年科研項目 (08yjz18B 作者簡介 :成俊 (1980 , 男 , 湖北大冶人 , 助教 , 本科 。文章編號 :1008-8245(2008 06-0022-04基于 W inpcap 的網絡嗅探器的設計與實現3成 俊 李 芳(黃石理工學院 計算機學院 摘 要 :針對網絡管理中的安全問題 , 以 W , V isual C +為開發工具 , 設計了一個網絡嗅探器 。 , 捕獲數據包的程序流程 , 最后給出具體實現的 關鍵函數 。 結果表明 , 捕獲數據快 , 對網絡的安全管理具有重要意義 。關鍵詞 :; . 文獻標識

2、碼 :ADesi gn and I mple ment ati on ofNetwork Sn i ffer Based on W i n pcapCHENG Jun L I Fang(School of Computer Science, Huangshi I nstitute of Technol ogy, Huangshi Hubei 435003Abstract:A i m ing at the security p r oble m s of net w ork management, the paper p r oposes a net w ork sniffer with W i

3、npcap as devel opment p latfor m and V isual C+as devel opment t oolW inpcap and visual C+. The funda mental p rinci p le ofthe net w ork sniffer is analyzed and the p r ocedure during which W inpcap cap tures the packet is intr oduced . The key functi on is finally given. The results show that the

4、net w ork sniffer has such advantages as si m p le structure and fast data cap ture, which is signifant t o the net w ork security and manage ment . Key words:packet cap ture; sniffer; W inpcap 隨著 I nternet 的迅猛發展 , 網絡已日益成為工 作和生活中不 可 或 缺 的 工 具 。同 時 , 網 絡 的 安 全 性與可靠性日益受到人們的重視 。網絡嗅探器可 以有效完成對 網絡 上 傳輸 數

5、據 包 的 捕 獲 , 從 而 收 集與分析網絡 信息 , 是 網 絡 流 量 監 控 和 故 障 檢 測 所必不可少的 工具 之 一 , 對 網 絡 管 理 與 網 絡 安 全 具有重要的意義 。1 W inpcap 簡介W inpcap (windows packet cap ture 是 W in32平臺下強大的 、 有 較 好擴 展 性 的 底 層 網 絡 分 析 體 系 結構 , 是 UN I X 下的 lipbcap 移植到 W indows 下的產物 , 是 W in32環境下 數據 包 捕獲 的 開放 代 碼 函 數 庫 。 W inpcap 是第一 個 W in32開 放 式

6、 的 捕 獲 包 的 體系結構 , 能夠支持大多數應用程序的需要 。W inpcap1包含 了 一 個 內 核 級 的 數 據 包 過 濾器 NPF (Netgr oupPacketFilter 、 一個底層動態鏈 接庫 (Packet . dll 和 一 個 高 層 的 獨 立 于 系 統 的 庫(Wpcap. dll 。 NPF 模塊過濾數據包 , 將數據包不做任何改 動 的 傳 遞 給 用 戶 。 Packet . dll 模 塊 提 供了 W in32平臺下的捕獲包的驅動接口 , 基于 Pack 2et . dll 編寫的程序 可 以不 經 過重 新 編 譯 就 在 各 種 W in3

7、2平臺 下 實 現 捕 獲 數 據 包 。 Wpcap. dll 庫 不依賴于操作系統 , 且 它 包含 了 一 些 其 他 高 層 的 函 數 , 如過濾器生成器 , 用戶定義的緩沖區和高層特第 24卷 第 6期 2008年 12月 黃 石 理 工 學 院 學 報 JOURNAL OF HUANGSH I I N STI T UTE OF TECHNOLOGY Vol . 24 No . 6Dec 2008性 。 W inpcap 的 主 要 功 能 在 于 獨 立 于 主 機 協 議(如 TCP /I P 而發送和接收原始數據包 。2 網絡嗅探器的基本原理網絡嗅 探 器 是 一 種 常 用

8、 的 網 絡 數 據 收 集 軟 件 , 簡單地說 , 它是在廣播式網絡環境下利用計算 機網絡接口截獲目的地為其它計算機的數據報文 的一種工具 。在以太網中 , 信 息 是 以 明 網 傳輸 2, , 由于 采用以太網廣 , 使 得 監 聽 系 統 與正常通信的 聯 連 接 , 并 可 以 捕 獲 任 何 一 個 在 同 一 沖 突 域 上 傳 輸 的 數 據 包 。 I EEE802. 3標準的以太網采用的是持續 CS MA 的 方式 , 正是由于 以 太網 采 用 這 種 廣 播 信 道 爭 用 的 方式 , 使得各個 站 點可 以 獲 得 其 他 站 點 發 送 的 數 據 。運用這一原

9、理使信息捕獲系統能夠攔截我們 所要的信息 , 這是捕獲數據包的物理基礎 。首先 , 抓包系統必須繞過操作系統的協議棧來訪問在網 絡上傳輸的原 始數 據 包 , 這 就 要 求 一 部 分 運 行 在 操作系統 核 心 內 部 , 直 接 與 網 絡 接 口 驅 動 交 互 。 這個 部 分 是 系 統 依 賴 的 , 在 W inpcap 的 解 決 方 案 里它被認為 是 一 個 設 備 驅 動 , 稱 作 NPF (Netgr oup Packet Filter 。W inpcap 提供 了 兩 個 不 同 的 庫 :Packet . dll 和 Wpcap. dll 。 Wpcap. d

10、ll 提供了更加友好 、 功能更加 強大的函數 調 用 。 W inPcap 的 優 勢在 于 提 供 了 一 套標 準 的 抓 包 接 口 , 與 libpcap 兼 容 , 可 使 得 原 來 許多 UN I X 平臺下的網絡分析工具快速移植過來 , 便于開發各種 網絡 分 析工 具 , 充 分 考 慮 了 各 種 性 能和效率的優化 , 包括 對 于 NPF 內 核 層次 上 的過 濾器支持 , 支持內核態的統計模式 , 提供了發送數 據包的能 力 。前 者 提 供 了 一 個 底 層 AP I, 伴 隨 著 一個獨立于 M icr os oft 操 作 系 統 的 編 程 接 口 ,

11、這 些 AP I 可以直接 用 來 訪 問 驅 動 的 函 數 ; 后 者 導 出 了 一組更強 大 的 與 libpcap 一 致 的 高 層 抓 包 函 數 庫 (cap ture p ri m itives 。這些函數使得數據包的捕獲 以一種與網絡硬件和操作系統無關的方式進行 。 網絡嗅探器 工 作 在 網 絡 環 境 的 底 層 , 攔 截 所 有正在網絡上 傳送 的 數據 , 并 且 通 過 相 應 的 解 析 處理 , 可以實時分析這些數據的內容 , 進而分析所 處的網絡狀態和整體拓撲布局 。 3 網絡嗅探器總體設計網絡嗅 探 器 的 整 體 結 按 功 能 分 為 3個 部 分

12、, 、 協議解析模塊 如 圖 1 圖 1 網絡嗅探器的總體結構4 數據捕獲模塊的設計與實現數據捕獲 模 塊 的 主 要 功 能 是 進 行 數 據 采 集 , 這是整個系統的基礎和數據來源 。程序使用 W in 2 pcap 來捕獲網絡中原始數據包 。具體數據包捕獲 流程如圖 2所示 3 。圖 2 數據包捕獲流程圖4. 1 獲得本地網絡驅動器列表獲取一個已經綁定的網卡列表 , 然后 W inpcap 對捕獲網絡數據端口進行設定 。通過 pcap 引擎找 出 并 設定 監 聽 的 網 絡 接 口 。 W inpcap 提供 了 pcap _findalldevs _ex ( 函 數 , 這 個

13、函數返回一個指向 pcap _if 結構的鏈表 , 其中的每 一項都包含 了 一 個 己 經 綁 定 的 適 配 器 (網 卡 的 全部信息 。其中 name 和 descrip tion 這兩項分別包第 6期 成 俊 李 芳 :基于 W inpcap 的網絡嗅探器的設計與實現 23 含了相應設備的名稱和描述 。取得網卡列表后就 在屏幕上顯示 出來 , 如 果 網 卡 沒 有 被 發 現 就 顯 示 有關錯 誤 , pcap _findalldevs ( 同 其 他 的 libpcap 函 數一樣有一個 errbuf 參數 , 當有異常情 況 發 生時 , 這個參數會被 pcap 填充為某個特

14、定錯誤字串 。 程序功能示意如下 :#inelude ” pcap. h ”void main (Pcap _if_t 3alldevs; :/Char errbuf PCAP /用于存 儲錯誤信息if (pcap _(errbuf =-1 /這個 AP Ifp rintf (stderr, ” Err or in Pcap _findalldevs:%s n ” , errbuf ;exit (l ;pcap _freealldevs(alldevs ; /最后用 pcap _free2 alldevs ( 釋放內存資源4. 2 打開網卡準備捕獲數據包獲得網卡的信息后就可以按數據捕獲的要求

15、打開網卡 。打 開 網 卡 的 功 能 是 通 過 pcap _open _ live ( 來實現的 4。它的函數原型定義如下 : pcap _t 3pcap _open _live (char 3device , int snap len , int p rom isc , int t o _ms, char 3ebuf device:前面制定的監聽設備接口 ;snap len:制定 pcap 捕獲的 最大 數 目的 網 絡數 據包 ;p r om isc:此參數大 于 0, 即指 定 device 接 口 工 作在混雜模式 (p rom iscous Mode 。在正常情況下網卡只接受去往

16、它的包而去往 其他主機的數 據包 則 被忽 略 , 相 反 當 網 卡 處 于 混 雜模式時它將 接收 所 有的 流 經 它 的 數 據 包 , 這 就 意味著在共享介質的情況下可以捕獲到其它主機 的數據包 。大部分的包捕獲程序都將混雜模式設 為默認 。4. 3 數據包的過濾設定通過設置數據流過濾規則 (filter 來實現 。數 據包過濾處 理 是 嗅 探 技 術 中 的 難 點 和 重 點 , W in 2 pcap 提供了最強大的數據流過濾引擎 。它采用了 一種高效的方法來捕獲網絡數據流的某些數據且 常常和系統的捕獲機制相集成 。過濾數據的函數 是 pcap -comp ile ( 和

17、pcap _setfilter ( 來實現的 。 /編譯過濾規則if (PcaP _comp ile (adhandle , &fcode, ” i p and tcp ” , l, net m ask <0fp rintf (stderr, ” n to comp ile the Paeket filter . thepcap ; /釋放設備列表 if (pcap _setfilter (adhandle , &fcode <0 fp rintf (stderr, ” n Err or setting the filter . n ” ; 4. 4 捕獲數據包使用

18、 pcap _next_ex( 從 網絡 接 口中 讀 取一 個 數據包 , 該函數第一個參數是接口句柄 , 后兩個參 數由函數返回 , 分別 為 數據 包 的 相 關 信 息 和 數 據 包本身 5。函 數 返 回 1表 示 正 常 接 收 一 個 數 據 包 , 返回 0表示超時 , -1表示發生錯誤 。每捕獲 到一 個 數 據 包 , 就 調 用 PacketHandler ( 函 數 對 數 據包進行后續解析處理 。/循環捕獲數據包while (res =Pcap _next_ex (adhandle , &header, &Pkt-data >=0/接收超時繼續

19、循環if (res =0 continue;/處理收到的數據包Packet Handler ( ;5 協議解析模塊的設計與實現該模塊的主要功能就是對捕獲的數據包按照 數據鏈路層 、 網絡層 、 傳輸層和應用層的層次結構 自底向上進行解析 , 最后將解析結果顯示輸出 。 以解 析 UDP 數 據 包 為 例 , 首 先 設 置 UDP 過 濾 , 用這種方法確保 packet_handler ( 只接收到基 于 I PV 4的 UDP 數 據 。同 時 , 定 義 兩 個 數 據 結 構 來描述 IP 和 UDP 的頭部信息 , packet_handler( 用 這兩個結構來定位頭部的各種字段

20、 。開始捕獲之 前 , 首先要用 pcap _datalink ( 來 檢 查 MAC 層 , 所 以程序只能夠 工 作在 Ethernet net w orks 上 , 再 次 確 保 MAC 頭為 14bytes 。 MAC 頭之后是 I P 頭 , 可以 從中提取出了目 的 地址 。 I P 之 后是 UDP , 在確 定 UDP 的位置時有點復雜 , 因為 IP 的長度以版本的 不同而不同 , 所以用頭長字段來定位 UDP , 一旦確24 黃 石 理 工 學 院 學 報 2008年 定了 UDP 的起始位置 , 就可以解析出原和目的端 口 6。解析代碼如下 :/定義處理包的函 數 Vo

21、id packet_handler (u _ char 3param , const struct pcap _pkthdr 3header, const u _char3pkt_datastruct t m 3lti m e;char ti m estr 6;ip _header3ih;udp _header3uh;u _int ip _u _short s/將時 間 戳 換 為 只 讀 格 式 lti m e =localti m e (&header->ts . tv_sec ;strfti m e (ti m estr, sizeof ti m estr, " %H :%M :% S" , lti m e ;/打印時間戳和數據報長度p rintf (" %s . %.6d len:%d " , ti m estr, head -er ->ts . tv_usec, header ->len ;/找到 I P 頭的位置ih =(ip +14 ;/len (>ihl&0xf 34;_header 3 (u _char 3 ih +i p _ ;6 測試結果程序運行界面及捕包結果如圖 3所示 。圖 3 程序運行界面及捕

溫馨提示

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

評論

0/150

提交評論