




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)題 目網(wǎng)絡(luò)嗅探器的設(shè)計(jì)與實(shí)現(xiàn)系(部)姓 名 學(xué) 號(hào) 指導(dǎo)教師 2015年7月18日計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)任務(wù)書(shū)一、設(shè)計(jì)題目、內(nèi)容及要求題目:網(wǎng)絡(luò)嗅探器的設(shè)計(jì)與實(shí)現(xiàn)內(nèi)容:本設(shè)計(jì)是關(guān)于網(wǎng)絡(luò)嗅探器的設(shè)計(jì)與實(shí)現(xiàn),功能包括實(shí)現(xiàn)網(wǎng)絡(luò)層抓包,對(duì) 獲得包的源和目的地址、端口、協(xié)議等進(jìn)行分析和實(shí)現(xiàn)簡(jiǎn)單的包嗅探器功能。要求:1實(shí)現(xiàn)網(wǎng)絡(luò)嗅探器的界面2. 實(shí)現(xiàn)抓取數(shù)據(jù)包的功能。3. 實(shí)現(xiàn)清空列表功能二、要求的設(shè)計(jì)成果(課程設(shè)計(jì)說(shuō)明書(shū)、設(shè)計(jì)實(shí)物、圖紙等)1. 課程設(shè)計(jì)報(bào)告2. 實(shí)現(xiàn)網(wǎng)絡(luò)嗅探器的程序代碼三、進(jìn)程安排1、設(shè)計(jì)工作4學(xué)時(shí)2、實(shí)現(xiàn)與調(diào)試20學(xué)時(shí)3、課程設(shè)計(jì)報(bào)告6學(xué)時(shí)四、主要參考資料1 王群計(jì)算機(jī)網(wǎng)
2、絡(luò)安全技術(shù)2 吳功宜,董大凡王蹌等.計(jì)算機(jī)網(wǎng)絡(luò)髙級(jí)軟件編程技術(shù)【M】.北京:清華 大學(xué)出版社,20083 謝小特,王勇軍.基于winPcap的捕包程序設(shè)計(jì)【J】.軟件特刊,2007(11):71-724 胡曉元,史浩山.winpcap包截獲系統(tǒng)的分析及其應(yīng)用【J】.計(jì)算機(jī)工程, 2005 (1): 96-975 趙輝,葉子青.VisualC+系統(tǒng)開(kāi)發(fā)實(shí)例精粹【M】,北京:人民郵電出版社, 2005網(wǎng)絡(luò)嗅探器的設(shè)計(jì)與實(shí)現(xiàn)摘要:網(wǎng)絡(luò)嗅探器是對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)幀進(jìn)行捕獲的一種被動(dòng)監(jiān)聽(tīng)手段,是一種常用的收集有 用數(shù)據(jù)的方法。本設(shè)計(jì)是關(guān)于網(wǎng)絡(luò)嗅探器的設(shè)計(jì)與實(shí)現(xiàn),其功能包括實(shí)現(xiàn)網(wǎng)絡(luò)層抓包,對(duì)獲 得包的源和目的
3、地址、端口、協(xié)議等進(jìn)行分析和實(shí)現(xiàn)簡(jiǎn)單的包嗅探器功能。關(guān)鍵字:網(wǎng)絡(luò)嗅探器;數(shù)據(jù)包捕獲;套接字引言由于網(wǎng)絡(luò)技術(shù)的發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用越來(lái)越廣泛,其作用也越來(lái)越重要。計(jì)算 機(jī)網(wǎng)絡(luò)安全問(wèn)題更加嚴(yán)重,網(wǎng)絡(luò)破壞所造成的損失越來(lái)越大。但是由于計(jì)算機(jī)系統(tǒng)中軟 硬件的脆弱性和計(jì)算機(jī)網(wǎng)絡(luò)的脆弱性以及地理分布的位置、自然環(huán)境、自然破壞以及人 為因素的影響,不僅增加了信息存儲(chǔ)、處理的風(fēng)險(xiǎn),也給信息傳送帶來(lái)了新的問(wèn)題。嗅探器是一種常用的收集有用數(shù)據(jù)的方法,可以作為網(wǎng)絡(luò)數(shù)據(jù)包的設(shè)備。嗅探器是 通過(guò)對(duì)網(wǎng)卡的編程來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通訊的,對(duì)網(wǎng)卡的編程是使用通常的套接字(socket)方 式來(lái)進(jìn)行。通常的套接字程序只能響應(yīng)與自己硬件
4、地址相匹配的或是以廣播形式發(fā)出的 數(shù)據(jù)幀,對(duì)于其他形式的數(shù)據(jù)幀比如已到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng) 絡(luò)接口在驗(yàn)證投遞地址并非自身地址之后將不引起響應(yīng),也就是說(shuō)應(yīng)用程序無(wú)法收取到 達(dá)的數(shù)據(jù)包。而網(wǎng)絡(luò)嗅探器的目的恰恰在于從網(wǎng)卡接收所有經(jīng)過(guò)它的數(shù)據(jù)包,這些數(shù)據(jù) 包即可以是發(fā)給它的也可以是發(fā)往別處的。1基本概念1.1嗅探器每一個(gè)在局域網(wǎng)(LAN)上的工作站都有其硬件地址,這些地址唯一地表示了網(wǎng)絡(luò) 上的機(jī)器。當(dāng)用戶發(fā)送一個(gè)數(shù)據(jù)包時(shí),這些數(shù)據(jù)包就會(huì)發(fā)送到LAN上所有可用的機(jī)器。 在一般情況下,網(wǎng)絡(luò)上所有的機(jī)器都可以聽(tīng)”到通過(guò)的流量,但對(duì)不屬于自己的數(shù)據(jù) 包則不予響應(yīng)。嗅探器工作在網(wǎng)絡(luò)的底層,在
5、網(wǎng)絡(luò)上監(jiān)聽(tīng)數(shù)據(jù)包來(lái)獲取敏感信息。從原 理上來(lái)說(shuō),在一個(gè)實(shí)際的系統(tǒng)中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來(lái)完成的,網(wǎng)卡接收到傳輸來(lái)的 數(shù)據(jù),其內(nèi)的單片程序接收數(shù)據(jù)幀的目的MAC地址,根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置 的接收模式判斷該不該接收,認(rèn)為該接收就接收后產(chǎn)生中斷信號(hào)通知CPU,認(rèn)為不該接 收就丟掉不管,所以不該接收的數(shù)據(jù)網(wǎng)卡就截?cái)嗔耍?jì)算機(jī)根本就不知道。對(duì)于網(wǎng)卡來(lái) 說(shuō)一般有四種接收模式:R廣播方式:該模式下的網(wǎng)卡能夠接收網(wǎng)絡(luò)中的廣播信息。b)組播方式:設(shè)置在該模式下的網(wǎng)卡能夠接收組播數(shù)據(jù)。c)直接方式:在這種模式下,只有目的網(wǎng)卡才能接收該數(shù)據(jù)。d)混雜模式:在這種模式下的網(wǎng)卡能夠接收一切通過(guò)它的數(shù)據(jù),而不管
6、該數(shù)據(jù)是否 是傳給它的。嗅探程序是一種利用以太網(wǎng)的特性把網(wǎng)絡(luò)適配卡(NIC, 般為以太網(wǎng)卡)置為混 雜模式狀態(tài)的工具,一旦網(wǎng)卡設(shè)置為這種模式,它就能接收傳輸在網(wǎng)絡(luò)上的每一個(gè)信息 包,而不管該數(shù)據(jù)是否傳給它的。1.2相關(guān)協(xié)議IP協(xié)議網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。IP層接收由更低層 (網(wǎng)絡(luò)接口層,例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來(lái)的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層 -TCP或UDP層;相反,IP層也把從TCP或UDP層接收來(lái)的數(shù)據(jù)包傳送到更低層。IP 數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒(méi)有做任何事情來(lái)確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒(méi)有 被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源
7、地址)和接收它的主機(jī)的地址(目 的地址)。TCP協(xié)議如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向上傳送到TCP 層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號(hào) 和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng) 用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動(dòng)程序和物 理介質(zhì),最后到接收方。UDP協(xié)議UDP與TCP位于同一層,但對(duì)于數(shù)據(jù)包的順序錯(cuò)誤或重發(fā)。因此,UDP不被應(yīng)用于 那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面
8、向查詢-一應(yīng)答的服務(wù),例如 NFS。相對(duì)于FTP或Telnet,這些服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括NTP (網(wǎng)落時(shí)間協(xié)議)和DNS (DNS也使用TCP) o欺騙UDP包比欺騙TCP包更容易,因?yàn)?UDP沒(méi)有建立初始化連接(也可以稱(chēng)為握手)(因?yàn)樵趦蓚€(gè)系統(tǒng)間沒(méi)有虛電路),也就 是說(shuō),與UDP相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。1.3數(shù)據(jù)包“包”(Packet)是TCP/IP協(xié)議通信傳輸中的數(shù)據(jù)單位,一般也稱(chēng)數(shù)據(jù)包”。TCP/IP 協(xié)議是工作在OSI模型第三層(網(wǎng)絡(luò)層)、第四層(傳輸層)上的,而幀是工作在第二層(數(shù) 據(jù)鏈路層)。上一層的內(nèi)容由下一層的內(nèi)容來(lái)傳輸,所以在局域網(wǎng)中,包”是包含
9、在 “幀”里的。數(shù)據(jù)包的結(jié)構(gòu)非常復(fù)雜,主要由目的IP地址”、源IP地址”、“凈 載數(shù)據(jù)”等部分構(gòu)成。正是因?yàn)閿?shù)據(jù)包具有這樣的結(jié)構(gòu),安裝了 TCP/IP協(xié)議的計(jì)算機(jī) 之間才能相互通信。我們?cè)谑褂没赥CP/IP協(xié)議的網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)中其實(shí)傳遞的就是數(shù) 據(jù)包。比如說(shuō)當(dāng)你上網(wǎng)時(shí)打開(kāi)某個(gè)網(wǎng)頁(yè),這個(gè)簡(jiǎn)單的動(dòng)作,就是你先發(fā)送數(shù)據(jù)包給那個(gè) 網(wǎng)站,它接收到了之后,根據(jù)你發(fā)送的數(shù)據(jù)包的IP地址,返回給你網(wǎng)頁(yè)的數(shù)據(jù)包,也 就是說(shuō),網(wǎng)頁(yè)的瀏覽,實(shí)際上就是數(shù)據(jù)包的交換。2網(wǎng)絡(luò)嗅探器的作用嗅探器是網(wǎng)絡(luò)的抓包工具,可以對(duì)網(wǎng)絡(luò)中大量數(shù)據(jù)抓取,從而方便使用者對(duì)網(wǎng)絡(luò)中 用戶的一些信息進(jìn)行分析,所以,通常被黑客運(yùn)用于網(wǎng)絡(luò)攻擊。我們?nèi)?/p>
10、果也能掌握網(wǎng)絡(luò) 嗅探器的原理和設(shè)計(jì),可以將它運(yùn)用與網(wǎng)絡(luò)故障檢測(cè)、網(wǎng)絡(luò)狀況的監(jiān)視,還可以加強(qiáng)企 業(yè)信息安全防護(hù)。3網(wǎng)絡(luò)嗅探器原理嗅探器作為一種網(wǎng)絡(luò)通訊程序,也是通過(guò)對(duì)網(wǎng)卡的編程來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通訊的,對(duì)網(wǎng)卡 的編程也是便用通常的套接字(socket)方式來(lái)進(jìn)行。但是,通常的套接字程序只能響應(yīng) 與自己硬件地址相匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對(duì)于其他形式的數(shù)據(jù)幀比如已 到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗(yàn)證投遞地址并非自身地址之 后將不引起響應(yīng),也就是說(shuō)應(yīng)用程序無(wú)法收取到達(dá)的數(shù)據(jù)包。而網(wǎng)絡(luò)嗅探器的目的恰恰 在于從網(wǎng)卡接收所有經(jīng)過(guò)它的數(shù)據(jù)包,這些數(shù)據(jù)包即可以是發(fā)給它的也可以是發(fā)往別處 的
11、。顯然,要達(dá)到此目的就不能再讓網(wǎng)卡按通常的正常模式工作,而必須將其設(shè)置為混 雜模式。具體到編程實(shí)現(xiàn)上,這種對(duì)網(wǎng)卡混雜模式的設(shè)置是通過(guò)原始套接字(raw socket) 來(lái)實(shí)現(xiàn)的,這也有別于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報(bào)套接字。在創(chuàng)建了原始套 接字后,需要通過(guò)setsockopt ()函數(shù)來(lái)設(shè)置IP頭操作選項(xiàng),然后再通過(guò)bind()函數(shù)將 原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過(guò) ioctlsocketO來(lái)進(jìn)行設(shè)置,而且還可以指定是否親自處理IP頭。至此,實(shí)際就可以開(kāi) 始對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行嗅探了,對(duì)數(shù)據(jù)包的獲取仍象流式套接字或數(shù)據(jù)報(bào)套接字那樣通過(guò) recv()函數(shù)
12、來(lái)完成。但是與其他兩種套接字不同的是,原始套接字此時(shí)捕獲到的數(shù)據(jù)包 并不僅僅是單純的數(shù)據(jù)信息,而是包含有IP頭、TCP頭等信息頭的最原始的數(shù)據(jù)信息, 這些信息保留了它在網(wǎng)絡(luò)傳輸時(shí)的原貌。通過(guò)對(duì)這些在低層傳輸?shù)脑夹畔⒌姆治隹梢?得到有關(guān)網(wǎng)絡(luò)的一些信息。由于這些數(shù)據(jù)經(jīng)過(guò)了網(wǎng)絡(luò)層和傳輸層的打包,因此需要根據(jù) 其附加的幀頭對(duì)數(shù)據(jù)包進(jìn)行分析。下面給出數(shù)據(jù)包的總體結(jié)構(gòu):3. 1 UDP數(shù)據(jù)段頭數(shù)據(jù)在從應(yīng)用層到達(dá)傳輸層時(shí),將添加TCP數(shù)據(jù)段頭,或是UDP數(shù)據(jù)段頭。其中 UDP數(shù)據(jù)段頭比較簡(jiǎn)單,由source port (源端口號(hào)),destination port (目的端口號(hào))、 udp length
13、(udp長(zhǎng)度)、udp checksum (udp校驗(yàn)和)組成。UDP報(bào)頭結(jié)構(gòu)體為:typedef struct udphdr unsigned short sport;/*source port(源端口號(hào))*/unsigned short dport;/*destination port (目的端 口號(hào))*/unsigned short len;unsigned short cksum;UDP HDR;/*udp length(udp 長(zhǎng)度)*/ /udp checksum(udp 校驗(yàn)和)*/3. 2 TCP數(shù)據(jù)段頭TCP數(shù)據(jù)頭則比較復(fù)雜,以20個(gè)固定字節(jié)開(kāi)始,在固定頭后面還可以有一些長(zhǎng)度
14、不固定的可選項(xiàng),由source port (源端口號(hào))、destination port (目的端口號(hào)).順序號(hào)、確認(rèn)號(hào)、TCP頭長(zhǎng)、校驗(yàn)和緊急指針、可選項(xiàng)(0或更多的32位字)、數(shù)據(jù)(可/source port (源端口 號(hào))*/ /destination port (目的端口 號(hào))*/ /sequence number (包的序列號(hào))*/acknow 1 edgement number(確認(rèn)應(yīng)答號(hào))*/ / *unused (未使用)*/data offset(數(shù)據(jù)偏移量)*/*標(biāo)志全*/windows(窗 口)*/checksum (校驗(yàn)和)*/urgent pointer(緊急指針)*
15、/選項(xiàng))。組成。TCP報(bào)頭結(jié)構(gòu)體為: typedef struct tcpheader unsigned short int sport; unsigned short int dport; unsigned int th_seq; unsigned int th ack; unsigned char th x:4; unsigned char th_off:4; unsigned char Flags; unsignedshortintthwin;unsignedshortintthsum:unsignedshortintthurp;TCP HDR; 3.3 IP數(shù)據(jù)段頭在網(wǎng)絡(luò)層,還要給TC
16、P數(shù)據(jù)包添加一個(gè)IP數(shù)據(jù)段頭以組成IP數(shù)據(jù)報(bào)。IP數(shù)據(jù)頭 以大端點(diǎn)機(jī)次序傳送,從左到右,版本字段的高位字節(jié)先傳輸(SPARC是大端點(diǎn) 機(jī)Pentium是小端點(diǎn)機(jī))。如果是小端點(diǎn)機(jī),就要在發(fā)送和接收時(shí)先行轉(zhuǎn)換然后才能進(jìn) 行傳輸。IP數(shù)據(jù)段頭格由版本IHL服務(wù)類(lèi)型總長(zhǎng).標(biāo)志.分段偏移.頭校驗(yàn)和、源地址、目的地、 選項(xiàng)(0或更多)組成。IP數(shù)據(jù)報(bào)頭的結(jié)構(gòu)體為:struct ipheader unsignedcharip_hl:4;/header length (報(bào)頭長(zhǎng)度)*/unsignedcharip_v:4;/version (版本)/unsignedcharip_tos;/type os se
17、rvice 服務(wù)類(lèi)型*/unsignedshortint ip len;/total length (總長(zhǎng)度)*/unsignedshortint ip id;/identification (標(biāo)識(shí)符)/unsignedshortint ip_off;,/*fragment offset field(段移位域)*/unsignedcharipttl;/time to live (生存時(shí)間)*/unsignedcharip_P;/protocol (協(xié)議)/unsignedshortint ip sum;/checksum (校驗(yàn)和)*/unsigned intip_src;/source ad
18、dress (源地址)*/unsignedint ip_dst;/destination address (目的地址)*/:4網(wǎng)絡(luò)嗅探器的設(shè)計(jì)在以太網(wǎng)中,信息是以明文的形式在網(wǎng)絡(luò)上傳輸,當(dāng)將網(wǎng)絡(luò)適配器設(shè)置為混雜模 式時(shí),由于采用以太網(wǎng)廣播信道爭(zhēng)用的方式,使得監(jiān)聽(tīng)系統(tǒng)與正常通信的網(wǎng)絡(luò)能夠并 聯(lián)連接,并可捕獲任何一個(gè)在同一沖突域上傳輸?shù)臄?shù)據(jù)包。IEEE802. 3標(biāo)準(zhǔn)的以太網(wǎng) 采用的是持續(xù)CSMA的方式,正是由于以太網(wǎng)釆用這種廣播信道爭(zhēng)用的方式,使得各 個(gè)站點(diǎn)可以荻得其他站點(diǎn)發(fā)送的數(shù)據(jù)。運(yùn)用這一原理使信息捕獲系統(tǒng)能夠攔截我所要的 信息,這是捕獲數(shù)據(jù)包的物理基礎(chǔ)。首先,抓包系統(tǒng)必須繞過(guò)操作系統(tǒng)的協(xié)議
19、棧來(lái)訪問(wèn) 在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包,這就要求一部分運(yùn)行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò) 接口驅(qū)動(dòng)交互。這個(gè)部分是系統(tǒng)依賴的,在W inpcap的解決方案里它被認(rèn)為是一個(gè)設(shè) 備驅(qū)動(dòng),稱(chēng)作NPF ( NetgroupPacket F i Iter)。W inpcap提供了兩個(gè)不同的庫(kù): Packet, dll和W pcap. dllo Wpcap. dll提供了更加友好、功能更加強(qiáng)大的函數(shù)調(diào)用。 W inPcap的優(yōu)勢(shì)在于提供了一套標(biāo)準(zhǔn)的抓包接口,與1 ibpcap兼容,可使得原來(lái)許多 UN IX平臺(tái)下的網(wǎng)絡(luò)分析工具快速移植過(guò)來(lái),便于開(kāi)發(fā)各種網(wǎng)絡(luò)分析工具,充分考慮了 各種性能和效率的優(yōu)化.包括對(duì)于N
20、PF內(nèi)核層次上的過(guò)濾器支持,支持內(nèi)核態(tài)的統(tǒng)計(jì) 模式,提供了發(fā)送數(shù)據(jù)包的能力。前者提供了一個(gè)底層AP I.伴隨著一個(gè)獨(dú)立于M icrosoft操作系統(tǒng)的編程接口,這些API可以直接用來(lái)訪問(wèn)驅(qū)動(dòng)的函數(shù);后者導(dǎo)出了組更強(qiáng)大的與libpcap 一致的高層抓包函數(shù)庫(kù)(capture prmi itives)。這些 函數(shù)使得數(shù)據(jù)包的捕獲以一種與網(wǎng)絡(luò)硬件和操作系統(tǒng)無(wú)關(guān)的方式進(jìn)行。網(wǎng)絡(luò)嗅探器工作 在網(wǎng)絡(luò)環(huán)境的底層,攔截所有正在網(wǎng)絡(luò)上傳送的數(shù)據(jù),并且通過(guò)相應(yīng)的解析處理.可 以實(shí)時(shí)分析這些數(shù)據(jù)的內(nèi)容,進(jìn)而分析所處的網(wǎng)絡(luò)狀態(tài)和整體拓?fù)洳季帧:讼鄳?yīng)設(shè)備 的名稱(chēng)和描述。取得網(wǎng)卡列表后就在屏慕上顯示出來(lái),如果網(wǎng)卡沒(méi)有被
21、發(fā)現(xiàn)就顯示有關(guān) 錯(cuò)誤,pcap f indal ldevs ()同其他的libpcap函數(shù)一樣有一個(gè)errbuf參數(shù),當(dāng)有 異常情況發(fā)生時(shí),這個(gè)參數(shù)會(huì)被pcap填充為某個(gè)特定錯(cuò)誤字串。程序功能示意如下:獲得網(wǎng)卡的信息后就可以按數(shù)據(jù)捕獲的要求打開(kāi)網(wǎng)卡。但是大部分的包捕荻程序 都將混雜模式設(shè)為默認(rèn)。數(shù)據(jù)包的過(guò)濾通過(guò)設(shè)置數(shù)據(jù)流過(guò)濾規(guī)則來(lái)實(shí)現(xiàn),數(shù)據(jù)包過(guò)濾處 理時(shí)嗅探技術(shù)中的難點(diǎn)和重點(diǎn),WinPcap提供了最強(qiáng)大的數(shù)據(jù)流過(guò)濾引擎。它才用了一 種高效的方法來(lái)捕獲網(wǎng)絡(luò)數(shù)據(jù)流的某些數(shù)據(jù)且常常和系統(tǒng)的捕獲機(jī)制相集成。過(guò)濾數(shù)據(jù) 的函數(shù)定UDP的起始位置,就可以解析出原端口和目的端口。數(shù)據(jù)包捕獲流程圖:圖數(shù)據(jù)包捕獲
22、流程圖4.1嗅探器設(shè)計(jì)需要結(jié)構(gòu)體嗅探器需要的結(jié)構(gòu)體是由IP數(shù)據(jù)報(bào)結(jié)構(gòu)體、TCP報(bào)頭結(jié)構(gòu)依、UDP報(bào)頭結(jié)構(gòu)體組 成。每個(gè)結(jié)構(gòu)體如何定義已在網(wǎng)絡(luò)嗅探器的原理中具體講過(guò)。4.2過(guò)濾規(guī)則的主要代碼if (sock = socket(AF INET. SOCK RAW, IPPROTO_IP)二二SOCKET ERROR)exit (1);gethostname(name, MAX HOSTNAME LAN);pHostent 二 gethostbyname(name);=AFINET;=htons(6000):memcpy(& pHostent-h addr list0, pHostent-h len
23、gth):bind (sock, (SOCKADDR *)&sa, sizeof (sa):/ *bind()設(shè)定自己主機(jī)的IP地址和端口號(hào)*/if (WSAGetLastError() = 10013)exit (1);WSAIoctl (sock, SIO RCVALL, &optval, sizeof(optval)t NULL, 0, &dwBytesRet, NULL. NULL);pipheader = (struct ipheader *)RecvBuf:pTcpheader = (struct tcpheader *)(RecvBuf+ sizeof(struct iphead
24、er ):pUdpheader = (struct udphdr ) (RecvBuf+ sizeof(struct ipheader );while (1) memset(RecvBuf, 0, sizeof(RecvBuf);recv(sock, RecvBuf, sizeof(RecvBuf). 0);=pipheader-ip src;strncpy(szSourcelP, inet ntoa, MAX ADDR LEN):=plpheader-ip dst ;strncpy(szDestIP, inet ntoa, MAX ADDR LEN);1entcp =(ntohs(pIphe
25、ader-ip 1en)-(sizeof(struct ipheader)+s izeof(struct tcpheader);1enudp =(ntohs(plpheaderip 1en)-(sizeof(struct ipheader)+s izeof(struct udphdr);4. 3循環(huán)抓包TCP包i f(pIpheader- i p_p)=IPPROTO TCP&lentcp!=0) printf(*n);pCount+;datatcp=(uns ignedchar*)RecvBuf+sizeof(structipheader)+sizeof(struct tcpheader);
26、 printf(n-TCP-nu);printf (nn 目的 IP 地址:szDestIP);printf (Hn 目的端口: %in,ntohs(pTcpheader-dport);printf(Hdatatcp address-%xn”.datatcp);printf(nsize of ipheader-%insizeof(struct ipheader): printf(nsize of tcpheader-%inn,sizeof(struct tcpheader): printf (size of the hole packet-%in,ntohs(pIphesdeiTip len)
27、: printf C* nchar Packet%! %i=n H,pCount,1entcp-1);for (i二0; Klentcp; i+) printf (Wx%. *(datatcp+i);if (i%10=0)printf(n);printf(nn; nnnH);for (i二0;ilentcp;i+)(if( *(datatcp+i)=20)printf Cc. *(datatcp+i);elseprintf(H);運(yùn)行后的結(jié)果:-rLzurds-二 u+dpmuepTo) turd(02夬 u+dpne右p) ssHQ +dprnnBP) * ) +二+二dpnu上二0匕)Jo
28、g2(MUU J = )2pd亠“ (:u廠)七u=d(ONOS)二 u+dpmuep) * JXZ 淇 x乙 turd二+二 dpnu上ro) Jo 二 Idpnu 上Juno3dJHU 藝集 七ur)上 upd 二(up L pe qdld)sqcnu Ju二決;-、*/)七 u=d 二(Jpqdpn 芯nts)JOQZVJUXR :壑半祗水 dam)士u=d 二(J peoqd 一 甘 n:s)JoezJUXs”趙* 帝水 dr)七 u=d 二dpnelepruxx步“去葷犠毅 dam)upd 2(todpIJepedd)sqo4ucp% ”口習(xí)snnur)七 upd 二 di廿 azs
29、 衣“宰罷 di 盂nnur)七 u=d“(cdaflJ)J4uTd二jpqdpn 40mls)JOQZES+(Jpeqd”4UFU4S) jo ESin0Ao h (*Jeqopeudsun) Hdpnepep匚+二 mood)(OHidguM 雯dafro!OHddI=(.2-LepBMdId) 顯ds * Hxz Hxz oxz 8XZ 8X/5X/SX/ sx/sxz:二 00x=二 EZSK42U仔d o【ol 7 jo0ZIWO:P2XUC3 *uo; o* -rta qZ.TrEZTwrTZ drIkHIEsATE3 工、:A poq AAPCOVH 。,A He4ueo、AK
30、=OMQAPD PGU Z0GTU匸Q2=DJ DAT-v-tldnHolRq ATnq 七 l)【7-dAPMvAV9 p mH 代dr4rxpg:TE主:oe:二工呂 da 0H OJ.O nuz Eou aES EHa ET HfW-0-0-WORKGROUP目的 IF 地址:55UDP包運(yùn)行結(jié)果Mx4?Sx52x58 x43 Sx48 x38 Sx55 x54Sx59 Sx4f M Mx52x?;8x42x5ax0O,1;?rB.SHBZ BROVSE-UDP-目的端口,138UDF 獗據(jù)地llh HfcScIP頭磁度:20UDP頭部瞼,8包的大小 244運(yùn)行后的結(jié)
31、果:D:WIN7 找妙怕臭互備夾DESKTOP、結(jié)溟程設(shè)計(jì) Debug2O13O2CH35.exe-DDFHFCFIFDFIDIFFFFFJFPFCFIFDFKftft. ABACPPFPFNFDECFCFPFHFDFFFPFPACAUM.UA. MIA ILS LOT3GRXCII8UTV0RXCZ 5總結(jié)通過(guò)這次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)嗅探器方面的知識(shí),在設(shè)計(jì)過(guò)程中 雖然遇到了一些問(wèn)題,但經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查終于找出了原因所 在,也暴錄出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。這次課程設(shè)計(jì)不僅培養(yǎng)了我獨(dú) 立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。從理論
32、到實(shí)踐,在這段日子里,不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很 多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論 知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才 能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。此次設(shè)計(jì)也讓我明白了思路即出路,有不懂或不明白的地方要及時(shí)請(qǐng)教或上網(wǎng)查 詢,只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐,就沒(méi)有弄不懂的知識(shí),收獲頗豐。券考文獻(xiàn):1 吳功宜.董大凡王垢等計(jì)算機(jī)網(wǎng)絡(luò)奇級(jí)軟件編程技術(shù)【1】.北京:清華大學(xué)出版社.20082 謝小特.王勇軍.基于winPcap的捕包程序設(shè)計(jì)J.軟件特刊,2007
33、(11) : 71-723 胡曉元.史浩山.winpcap包截獲系統(tǒng)的分析及其應(yīng)用【J】計(jì)算機(jī)工程,2005 (1) : 96-974趙輝葉子.VisualC+4系統(tǒng)開(kāi)發(fā)實(shí)例精粹M 北京:人民郵電出版社,2005 附件:include /*windows socket的頭文件,/destination port (目的端口 號(hào))*/系統(tǒng)定義的權(quán)unsigned int th_seq;/sequenceinclude number (包的序列號(hào))*/include unsigned int th_ack;include /acknowledgement number (確認(rèn)應(yīng)答號(hào))*/inclu
34、de unsigned char th_x:4;ttpragma comment (1 ib. r)/*鏈接API 相關(guān)/unused (未使用)*/連的掙態(tài)庫(kù)權(quán)unsigned char th_off:4;/*datatide fine MAX_H()STNAME_LAN 255offset (數(shù)據(jù)偏移#)/define SIO.RCVALL JVSAIOW(10C_VENDOR1)unsigned char Flags;/*標(biāo)志全*/tide fine MAX_ADDR_LEN 16unsigned short int th_win;struct ipheader /*w indows (
35、窗 口)*/unsigned char ip_hl:4;/headerunsigned short int th_sum;length(報(bào)頭長(zhǎng)度)/checksum (校驗(yàn)和)/unsigned char ip_v:4;/version(版unsigned short int th_urp;/urgent本)*/pointer(緊急指針)*/unsigned char ip_tos;/*type osTCPIDR;service服務(wù)類(lèi)型*/typedef struct udphdr unsigned short int ip_len;/*totalunsigned short sport;/*
36、sourcelength (總長(zhǎng)度)*/port (源端口號(hào))=*/unsigned short int ip_id:unsigned short dport;*ident i f icat ion (標(biāo)識(shí)符)*/destination port (目的端口號(hào))*/unsigned short int ip_off;unsigned short len;/udp/ *f ragmen t off set f ield (段移位域)*/length(udp長(zhǎng)度)*/unsigned char ip.tt1;/ime tounsigned short cksum;/*udpLive (生存時(shí)問(wèn))*
37、/checksum(udp校驗(yàn)和)/unsigned char ip_p;UDPDR;protocol (協(xié)議)*/void main()unsigned short int ip_sum;SOCKET sock;checksum (校驗(yàn)和)*/WS?DATA wsd;unsigned int ip_src;sourceDWORD dwBytesRet;address (源地址)*/unsigned int optval = 1:unsigned int ip_dst;unsigned char dataudp,*datatcp;/dest inat ion address (目的地址)*/i
38、nt i.pCount-0tlentep lenudp;;SOCKADDR IN sa,saSource. saDest;* total ip header length: 20 bytes (=160struct hostent FAR pHostent;bits) /char FAR name MAX JOSTNAME.LAN;typedef struct tepheader char szSourceIPMAX_ADDR_LEN.unsigned short int sport;sourceszDestIPMAX_ADDR.LENRccvBuf65535=port (源端口號(hào))*/0;u
39、nsigned short int dport;struct udphdr pUdpheader;struct ipheader pipheader; struct tcpheader pTcpheader;WSAS tar t up (MAKEWORD (2. D.&wsd); if (sock = socket (AF_INET. SOCK_RAW, IPPROTO.IP)=SOCKET.ERROR)ex i t (1);gethostname(name. MAX_HOSTNAME_LAN); pllostent - gothostbyname(name);=AF_INET;=htons(
40、6000); memcpy (& pHostent-h_addr_list0.pllostent-h_length):bind(sock. (SOCKADDR )&sa, sizeof (sa) ;/*bind()設(shè)定自己主機(jī)的IP地址和端口號(hào)*/if (WSAGctLastError () ) = 10013)ex i t (1);WSAIoctl (sock. SIO.RCVALL. &optval, sizeof(optval). NULL. 0 fcdwBytesRet. NULL. NULL):pipheader 二 (struct ipheader)RecvBuf;pTcphead
41、er 二 (struct tcpheader)(RecvBuf+ sizeof(struct ipheader ); plldpheader = (struct udphdr ) (RecvBuf+ sizeof(struct ipheader ); while (1)memset(RecvBuf 0,sizeof(RecvBuf):recv(sock RecvBuf sizeof(RecvBuf) 0);= plpheader-ip_src;strncpy(szSourcelP i net_ntoaMAX_ADDR_LEN);=plpheader-ip_dst; strncpy(szDcstIP. inettoa,MAX_ADDR_LEN);lentcp-(ntohs (plpheader-ip_len)-(sizcoF(struct ipheader)+sizeof(struct tcpheader); lenudp=(ntohs (plpheader-ip_len)-(siz
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025煤礦區(qū)隊(duì)安全管理培訓(xùn)
- 脾動(dòng)脈栓塞術(shù)后的護(hù)理查房
- 企業(yè)品牌管理培訓(xùn)
- 教育培訓(xùn)學(xué)校年終總結(jié)
- 建筑工地安全生產(chǎn)培訓(xùn)
- 2025年護(hù)理部工作總結(jié)
- 僑情調(diào)查培訓(xùn)
- 工業(yè)互聯(lián)網(wǎng)平臺(tái)數(shù)字簽名技術(shù)規(guī)范與工業(yè)互聯(lián)網(wǎng)平臺(tái)設(shè)備智能調(diào)度優(yōu)化效果評(píng)估報(bào)告
- 腫瘤實(shí)習(xí)護(hù)士出科匯報(bào)大綱
- 合同文員年終工作總結(jié)
- 國(guó)際貿(mào)易實(shí)務(wù)全部資料課件
- 帶狀皰疹醫(yī)學(xué)課件
- 國(guó)開(kāi)作業(yè)《馬克思主義基本原理概論》學(xué)習(xí)行為表現(xiàn)參考(含答案)121
- 全國(guó)卷高考標(biāo)準(zhǔn)語(yǔ)文答題卡作文紙3欄800字版
- IATF16949體系培訓(xùn)資料課件
- 事業(yè)單位招聘考試《工程建設(shè)管理專(zhuān)業(yè)知識(shí)》真題匯總及答案【含解析】
- 企業(yè)安全生產(chǎn)自查臺(tái)賬(建筑施工)
- 初一幾何綜合練習(xí)題
- 綜合實(shí)踐活動(dòng)評(píng)價(jià)表完整
- 簡(jiǎn)歷撰寫(xiě)與面試技巧
- 新建區(qū)2018年中小學(xué)(幼)教師、特崗教師
評(píng)論
0/150
提交評(píng)論