網(wǎng)絡作業(yè)網(wǎng)絡嗅探器_第1頁
網(wǎng)絡作業(yè)網(wǎng)絡嗅探器_第2頁
網(wǎng)絡作業(yè)網(wǎng)絡嗅探器_第3頁
網(wǎng)絡作業(yè)網(wǎng)絡嗅探器_第4頁
網(wǎng)絡作業(yè)網(wǎng)絡嗅探器_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、網(wǎng)絡作業(yè)網(wǎng)絡嗅探器(實驗報告)班級:F0222101 姓名:吳志杰 學號:5012219023² 系統(tǒng)說明1 需求說明實現(xiàn)Sniffer的基本功能。Sniffer 是一種用于監(jiān)測網(wǎng)絡性能、使用情況的工具。能夠偵聽所有進出本主機的數(shù)據(jù)包,完整顯示數(shù)據(jù)包網(wǎng)絡層和傳輸層(ICMP、IP、TCP和UDP)的頭信息。比如,對IP頭而言,需要顯示 版本、頭長度、服務類型、數(shù)據(jù)包長度、標識、DF/MF標志、段內(nèi)偏移、生存期、協(xié)議類型、源目的IP地址、選項內(nèi)容。要求顯示數(shù)據(jù)的實際含義;偵聽來源于指定IP地址的數(shù)據(jù),顯示接收到的TCP數(shù)據(jù)包的全部實際內(nèi)容。需要考慮一個TCP包劃分為多個IP包傳輸?shù)那闆r

2、;功能驗證手段:在運行Sniffer的同時,執(zhí)行標準的Ping、Telnet和瀏覽網(wǎng)頁等操作,檢查Sniffier能否返回預期的結果。2 使用方法(詳見用戶手冊)運行Sniffer.exe,按“Start”按鈕開始接受顯示,“Clear”為清除,“Close”為關閉。在按下“Stop”處于靜止狀態(tài)時可選擇接受顯示哪類數(shù)據(jù)包信息,如果在靜止狀態(tài)在“IP address”中輸入IP地址,則可顯示來源于該指定IP地址的數(shù)據(jù)包信息。3 運行環(huán)境本軟件可以在Windows系統(tǒng)之下運行。由于軟件需要某些抓包程序的配合,在運行該軟件之前,需安裝好WinPcap_3_1_beta.exe以獲取其動態(tài)鏈接庫的支

3、持。² 概要設計1 編程環(huán)境本軟件是在VC環(huán)境下編寫,使用WinPcap中定義的頭文件和lib文件為支持,運用WinPcap提供的數(shù)據(jù)包捕獲程序執(zhí)行核心操作。2 模塊分析Ø 本軟件使用的主要模塊及其功能如下:1 線程控制模塊2 抓包模塊3 數(shù)據(jù)包分析模塊開啟線程Ø 模塊間的調(diào)用關系如下: 關閉線程抓包解包² 詳細設計Ø 主要數(shù)據(jù)結構Ø IP協(xié)議typedef struct ip_header u_char ver_ihl; / Version (4 bits) + Internet header length (4 bits) u_c

4、har toservice; / Type of service u_short tlength; / Total length u_short identification; / Identification u_short flags_offset; / Flags (3 bits) + Fragment offset (13 bits) u_char longvity; / Time to live u_char protocol; / Protocol u_short checksum; / Header checksum IP_Address sAddress; / Source a

5、ddress IP_Address dAddress; / Destination address u_int opt_padding; / Option + Paddingip_header;Ø UDP協(xié)議typedef struct udp_header u_short sPort; / Source port u_short dPort; / Destination port u_short length; / Datagram length u_short checksum; / Checksumudp_header;Ø TCP協(xié)議typedef struct tc

6、p_headeru_short sPort; /源端口/u_short dPort; /目的端口/u_int sequence; /序號/u_int affirmNo; /確認號/u_char ipHeadLen; /段頭長度/u_char code; /碼位/u_short winsize; /窗口長度/u_short checksum; /校驗和/u_short epointer; /緊急指針/tcp_header;Ø MAC地址typedef struct MAC_Addressu_int sMac;u_char sMacp;u_int dMac;u_char dMacp;Ma

7、c_Address;Ø IP地址typedef struct IP_Addressu_char byte4;IP_Address;Ø ICMP協(xié)議typedef struct icmp_headeru_char type;/報文類型u_char code;/代碼u_short checksum; /校驗和u_int temp4;/其余4個字段icmp_header;Ø 主要代碼描述Ø 查找主機上所有的適配器 if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) =

8、-1) 查找適配器時出錯; for(d=alldevs;d;d=d->next) /顯示所有適配器的描述信息 i+; if(i=0) 主機上無適配器; Ø 打開指定的適配器 inum=所選適配器的索引號; for(d=alldevs, i=0; i< inum-1 ;d=d->next, i+); /循環(huán)直到找到選定的適器 adhandle= pcap_open (d->name, 65536, PCAP_OPENFLAG_PROMISCUOUS, 1000,NULL,errbuf); /打開指定的適配器 Ø 開啟線程并循環(huán)抓包 AfxBeginTh

9、read(ThreadProc,NULL); /建立一個抓包線程 UINT ThreadProc(LPVOID p) /循環(huán)地抓包while(timer=1)pcap_dispatch(adhandle, 0, packet_handler, NULL);/抓包 注:ThreadProc:線程函數(shù),在函數(shù)中用到了pcap_findalldevs_ex,pcap_freealldevs,pcap_open,pcap_datalink,pcap_compile,pcap_setfilter和pcap_dispatch幾個庫函數(shù)。其中最重要的函數(shù)是抓包函數(shù)pcap_dispatch。變量timer的

10、作用是通過OnStartSniffer()函數(shù)對timer的值的改變來控制線程是運行還是終止。 Ø 解包void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)用來處理抓包后的一些事情。對IP包的分析(包括tcp,udp,icmp)和顯示的內(nèi)容的處理都在這個函數(shù)內(nèi)。詳細的代碼見程序。其中:if(ih->protocol=6)/6是TCPcontent9="TCP"else if(ih->protocol=17)/17是UDPc

11、ontent9="UDP"else if(ih->protocol=1)/1是ICMPcontent9="ICMP"elsecontent9.Format("%d",ih->protocol);是對協(xié)議類型的處理² 實驗小結Ø 遇到的問題1本項目的一個重點是winpcap中函數(shù)的使用。在網(wǎng)上查找了一些文檔后,學會了如何使用其中的庫函數(shù).如:知道了pcap_dispatch是一次抓一個包,而pcap_loop是循環(huán)抓包。2ip包的分析曾使我迷茫,主要原因是沒弄清楚IP包的一些字段的實際意義,如校驗和應以1

12、6進制的形式予以顯示,從而造成對一些字段的處理不對了。問題在仔細看了一遍書后得到了解決。3在編碼的過程中多次出現(xiàn)編譯通過,而運行時出現(xiàn)內(nèi)存錯誤,出現(xiàn)這種情況后,我就一條一條語句的執(zhí)行并設置breakpoint,找到錯誤的語句,如:在程序中的一些全局函數(shù):threadproc, packet_handler等要用到dlg中的變量,這時需要定義一個全局的dlg的對象,本來我是定義一個對象的,可是總是出錯,后來改成指針,并在dlg的constructor中將this指針賦給它,結果就對了。 Ø 體會在選擇做sniffer前我一直認為這個程序的關鍵是如何用winpcap的庫函數(shù),可是在深入的研究之后,我發(fā)現(xiàn)winpcap的研究其實并不是最重要的,因為在網(wǎng)上和在一些書籍中都能找到用法,其本身只是一個工具。最重要的恰恰是ip包的分析和顯示。通過上學期對網(wǎng)絡的學習,我了解了ip包的結構,可那只是膚淺的感性的認識。通過做sniffer后,我真正懂得了ip包的結構,并深深的記住了。另外,通過這次的項目,我還學習了以前不知道的一些關于mfc的知識,如:如何使用listcontrol控件,創(chuàng)造圓形按鈕,扁平的comboBox和to

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論