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