資源描述:
《基于winpcap的嗅探器設(shè)計實現(xiàn)分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、.計算機與信息學(xué)院《計算機網(wǎng)絡(luò)系統(tǒng)實踐》報告設(shè)計題目:嗅探器的設(shè)計與實現(xiàn)學(xué)生姓名:***學(xué)號:2010****專業(yè)班級:信息安全****2013年9月25-..一、設(shè)計要求1.不限平臺,可以使用Libpcap、WinPcap或Linux的原始套接字;2.實現(xiàn)一個功能比較簡單的、具有圖形界面的Sniffer,主線程響應(yīng)用戶界面操作,工作線程完成抓包等工作;3.能夠解析出IP層和傳輸層的協(xié)議頭,能夠過濾TCP、UDP等數(shù)據(jù)包;4.能夠輸出文本方式傳送的數(shù)據(jù)包的內(nèi)容;5.能夠進(jìn)行簡單的流量統(tǒng)計。二、開發(fā)環(huán)境
2、與工具操作系統(tǒng):windows7開發(fā)工具:visualstudio開發(fā)語言:C++附加庫:Winpcap三、設(shè)計原理網(wǎng)絡(luò)嗅探器是一種常用的監(jiān)聽網(wǎng)絡(luò)的工具。所謂嗅探器(Sniffer),是一種利用計算機網(wǎng)絡(luò)接口截獲網(wǎng)絡(luò)數(shù)據(jù)的軟件或硬件,可用于網(wǎng)絡(luò)管理、網(wǎng)絡(luò)協(xié)議分析以及網(wǎng)絡(luò)安全等眾多方面。嗅探器不同于一般的鍵捕獲工具,后者只能捕獲當(dāng)?shù)亟K端控制臺上的按鍵內(nèi)容,而嗅探器所“嗅”到的是動態(tài)的以信息包形式(如IP數(shù)據(jù)包或者以太網(wǎng)包)封裝的信息流。其中可能攜帶了重要數(shù)據(jù)或敏感信息。可以將這些捕獲到的信息包存檔,以利
3、用相應(yīng)工具可以作進(jìn)一步分析。計算機網(wǎng)絡(luò)的設(shè)計為嗅探器的使用創(chuàng)造了最基本的條件。在目前的網(wǎng)絡(luò)環(huán)境中,所有計算機節(jié)點都是共享傳輸介質(zhì),任意節(jié)點發(fā)出或發(fā)往任意節(jié)點的數(shù)據(jù)幀必將經(jīng)過網(wǎng)內(nèi)每一個節(jié)點的網(wǎng)絡(luò)接口,此時只需對嗅探節(jié)點的網(wǎng)絡(luò)接口(網(wǎng)卡)進(jìn)行適當(dāng)?shù)脑O(shè)置便可為實現(xiàn)嗅探的做好準(zhǔn)備工作。在計算機網(wǎng)絡(luò)系統(tǒng)中,網(wǎng)卡是用來接收網(wǎng)絡(luò)上其他節(jié)點發(fā)來的數(shù)據(jù)幀,其內(nèi)嵌的單片處理程序會檢測數(shù)據(jù)幀來源的MAC地址,并根據(jù)網(wǎng)卡所設(shè)置的接收方式來是否接收處理數(shù)據(jù),如果認(rèn)為應(yīng)該處理,則網(wǎng)卡就會產(chǎn)生中斷信號通知中央處理器,接收該數(shù)據(jù)幀并
4、傳輸給操作系統(tǒng)處理。否則就簡單丟棄,所對應(yīng)節(jié)點的網(wǎng)卡就截斷,計算機的中央處理器并不參與。-..網(wǎng)卡是網(wǎng)絡(luò)中節(jié)點主機的關(guān)鍵硬件設(shè)備。對數(shù)據(jù)的接收一般有四種設(shè)置模式:廣播模式:接收在網(wǎng)絡(luò)中進(jìn)行廣播數(shù)據(jù)信息。組播模式:接收組播數(shù)據(jù)信息。單播模式:只有匹配的目的網(wǎng)卡才能接收數(shù)據(jù)信息?;祀s模式:網(wǎng)卡能夠可以接收一切通過它的數(shù)據(jù)信息。四、系統(tǒng)功能描述及軟件模塊劃分系統(tǒng)功能設(shè)計本系統(tǒng)的基本功能為實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲,并將其數(shù)據(jù)內(nèi)容解析顯示。網(wǎng)絡(luò)數(shù)據(jù)包捕獲功能主要負(fù)責(zé)從網(wǎng)絡(luò)中捕獲和過濾數(shù)據(jù),這可以通過調(diào)用winPca
5、p提供的豐富的API函數(shù)來實現(xiàn);數(shù)據(jù)解析及顯示部分主要負(fù)責(zé)界面數(shù)據(jù)轉(zhuǎn)化、解析、處理、格式化、協(xié)議分析等,這一部分主要通過MFC來設(shè)計一個單文檔圖形用戶界面GUI,解析結(jié)果將通過MFC的類庫顯示到GUI中系統(tǒng)總系結(jié)構(gòu)網(wǎng)絡(luò)嗅探器的整體設(shè)計由三個模塊組成,自底向上分別是嗅探器設(shè)置模塊,數(shù)據(jù)包捕獲模塊,解析和顯示模塊。嗅探器設(shè)置模塊主要調(diào)用winPcaP提供的API,分為獲取網(wǎng)絡(luò)設(shè)備信息,設(shè)置并編譯過濾器,打開網(wǎng)絡(luò)設(shè)備三個步驟。數(shù)據(jù)包捕獲模塊創(chuàng)建了新的線程,利用了winPcap的非回調(diào)函數(shù)Pcap_next_
6、ex()函數(shù)從winPcap底層驅(qū)動的數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)包,并將數(shù)據(jù)包存儲在系統(tǒng)臨時文件中,以便之后的分析。用Pcap_open_offline()函數(shù)從離線文件中讀取包。讀取到的任意一個符合捕獲條件數(shù)據(jù)包,將其內(nèi)容解析,并顯示本數(shù)據(jù)包。捕獲完成后,進(jìn)人解析和顯示模塊。(嗅探器總體結(jié)構(gòu)如圖1)-..圖1.嗅探器總體結(jié)構(gòu)五、設(shè)計步驟嗅探器的設(shè)置模塊a.獲取已連接的網(wǎng)絡(luò)設(shè)備列表,winPcap提供了pcap_findalldevs_ex()函數(shù),這個函數(shù)返回一個PcaP-if結(jié)構(gòu)的鏈表,每個這樣的結(jié)構(gòu)都
7、包含了一個適配器的詳細(xì)信息。b.打開網(wǎng)絡(luò)設(shè)備,winPcap提供了pcap_open()函數(shù),該函數(shù)第一參數(shù)制定要捕獲數(shù)據(jù)包的哪些部分,第二參數(shù)用來制定適配器是否為混雜模式,第三參數(shù)為讀取數(shù)據(jù)的超時時間,當(dāng)適配器被打開后,就可以進(jìn)行捕獲工作了;c.設(shè)置過濾器,winPcap中用來過濾數(shù)據(jù)包的函數(shù)是pcap_compile()和pc-..ap_setfilter()。pcap_compile()它將一個高層的布爾過濾表達(dá)式編譯成一個能夠被過濾引擎所解釋的低層的字節(jié)碼。pcap_setfilter()將一
8、個過濾器與內(nèi)核捕獲會話相關(guān)聯(lián)。當(dāng)pcap_set_filter()被調(diào)用時,這個過濾器將被應(yīng)用到來自網(wǎng)絡(luò)的所有數(shù)據(jù)包,并且,所有的符合要求的數(shù)據(jù)包(即那些經(jīng)過過濾器以后,布爾表達(dá)式為真的包),將會立即復(fù)制給應(yīng)用程序。數(shù)據(jù)包的捕獲模塊該部分創(chuàng)建了一個用于捕獲數(shù)據(jù)包的線程,在該線程中調(diào)用winPcap提供的pcap_next_ex()函數(shù)從底層驅(qū)動數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)包,該函數(shù)接受已打開的網(wǎng)絡(luò)設(shè)備句柄,返回捕獲數(shù)據(jù)包的實體,并用pcap_dump函數(shù)將每一個