




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)網(wǎng)絡(luò)課程設(shè)計題目網(wǎng)絡(luò)嗅探器的設(shè)計與實現(xiàn)系(部)姓名學(xué)號指導(dǎo)教師2015年7月18日計算機(jī)網(wǎng)絡(luò)課程設(shè)計任務(wù)書一、設(shè)計題目、內(nèi)容及要求題目:網(wǎng)絡(luò)嗅探器的設(shè)計與實現(xiàn)內(nèi)容:本設(shè)計是關(guān)于網(wǎng)絡(luò)嗅探器的設(shè)計與實現(xiàn),功能包括實現(xiàn)網(wǎng)絡(luò)層抓包,對獲得包的源和目的地址、端口、協(xié)議等進(jìn)行分析和實現(xiàn)簡單的包嗅探器功能。要求:1實現(xiàn)網(wǎng)絡(luò)嗅探器的界面2. 實現(xiàn)抓取數(shù)據(jù)包的功能。3. 實現(xiàn)清空列表功能二、要求的設(shè)計成果(課程設(shè)計說明書、設(shè)計實物、圖紙等)1 課程設(shè)計報告2 實現(xiàn)網(wǎng)絡(luò)嗅探器的程序代碼、進(jìn)程安排1、設(shè)計工作4學(xué)時2、實現(xiàn)與調(diào)試20學(xué)時3、課程設(shè)計報告6學(xué)時四、主要參考資料1 王群計算機(jī)網(wǎng)絡(luò)安全技術(shù)2 吳功宜
2、,董大凡王于君等計算機(jī)網(wǎng)絡(luò)高級軟件編程技術(shù)【M】.北京:清華大學(xué)出版社,20082007 (11 ):3 謝小特,王勇軍基于winPcap的捕包程序設(shè)計【J】軟件特刊,71-72 胡曉元,史浩山.winpcap包截獲系統(tǒng)的分析及其應(yīng)用【J】計算機(jī)工程,2005( 1) :96-97(5趙輝,葉子青Vis迪C+系統(tǒng)開發(fā)實例精粹,北京:人民郵電出版社,2005網(wǎng)絡(luò)嗅探器的設(shè)計與實現(xiàn)摘要:網(wǎng)絡(luò)嗅探器是對網(wǎng)絡(luò)中的數(shù)據(jù)幀進(jìn)行捕獲的一種被動監(jiān)聽手段,是一種常用的收集有用數(shù)據(jù)的方法。本設(shè)計是關(guān)于網(wǎng)絡(luò)嗅探器的設(shè)計與實現(xiàn),其功能包括實現(xiàn)網(wǎng)絡(luò)層抓包,對獲得包的源和目的地址、端口、協(xié)議等進(jìn)行分析和實現(xiàn)簡單的包嗅探器
3、功能。關(guān)鍵字:網(wǎng)絡(luò)嗅探器;數(shù)據(jù)包捕獲:套接字引言由于網(wǎng)絡(luò)技術(shù)的發(fā)展,計算機(jī)網(wǎng)絡(luò)的應(yīng)用越來越廣泛,其作用也越來越重要。計算機(jī)網(wǎng)絡(luò)安全問題更加嚴(yán)重, 網(wǎng)絡(luò)破壞所造成的損失越來越大。但是由于計算機(jī)系統(tǒng)中軟硬件的脆弱性和計算機(jī)網(wǎng)絡(luò)的脆弱性以及地理分布的位置、自然環(huán)境、自然破壞以及人為因素的影響,不僅增加了信息存儲、處理的風(fēng)險,也給信息傳送帶來了新的問題。嗅探器是一種常用的收集有用數(shù)據(jù)的方法,可以作為網(wǎng)絡(luò)數(shù)據(jù)包的設(shè)備。嗅探器是通過對網(wǎng)卡的編程來實現(xiàn)網(wǎng)絡(luò)通訊的,對網(wǎng)卡的編程是使用通常的套接字(socket )方式來進(jìn)行。通常的套接字程序只能響應(yīng)與自己硬件地址相匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對于其他形式
4、的數(shù)據(jù)幀比如已到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗證投遞地址并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無法收取到達(dá)的數(shù)據(jù)包。而網(wǎng)絡(luò)嗅探器的目的恰恰在于從網(wǎng)卡接收所有經(jīng)過它的數(shù)據(jù)包,這些數(shù)據(jù)包即可以是發(fā)給它的也可以是發(fā)往別處的。1基本概念1. 1嗅探器每一個在局域網(wǎng)(LAN )上的工作站都有其硬件地址,這些地址唯一地表示了網(wǎng)絡(luò)上的機(jī)器。當(dāng)用戶發(fā)送一個數(shù)據(jù)包時,這些數(shù)據(jù)包就會發(fā)送到LA、上所有可用的機(jī)器。在一般情況下,網(wǎng)絡(luò)上所有的機(jī)器都可以“聽”到通過的流量,但對不屬于自己的數(shù)據(jù)包則不予響應(yīng)。 嗅探器工作在網(wǎng)絡(luò)的底層,在網(wǎng)絡(luò)上監(jiān)聽數(shù)據(jù)包來獲取敏感信息。從原理上來說,在一個實際的
5、系統(tǒng) 中,數(shù)據(jù)的收發(fā)是由網(wǎng)卡來完成的,網(wǎng)卡接收到傳輸來的數(shù)據(jù),其內(nèi)的單片程序接收數(shù)據(jù)幀的目的MAC地址,根據(jù)計算機(jī)上的網(wǎng)卡驅(qū)動程序設(shè)置的接收模式判斷該不該接收,認(rèn)為該接收就接收后產(chǎn)生中斷信號通知CPU,認(rèn)為不該接收就丟掉不管,所以不該接收的數(shù)據(jù)網(wǎng)卡就截斷了,計算機(jī)根本就不知道。對于網(wǎng) 卡來說一般有四種接收模式:a)廣播方式:該模式下的網(wǎng)卡能夠接收網(wǎng)絡(luò)中的廣播信息。b)組播方式:設(shè)置在該模式下的網(wǎng)卡能夠接收組播數(shù)據(jù)。O直接方式:在這種模式下,只有目的網(wǎng)卡才能接收該數(shù)據(jù)。d)混雜模式:在這種模式下的網(wǎng)卡能夠接收一切通過它的數(shù)據(jù),而不管該數(shù)據(jù)是否是傳給它的。嗅探程序是一種利用以太網(wǎng)的特性把網(wǎng)絡(luò)適配卡
6、(NIC,般為以太網(wǎng)卡)置為混雜模式狀態(tài)的工具, 一旦網(wǎng)卡設(shè)置為這種模式,它就能接收傳輸在網(wǎng)絡(luò)上的每一個信息包,而不管該數(shù)據(jù)是否傳給它的。1. 2相關(guān)協(xié)議1. 2. 1 IP 協(xié)議網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層屮最重要的協(xié)議。IP層接收由更低層(網(wǎng)絡(luò)接口層,例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層-TCP或UDP層;相反,IP層也把從TCF或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因為IP并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包屮含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。1.2.2TCP
7、協(xié)議如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向上傳送到TCPTCP數(shù)據(jù)包屮包括序?qū)印CP將包排序并進(jìn)行錯誤檢查,同時實現(xiàn)虛電路間的連接。號和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動程序和物理介質(zhì),最后到接收方。1. 2. 3UDP 協(xié)議CDP與TCP位于同一層,但對于數(shù)據(jù)包的順序錯誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢應(yīng)答的服務(wù),例如NFS。相對于FTP
8、或Tel net,這此服務(wù)需要交換的信息量較小。使用UDP的服務(wù)包括、(網(wǎng)落時間協(xié)議)和DNS ( DS也使用TCP ) o欺騙UDP包比欺騙TCP包更容易,因為 UDP沒有 建立初始化連接(也可以稱為握手)(因為在兩個系統(tǒng)間沒有虛電路),也就是說,與UDP相關(guān)的服務(wù)面臨著更大的危險。1. 3數(shù)據(jù)包“包” (Packet)是TCP/IP協(xié)議通信傳輸屮的數(shù)據(jù)單位,一般也稱“數(shù)據(jù)包” 。TCP/IP協(xié)議是工作在OSI模型第三層(網(wǎng)絡(luò)層)、第四層(傳輸層)上的,而幀是工作在第二層(數(shù)據(jù)鏈路層)。上一層的內(nèi)容由下一層的內(nèi)容來傳輸,所以在局域網(wǎng)中,“包”是包含在“幀”里的。 數(shù)據(jù)包的結(jié)構(gòu)非常復(fù)雜,主要由
9、“目的IP地址”、“源IP地址”、“凈載數(shù)據(jù)”等部分構(gòu)成。正是因為數(shù)據(jù)包具有這樣的結(jié)構(gòu),安裝了TCP/IP協(xié)議的計算機(jī)之間才能相互通信。我們在使用基于TCP/IP協(xié)議的網(wǎng)絡(luò)時,網(wǎng)絡(luò)屮其實傳遞的就是數(shù)據(jù)包。比如說當(dāng)你上網(wǎng)時打開某個網(wǎng)頁,這個簡單的動作,就是你先發(fā)送數(shù)據(jù)包給那個網(wǎng)站,它接收到 了之后,根據(jù)你發(fā)送的數(shù)據(jù)包的IP地址,返回給你網(wǎng)頁的數(shù)據(jù)包,也就是說,網(wǎng)頁的瀏覽,實際上就是數(shù)據(jù)包的交換。2網(wǎng)絡(luò)嗅探器的作用嗅探器是網(wǎng)絡(luò)的抓包工具,可以對網(wǎng)絡(luò)屮大量數(shù)據(jù)抓取,從而方便使用者對網(wǎng)絡(luò)中用戶的一些信息進(jìn)行分析,所以,通常被黑客運用于網(wǎng)絡(luò)攻擊。我們?nèi)绻材苷莆站W(wǎng)絡(luò)嗅探器的原理和 設(shè)計,可以將它運用與網(wǎng)
10、絡(luò)故障檢測、網(wǎng)絡(luò)狀況的監(jiān)視,還可以加強(qiáng)企 業(yè)信息安全防護(hù)。3網(wǎng)絡(luò)嗅探器原理嗅探器作為一種網(wǎng)絡(luò)通訊程序,也是通過對網(wǎng)卡的編程來實現(xiàn)網(wǎng)絡(luò)通訊的,對網(wǎng)卡的編程也是使用通常的套接字(socket)方式來進(jìn)行。但是,通常的套接字程序只能響應(yīng)與自己硬件地址相匹配的或是以廣播形式發(fā)岀的數(shù)據(jù)幀,對于其他形式的數(shù)據(jù)幀比如已到達(dá)網(wǎng)絡(luò)接口但卻不是發(fā)給此地址的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗證投遞地址并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無法收取到達(dá)的數(shù)據(jù)包。而網(wǎng)絡(luò)嗅探器的目的恰恰在于從網(wǎng)卡接收所有經(jīng)過它的數(shù)據(jù)包,這些數(shù)據(jù)包即可以是發(fā)給它的也可以是發(fā)往別處的。顯然,要達(dá)到此目的就不能再讓網(wǎng)卡按通常的正常模式工作,而必須將
11、其設(shè)置為混雜模式。具體到編程實現(xiàn)上,這種對網(wǎng)卡混雜模式的設(shè)置是通過原始套接字(raw socket)來實現(xiàn)的,這也有別于通常經(jīng)常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報套接字。在創(chuàng)建了原始套接 字后,需要通過 setsockoptO 函數(shù)來設(shè)置IP頭操作選項,然后再通過bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過ioctlsocketO來進(jìn)行設(shè)置, 而且還可以指定是否親自處理IP頭。至此,實際就可以開始對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行嗅探了,對數(shù)據(jù)包的獲取仍象流式套接字或數(shù)據(jù)報套接字那樣通過recv()函數(shù)來完成。但是與其他兩種套接字不同的是,原始套接字此時捕獲到的數(shù)據(jù)包并不僅僅
12、是單純的 數(shù)據(jù)信息,而是包含有IP頭、TCP頭等信息頭的最原始的數(shù)據(jù)信息,這些信息保留了它在網(wǎng)絡(luò)傳輸時的原貌。通過對這些在低層傳輸?shù)脑夹畔⒌姆治隹梢缘玫接嘘P(guān)網(wǎng)絡(luò)的一些信息。由于這些數(shù)據(jù)經(jīng)過了網(wǎng)絡(luò)層和傳輸層的打包,因此需要根據(jù)其附加的幀頭對數(shù)據(jù)包進(jìn)行分析。下面給出數(shù)據(jù)包的總體結(jié)構(gòu):3. 1 UDP數(shù)據(jù)段頭數(shù)據(jù)在從應(yīng)用層到達(dá)傳輸層時,將添加TCP數(shù)據(jù)段頭,或是UDP數(shù)據(jù)段頭。其屮UDP數(shù)據(jù)段頭比車父簡單,由source port (源端口號)、destination port(目的端口號人udp length(udp長度人udp checksum(udp校驗和丿組成。UDP報頭結(jié)構(gòu)體 為:typ
13、edef struct udphdr un sig ned short sport;/*source port(源端口號)*/unsigsigsignednednedshortshortshortdport;len;cksum;*destination port (/*udp len gth (udp/*udp checksum (udp目的端口號)*/長度)*/校驗和)/UDP_HDR;3. 2 TCP數(shù)據(jù)段頭TCP數(shù)據(jù)頭則比較復(fù)雜,以20個固定字節(jié)開始,在固定頭后面還可以有一些長度不固定的可選項 ,由 source port (源端口號) 、destination port (目的端口號)
14、、順序TCP報號、確認(rèn)號、TCP頭長、校驗和緊急指針、可選項(0或更多的32位字)、數(shù)據(jù)(可選項)。組成。頭結(jié)構(gòu)體為:typedef struct tcpheader un sig ned short int sport;/source port (源端口號)*/un sig ned short int dport;/*destination port (目的端口號川/unsig ned int th_seq;/*sequenee number (包的序列號)*/un sig ned int th_ack;/acknowledgement number (確認(rèn)應(yīng)答號)*/un sig ned
15、char th_off:4;/*unused (未使用)*/un sig ned char th_x:4;/data offset (數(shù)據(jù)偏移量)*/unsig ned char Flags;/*標(biāo)志全*/un sig ned shortint th_w in;/*windows(窗口*/un sig ned shortint th_sum;checksum (校驗和un sig ned shortint th_urp;/*urgent pointer (緊急指針)*/TCP_HDR;3. 3 IP數(shù)據(jù)段頭在網(wǎng)絡(luò)層,還要給TCP數(shù)據(jù)包添加一個IP數(shù)據(jù)段頭以組成IP數(shù)據(jù)報。IP數(shù)據(jù)頭以大端點機(jī)次
16、序傳 送,從左到右,版本字段的高位字節(jié)先傳輸(SFARC是大端點機(jī)Pentium是小端點機(jī))。如果是小端點機(jī),就 要在發(fā)送和接收時先行轉(zhuǎn)換然后才能進(jìn)行傳輸。IP數(shù)據(jù)段頭格由版本IHL服務(wù)類型總長、標(biāo)志、分段偏移、頭校驗和、源地址、目的地、 選項(0或更多)組成。ip數(shù)據(jù)報頭的結(jié)構(gòu)體為:struct ipheader un sig ned char ip_hl:4;un sig ned char ip_v:4;/header len gth (報頭長度)*/*versio n (版本)*/un sig ned char ip_tos;,*type os service服務(wù)類型*/un sig n
17、ed short int iple n;un sig ned short int ip_id;/identification (標(biāo)識符)*/un sig ned short int ip_off;/*fragment offset field (段移位域)*/un sig ned char ip_ttl;/*time to live ( 生存時間)*/un sig ned char ip_p;/*protocol (協(xié)議)*/un sig ned short int ip_sum;/*checksum (校驗和)*/un sig ned int ip_src;.source address (
18、源地,址)*/un sig ned int ip_dst;/*destination address (目的地址)*/4網(wǎng)絡(luò)嗅探器的設(shè)計在以太網(wǎng)屮,信息是以明文的形式在網(wǎng)絡(luò)上傳輸,當(dāng)將網(wǎng)絡(luò)適配器設(shè)置為混雜模式時,由于采用以太網(wǎng)廣播信道爭用的方式,使得監(jiān)聽系統(tǒng)與正常通信的網(wǎng)絡(luò)能夠并聯(lián)連接,并可捕獲任何一個在同一沖突域上傳輸?shù)臄?shù)據(jù)包。IEEE802. 3標(biāo)準(zhǔn)的以太網(wǎng)采用的是持續(xù)CSMA的方式,正是由于以太網(wǎng)采用這種廣播信道爭用的方式,使得各個站點可以獲得其他站點發(fā)送的數(shù)據(jù)。運用這一原理使信息捕獲系統(tǒng)能夠攔截我所要的信息,這是捕獲數(shù)據(jù)包的物理基礎(chǔ)。首先,抓包系統(tǒng)必須繞過操作系統(tǒng)的協(xié)議棧來訪問在網(wǎng)絡(luò)上
19、傳輸?shù)脑紨?shù)據(jù)包 ,這就要求一部分運行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動交互。這個部分是系統(tǒng)依賴的,在W inpcap的解決方案里它被認(rèn)為是一個設(shè)備驅(qū)動稱作 NPF ( NetgroupPacket F ilter)o W inpcap提供了 兩個不冋的庫 :Packet, dll和W pcap. dll o Wpcap. dll提供了更加友好、功能更加強(qiáng)大的函數(shù)調(diào)用。W inPcap的優(yōu)勢在于提供了一套標(biāo)準(zhǔn)的抓包接口,與libpcap兼容,可使得原來許多UN IX平臺下的網(wǎng)絡(luò)分析工具快速移植過來,便于開發(fā)各種網(wǎng)絡(luò)分析工具,充分考慮了各種性能和效率的優(yōu)化,包括對于NPF內(nèi)核層次上的過濾器支
20、持,支持內(nèi)核態(tài)的統(tǒng)計模式,提供了發(fā)送數(shù)據(jù)包的能力。前者提供了一個底層AP I,伴隨著一個獨立于M icrosoft操作系統(tǒng)的編程接口,這些API可以直接用來訪問驅(qū)動的函數(shù):后者導(dǎo)出了組更強(qiáng)大的與 libpcap-致的制層抓包函數(shù)庫 (capture prmi itives)o這些函數(shù)使得數(shù)據(jù)包的捕獲以一種與網(wǎng)絡(luò)硬件和操作系統(tǒng)無關(guān)的方式進(jìn)行。網(wǎng)絡(luò)嗅探器工作在網(wǎng)絡(luò)環(huán)境的底層,攔截所有正在網(wǎng)絡(luò)上傳送的數(shù)據(jù),并且通過相應(yīng)的解析處理,可以實時分析這些數(shù)據(jù)的內(nèi)容,進(jìn)而分析所處的網(wǎng)絡(luò)狀態(tài)和整體拓?fù)洳季?。含了相?yīng)設(shè)備的名稱和描述。取得 網(wǎng)卡列表后就在屏幕上顯示出來,如果網(wǎng)卡沒有被發(fā)現(xiàn)就顯示有關(guān)錯誤pcap _
21、 findalldevs 0同其他的libpcap函數(shù)樣有-個errbuf參數(shù),當(dāng)有異常情況發(fā)生時,這個參數(shù)會被pcap填充為某個特定錯誤字串。程序功能示意如下:獲得網(wǎng)卡的信息后就可以按數(shù)據(jù)捕獲的要求打開網(wǎng)卡。但是大部分的包捕獲程序都將混雜模式設(shè)為默認(rèn)。數(shù)據(jù)包的過濾通過設(shè)置數(shù)據(jù)流過濾規(guī)則來實現(xiàn),數(shù)據(jù)包過濾處理時嗅探技術(shù)中的難點和重點,Win Pcap提供了最強(qiáng)大的數(shù)據(jù)流過濾引擎。它才用了一種高效的方法來捕獲網(wǎng)絡(luò)數(shù)據(jù)流的某些數(shù)據(jù)且常常和系統(tǒng)的捕獲機(jī)制相集成。過濾數(shù)據(jù)的函數(shù)定 UDP的起始位置,就可以解析出原端口和目的端口。數(shù)據(jù)包捕獲流程圖:圖4.1數(shù)據(jù)包捕獲流程圖4. 1嗅探器設(shè)計需要結(jié)構(gòu)體嗅探
22、器需要的結(jié)構(gòu)體是由 IP數(shù)據(jù)報結(jié)構(gòu)體、TCP報頭結(jié)構(gòu)體、UDP報頭結(jié)構(gòu)體 組成。每個結(jié)構(gòu)體如何定義已在網(wǎng)絡(luò)嗅探器的原理中具體講過。4.2過濾規(guī)則的主要代碼if (sock = socket(AF.IXET, SOCK.RAW, IPPROTO.IP)=SOCKET_ERROR)exit(l);gethost name( name, MAX_H0STNA5E_LAN);pHoste nt = gethostb yn ame( name);sa. sin_family = AF_INET:sa. sinport = hton s(6000);memcpy (&sb. s in _addrS_ un
23、 S_addr,pHoste nt-h_addr_list0,pHoste nt-h_le ngth);bin d(sock, (SOCKADDR *)& sa, sizeof (sa);FbindO設(shè)定自己主機(jī)的IP地址和端口號燈if (WSAGetLastError()=10013)exit(l);WSAIoctl(sock, SI0_RCVALL, &optval,sizeof(optval), NULL, 0, &dwBytesRet,NULL, NULL);pipheader = (struct ipheader *)RecvBuf;pTcpheader = (struct tcph
24、eader *)(RecvBuf+ sizeof(struct ipheader );pUdpheader = (struct udphdr *) (RecvBuf+ sizeof(struct ipheader );while (1) memset(RecvBuf, 0, sizeof(RecvBuf);recv(sock, RecvBuf, sizeof(RecvBuf), 0);saSources in _addrs_addr = plpheader-ip_src: strncpy (szSourcelP , in et_ ntoa(saSourcesin_add:r), MAX_ADD
25、R_LEN);saDests in _addrs_addr = plpheader-ip_dst;strncpy(szDestIP , in et_ ntoa(saDestsin_add:r), MAX_ADDR_LEN);len tcp=(n tohs(plpheader-ip_le n)-(sizeof(structipheader)+sizeof(structtcpheader);lenudp=(n tohs(plpheader-ip_le n)-(sizeof(structipheader)+sizeof(structudphdr);4. 3循環(huán)抓包4. 3. 1 TCP 包if(pl
26、pheader-ip_p)=IPPROTO_TCP&len tcp!=O)printf (wt+;* pCo undatatcp=(unsig ned char *) RecvBuf+sizeof (struct ipheader)+sizeof(structprintf Cn冃的 IP 地,止:%sn/ szDestlP);cpheader-dport);prin tf (n 冃 的乂而 口 :%in, ntohs(pT prin tf Cdatatcp address-%x n datatcp);prin tf (,?size of ipheader-%in?,, sizeof (stru
27、ct ipheader);prin tf (,?size of tcpheader-%in,zf sizeof (struct tcpheader);prin tf Csize of the hole packet-%in/ ntohs(plpheader-ip_le n);prin tfCnchar Packet%! %i=z,/z, pCou nt, le ntcp-1); for (i=0; ile ntcp; i+) prin tf (x% 2x, *(datatcp+i);if (i%10=0)prin tf(n);prin tfCV;nnn3;for (i=0;ile ntcp;i
28、+)if ( * (datatcp-i) =20) prin tf * (datatcp+i);elseprin tfCZ);* n);prin tf(nn *運行后的結(jié)果:圖431 TCP包運行結(jié)果4. 3. 2 UDP 包if(plpheader-ip_p)=IPPR0T0_UDP&len tcp!=0)pCo un t+;dataudp=(un sig nedchar*)RecvBuf+sizeof(structipheader)+sizeof(struct udphdr);printf (,zn H 的 IP 土也址:%snzz, szDestlP);prin tf (n 日 旳而 1
29、1 :%dnz,, ntohs (pTcpheader-dport);prin tf(UDP 數(shù)據(jù)地址:%xn,z, dataudp);prin tf(,zIP 頭部長發(fā): %in sizeof(struct ipheader): prin tf(UDP 頭部長度:%in/* sizeof (struct udphdr);printf (包 白勺人yj、:ntohs (plpheader-ip_len);prin tf (Xnchar Packet%!pCou nt, le nu dp-1);for (i=0;ile nu dp;i+)prin tf (,zx%. 2x,z, *(dataud
30、p+i);if (i%10=0)prin tfCVW);for (i=0;ile nu dp;i+)if( *(dataudp+i)=20)prin tf*(dataudp+i);elseprin tf (”);* n);材材 * * * * * * * *運行后的結(jié)果:C:WtN f找的交上-兵乜-吹載孌15KT 口珂感語程設(shè)計De bugZOl 305013 S. eie*,x 吩 7 52 Sx E 7 轉(zhuǎn) m 5 堪 B H 8 3 石石 Sx 彳 36 9 x F ” rM523A 呻 3 y 斤丹;?DDEHFCFIEDEIDlFPFEFJErFGFlEDFhftA.R HR GF
31、P FHEHFDECFCE PFH UfcFFFFFA GA D. SnB . 0 . *OU 一 * * + . FUVfHLSLQTfWa3fBpXie5bjcRl KwHRxHastflH,rpXxc a Xx00Xx0BXx2 (Tx44x44Xl(45 Xx48 x46Xx43 呀 1 5x49Kx44x4E ,k49 S4c46 x43 x4fijioos!dpnus dotusi* ounood-! ;uitdo ILi EpJdpnEimp* jeqo psu6isunBA: do ;ui psu6isungBsei 彳田/vp ado/vaU0I1BUI1S9PJdpn*./
32、*(菩ooj nos*/;u=6jm/*壽竿洱*/eiepv/* (毎晝說幽oouonbos*/*(菩sojnosv/IpsM vivaVSM冷 oos JL 3100SJOuiblv pioA:daHdan /* (吐觀觀 dpn) iuns 09i 0!iuns:0 poqs psu6isun口 BW1:U3Ipodp:podsPoqspoqsgnos / jspesqdo; pnj;s ppsdX;091=) ss;Xq OS : i 16u9!; spdi :ui!ojs di ;ui/*(s*qjspesii dj e;o; */psu6isun/* ( Witpsu6isun(吐觀
33、觀))sssjppe)sssjppewnspoipj!Luns di :ui poqs psu6isun/* (禺諂ooo;ojd:ddi jeqo psu6isun(固冴 dpn) i :poqs psu6isun)Pod uo!: eu!:psu6isun/* (毎口飄f )psu6isun jpqdpn pnj;s ppsdX;!djn q; ;ui poqs psu6isun6u9ssp.Wd:daH-dO JL )J &H0d/* (吐觀觀)mns|09i 0v/! iuns q; : ui poqs psu6isun* ( 團(tuán))s/vopu!g/!ui/v q; ;ui poqs
34、psu6isunIS6BU jeqo psu6isun/* (書疑削舉滋)烤#0#cr l|1Eip psu6isun* (宙剎半)pssnum/屮Eip psu6isun)jsqiunu ;U9LU96ps|/vou oev/!Ioe q; ;ui psu6isun/*(每陋自陰毋)!bss q; ;ui psu6isunoqwnuSAI 0) 8U1!W/* (猶鯉宿leiou/so sdXu/酬)U0JSJ9A./jspesnj口 BW1!pods ;ui)Pod uo!: eu!:poqs psu6isunpoqs psu6isunssp.)PodSMOPUIMX (回4甘型韋)! U
35、 di jeqo psu6isun)PQ!打 os#o ;U9iu6e4/! *o di :ui poqs psu6isun/* (謝說馬)uo!: eo! J! : usp!v/!p! di ;ui poqs psu6isun/* (圍冴另UlBusi!u9 di ;ui poqs psu6isun/*應(yīng)求幺齟QOIAJQS!so; di jeqo psu6isun/* (傘! *: A di jeqo psu6isun/*) u buoi! iq di jeqo psu6isun japeaqdi pnj;s91 NEf-daaV-XVrIAl ou!Qp(L dOaNEA-OODMOIV
36、SMHVAOdPIS ou!Qp#992 NV13I/IVN 丄 SOHXVI/I oupp#*q!lZ廠乙SM陰靈沃電IdV SB(44q! IZiZS/v?* q!DiuoLUiuoo eiu6ejd#vijqipisspnpuj#spnpuispnpuitt spnpui# 仃 陰X君呀翌igloosvi I Zposu!/v spnpuitt9002 卑蟲甲因閒國- 軍酣【IAI】拯黯國逅樓丑呀翌-0IEns!/y皐対粼釋切26-96 : (Q 9002 畐工 M 鳶 44,【1宙dmdupw 口眾曲衛(wèi)踴胖char FARname MAX.HOSTNAME.LAN;char szSou
37、rcelPMAX.ADDR.LENJ,szDestIPMAX.ADDR.LEN, RecvBuf65535 =0;struct udphdr *pUdpheader;struct ipheader *plpheader;struct tcpheader *pTcpheader;WSAStartup(MAKEWORD(2, 1), &wsd);if (sock = socket(AF.INET, SOCK_RAW,IPPROTO_IP) =SOCKET_ERROR) exit (1);gethostname(name, MAX_HOSTAME_LAN);pHostent = gethostb-n
38、ame (name);sasin_family = AF_IXET;sa. sin_port = htons(6000);memcpy (&sa sinaddr S_un S_addr, pHostenth_addr_list0., pHostent-h_length);bind (sock,(SOCKADDR*)&sa,sizeof (sa);/*bind()設(shè)定自己主機(jī)的IP地址和端 口號材if (WSAGetLastError()=10013)exit (1);WSAIoctl(sock, SIO_RCVALL, &optval, sizeof(optval), NULL,0, & dw
39、BytesRet, NULL, NULL);pipheader = (struct ipheader*)RecvBuf;pTcpheader = (struct tcpheader*)(RecvBuf+ sizeof(struct ipheader );pUdpheader = (struct udphdr *)(RecvBuf* sizeof(struct ipheader ):while (1) memset(RecvBuf, 0, sizeof(RecvBuf):recv(sock, RecvBuf, sizeof(RecvBuf),inet_ntoa(saSource sin_addr)f MAX_ADDR_LEN); saDest sin_addr s_addr = plpheader-ip_dst;strncpy(szDestIP,inet_ntoa(saDest. sin_addr), MAX_ADDR_LEN);lentcp = (ntohs (plpheader*ip_len)(sizeof(struct ipheader)+sizeof(struct tcpheader);lenudp = (ntohs (plpheader*ip_len)(sizeof(struct ipheade
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《收玉米》(教案)2024-2025學(xué)年數(shù)學(xué)一年級下冊
- 2025年股權(quán)投資協(xié)議業(yè)績對賭
- 2025年收購公司合同模板
- 三年級上冊數(shù)學(xué)教案-第3單元 長方形和正方形 1 長方形和正方形 第1課時(蘇教版)
- 2025年美發(fā)店合伙經(jīng)營合同
- 2025年公司銷售員合同模板
- (高清版)DB45∕T 560-2021 甘蔗中耕施肥培土機(jī)作業(yè)質(zhì)量
- Unit 2 An Accident Lesson 2 Let's practice(教學(xué)設(shè)計)-2024-2025學(xué)年北師大版(三起)英語六年級上冊
- 統(tǒng)編版四年級上冊語文第五單元習(xí)作 《生活萬花筒》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 期中重難點檢測卷(試題)-小學(xué)數(shù)學(xué)三年級上冊人教版(含解析)
- 2025年廣州市黃埔區(qū)文沖街招聘“村改居”社區(qū)治安聯(lián)防隊員36人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 國家電網(wǎng)新聞宣傳與企業(yè)文化管理專責(zé)考試題及答案
- 2024年江蘇省衛(wèi)生健康委員會所屬事業(yè)單位招聘筆試真題
- 廉潔知識培訓(xùn)課件
- 小學(xué)二年級有余數(shù)的除法口算題(共300題)
- 高職院校高水平現(xiàn)代物流管理專業(yè)群建設(shè)方案(現(xiàn)代物流管理專業(yè)群)
- 2024專升本英語答題卡浙江省
- (完整版)50028-城鎮(zhèn)燃?xì)庠O(shè)計規(guī)范
- 最新工程招投標(biāo)實訓(xùn)課程標(biāo)準(zhǔn)教案
- KET核心詞匯中文加音標(biāo)_完整版
- 五年級下冊英語(閩教版)教學(xué)計劃
評論
0/150
提交評論