資源描述:
《基于winpcap網(wǎng)絡數(shù)據(jù)包捕獲和存儲技術探究》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、基于Winpcap網(wǎng)絡數(shù)據(jù)包捕獲和存儲技術探究 摘要:利用Winpcap網(wǎng)絡開發(fā)包使應用程序繞過協(xié)議棧捕獲并傳送網(wǎng)絡數(shù)據(jù)包,實現(xiàn)了數(shù)據(jù)包的循環(huán)捕獲。基于Windows平臺,用VC++6.0實現(xiàn)界面設計,并運用ADO技術與數(shù)據(jù)庫連接,實現(xiàn)了數(shù)據(jù)包實時分析和數(shù)據(jù)的存儲功能。關鍵詞:Winpcap;數(shù)據(jù)包;協(xié)議分析;數(shù)據(jù)庫中圖分類號:TP391文獻標識碼:A文章編號文章編號:16727800(2014)001012503作者簡介作者簡介:李星(1987-),男,西南交通大學電氣工程學院碩士研究生,研究方向為微機保護與綜合自動化。0引言隨著計算機網(wǎng)絡的迅速發(fā)展,人們迫切希望網(wǎng)絡上的信息
2、不被泄露、更改和破壞,網(wǎng)絡服務不被中斷。網(wǎng)絡數(shù)據(jù)包捕獲和分析技術是網(wǎng)絡安全維護的基礎技術和核心手段,因此,深入研究網(wǎng)絡數(shù)據(jù)包的捕獲和分析技術尤為必要。本文提出了一種可行的捕獲網(wǎng)絡數(shù)據(jù)包的設計流程,并實現(xiàn)了對捕獲的數(shù)據(jù)包的實時分析和存儲功能。1基于Winpcap數(shù)據(jù)包的捕獲技術91.1網(wǎng)絡通信模型及常規(guī)通信編程方法計算機網(wǎng)絡通信采用OSI七層模型標準,只要遵循這個標準就可以和位于世界任何地方、同樣也遵循OSI標準的其它任何系統(tǒng)進行連接。但實際上完全符合各層協(xié)議的商用產品很少,隨著Internet在全世界的飛速發(fā)展,TCP/IP已經(jīng)成為事實上的國際標準,它們的對比參考模型如圖1所示。
3、圖1OSI模型與TCP/IP參考模型對Windows系統(tǒng),數(shù)據(jù)包捕獲用到的主要方法有原始套接字、調用NDIS庫函數(shù)、使用他人編寫的中間層驅動、使用第三方組織提供的捕獲組件或者庫(如Winpcap)共4種。本文采用第4種,具體介紹如下:1.2Winpcap技術簡介Winpcap是UNIX下的libpcap移植到Windows下的產物,它是一個開源項目。Winpcap工作于驅動(Driver)層,所以能以很高的效率進行網(wǎng)絡操作。Winpcap提供了以下強大功能[1]:①獲取網(wǎng)卡列表及信息;②捕獲原始的數(shù)據(jù)包;③設置filter,只捕獲自己感興趣的數(shù)據(jù)包;④方便地把捕獲的數(shù)據(jù)包輸出到文
4、件和從文件輸入;⑤發(fā)送原始的數(shù)據(jù)包;⑥統(tǒng)計網(wǎng)絡流量。9本文使用MFC應用程序的界面設計編寫程序,核心開發(fā)主要使用Winpcap完成。Winpcap的組成部分如圖2所示,使用其提供的函數(shù)主要完成網(wǎng)絡數(shù)據(jù)包的捕獲等功能。圖2Winpcap的組成部分Winpcap為Win32應用程序提供訪問網(wǎng)絡底層的能力,底層是基于WINPCAP包進行開發(fā)。主要用到的函數(shù)包括[2]:(1)intpcap_findalldevs();用于返回所找到的適配器列表。(2)pcap_t*pcap_open();用于打開一個網(wǎng)絡接口進行數(shù)據(jù)包捕獲。(3)voidpcap_dump();用于將包內容輸出到由pca
5、p_dump_open()打開的文件中。(4)intpcap_compile();用于將過濾規(guī)則字符串編譯成一個BPF內核過濾程序。(5)intpcap_setfilter();功能是設置BPF過濾規(guī)則。(6)intpcap_datalink();功能是獲取數(shù)據(jù)鏈路層類型,如10M以太網(wǎng)、SLIP、IEEE802.3等。1.3數(shù)據(jù)捕獲原理9以太網(wǎng)(Ethernet)是一種總線型網(wǎng)絡,具有共享介質的特征,當網(wǎng)絡適配器設置為監(jiān)聽模式(混雜模式,Promiscuous)時,由于采用以太網(wǎng)廣播信道爭用的方式,使得監(jiān)聽系統(tǒng)與正常通道的網(wǎng)絡能夠并聯(lián)連接,并可以捕獲任何一個在同一沖突域上傳輸?shù)?/p>
6、數(shù)據(jù)包,運用這一原理就能監(jiān)聽所需要的信息。1.4原始數(shù)據(jù)包捕獲的實現(xiàn)捕獲流程按先后順序如下:①捕獲設備可用的接口列表;②選擇接口并將其設為混雜模式捕捉;③將捕捉的數(shù)據(jù)包保存進數(shù)據(jù)庫以便讀取和分析;④讀取數(shù)據(jù)庫保存的數(shù)據(jù)包并進行分析;⑤釋放接口。本軟件建立在Winpcap結構的第三層模塊Winpcap.dll之上,并用VC++6.0多線程技術實現(xiàn)。主線程用于查找和顯示網(wǎng)絡設備、設置過濾器、分析數(shù)據(jù)包。子線程用于打開選擇網(wǎng)絡接口、捕獲數(shù)據(jù)包并實時存入數(shù)據(jù)庫中。1.5體系結構設計總框架Winpcap提供了數(shù)據(jù)包的捕獲功能,在不同的應用中需要設計不同的協(xié)議分析模塊。針對不同的協(xié)議,設計相
7、應的協(xié)議分析功能,是基于Winpcap應用的關鍵所在。本文使用Winpcap捕獲和分析網(wǎng)絡數(shù)據(jù)包的框架如圖3所示。圖3網(wǎng)絡數(shù)據(jù)包捕獲和分析框架2具體設計與實現(xiàn)過程2.1Winpcap安裝與配置9由于本程序采用Winpcap抓取數(shù)據(jù)包,所以需要Winpcap軟件包以及相應開發(fā)包的支持。主要配置包括頭文件目錄和庫文件目錄,增加與Winpcap有關的預處理定義、pcap.h頭文件以及添加靜態(tài)鏈接庫,然后編譯并測試代碼。本程序采用的開發(fā)環(huán)境是Winpcap4.1.3以及對應的開發(fā)包[3]