




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、廣州大學(xué)學(xué)生實(shí)驗(yàn)報(bào)告開課學(xué)院及實(shí)驗(yàn)室: 計(jì)算機(jī)學(xué)院 2015年月12日15日學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)教育學(xué)院年級(jí)、專業(yè)、班姓名學(xué)號(hào)實(shí)驗(yàn)課程名稱計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)成績實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)五:網(wǎng)絡(luò)程序設(shè)計(jì)指導(dǎo)老師一、實(shí)驗(yàn)?zāi)康某醪秸莆站W(wǎng)絡(luò)監(jiān)聽與分析技術(shù)的實(shí)現(xiàn)方法,從而加深對(duì)網(wǎng)絡(luò)協(xié)議的理解。了解以太網(wǎng)的幀格式,認(rèn)識(shí)TCP/IP的層次結(jié)構(gòu)。二、實(shí)驗(yàn)環(huán)境1、安裝了TCP/IP協(xié)議的Windows系統(tǒng)的計(jì)算機(jī)2、VC+6.0開發(fā)環(huán)境三、實(shí)驗(yàn)原理在分層模型中,主要利用數(shù)據(jù)封裝來實(shí)現(xiàn)不同系統(tǒng)間的通信,在發(fā)送數(shù)據(jù)經(jīng)過時(shí),每經(jīng)過一層就會(huì)被增加上本層的頭部信息。本實(shí)驗(yàn)要分析數(shù)據(jù)包,就一層一層的分析這些頭部信息。本實(shí)驗(yàn)用WinPc
2、ap進(jìn)行捕獲數(shù)據(jù)包,它工作在底層。以太網(wǎng)中傳輸?shù)臄?shù)據(jù)被稱為“幀”,幀的格式如下:長度(類型)幀前定界符前導(dǎo)碼幀校驗(yàn)數(shù)據(jù)源地址目的地址 對(duì)于前導(dǎo)碼和幀前定界符通常有硬件處理,在分析數(shù)據(jù)包時(shí)不予考慮。當(dāng)捕獲到一個(gè)以太網(wǎng)數(shù)據(jù)幀的時(shí)候,數(shù)據(jù)就開始從協(xié)議棧由底向上逐層解析,去掉各層所加上的報(bào)文協(xié)議頭部:圖1:幀格式WinPcap是一個(gè)開源的、運(yùn)行于Win32平臺(tái)的體系結(jié)構(gòu),是用于網(wǎng)絡(luò)封包抓取的一套工具,包括一個(gè)內(nèi)核級(jí)別的packet filter,一個(gè)底層的DLL(packet.dll)和一個(gè)高級(jí)的獨(dú)立于系統(tǒng)的DLL(Wpcap.dll), packet.dll提供一個(gè)底層的API,可以直接訪問網(wǎng)絡(luò)設(shè)備
3、驅(qū)動(dòng),Wpcap.dll是一個(gè)強(qiáng)大的捕獲程序庫。它為win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力,Winpcap不能阻塞、過濾或控制其他應(yīng)用程序數(shù)據(jù)報(bào)的發(fā)收,它僅僅只是監(jiān)聽共享網(wǎng)絡(luò)上傳送的數(shù)據(jù)包。本實(shí)驗(yàn)利用WinPcap提供的函數(shù)來設(shè)置網(wǎng)卡模式并捕獲響應(yīng)的數(shù)據(jù)包,進(jìn)行解析。四、實(shí)驗(yàn)內(nèi)容及步驟步驟(1):安裝WinPcap驅(qū)動(dòng)和DLL程序。在VC+中配置WinPcap,Tools->options->Directories,添加WinPcap的Include和Lib文件。如下:圖2:添加WinPcap庫步驟(2):新建MFCAppwizard(exe)工程,在打開的工程下,選擇Proje
4、ct->Settings的C/C+選項(xiàng)卡,選擇Link選項(xiàng)卡,在Object/library modules中添加wpcap.lib 、ws2_32.lib和packet.lib三個(gè)庫文件(三者之間用空格隔開),使工程在編譯連接的時(shí)候?qū)inPcap的響應(yīng)的庫模塊加載進(jìn)去。步驟(3):在Microsoft Visual C+6.0環(huán)境下設(shè)計(jì)界面,界面如下:圖3:界面設(shè)計(jì)View->ClassWizard定義控件變量。步驟(4):在CapturePacket1Dialog.h添加頭文件,把相應(yīng)的庫文件添加到工程里。#include<winsock2.h>#include
5、"pcap.h"#include "remote-ext.h"步驟(5):在OnInitDialog()中添加初始化界面的代碼。獲取控件的句柄,對(duì)窗口進(jìn)行設(shè)計(jì),如:對(duì)Listbox的初始化:/初始化Listbox:DWORD dwStyle;dwStyle = m_list.GetStyle();/列表類型dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT |LVS_SHOWSELALWAYS ; /繪制表格 選擇整行m_list.SetExtendedStyle(dwStyle);/擴(kuò)展類型 m_list
6、.InsertColumn(0,"時(shí)間");/插入一列: m_list.SetColumnWidth(0,80);/下面可以根據(jù)自己的需要插入列步驟(6):定義相關(guān)的結(jié)構(gòu)體typedef struct ip_addressu_char byte1;u_char byte2;u_char byte3;u_char byte4;ip_address;/* IPv4 header */typedef struct ip_headeru_char ver_ihl; / Version (4 bits) + Internet header length (4 bits)u_char
7、tos; / Type of service u_short tlen; / Total length u_short identification; / Identificationu_short flags_fo; / Flags (3 bits) + Fragment offset (13 bits)u_char ttl; / Time to liveu_char proto; / Protocolu_short crc; / Header checksumip_address saddr; / Source addressip_address daddr; / Destination
8、addressu_int op_pad; / Option + Paddingip_header;typedef struct udp_headeru_short sport; / Source portu_short dport; / Destination portu_short len; / Datagram lengthu_short crc; / Checksumudp_header;/mac頭部結(jié)構(gòu)typedef struct BYTE DesMacAddr6;BYTE SrcMacAddr6;WORD LengthOrType;/數(shù)據(jù)長度或類型MAC_HEADER;/MAC幀類型
9、定義const u_short MAC_TYPE_IP=0x0800;const u_short MAC_TYPE_ARP=0x0806;const u_short MAC_TYPE_RARP=0x08035;步驟(7):在OnInitDialog()獲取網(wǎng)絡(luò)設(shè)備列表,調(diào)用函數(shù)原型如下int pcap_findalldevs_ex(char *source,struct pcap_rmthauth auth,pcap_if_t * *addevs,char * errbuf)alldevs參數(shù)指向獲取的網(wǎng)絡(luò)接口列表的第一個(gè)元素,網(wǎng)絡(luò)接口鏈表中每一個(gè)元素都是pcap_if_t結(jié)構(gòu),在pcap.h
10、中都已經(jīng)定義。本程序?qū)崿F(xiàn)的具體代碼如下:在獲得了網(wǎng)絡(luò)設(shè)備列表后,下一步就要獲取網(wǎng)絡(luò)接口卡的IP地址、MAC地址、網(wǎng)絡(luò)掩碼、廣播地址。獲取Ip地址的具體實(shí)現(xiàn)代碼如下(僅供參考):for( i = 0; pHost!= NULL && pHost->h_addr_listi!= NULL; i+ ) char str100; char addr20;LPCSTR psz=inet_ntoa (*(struct in_addr *)pHost->h_addr_listi);str3="IP地址是:"str3=str3+psz;m_list3.Inser
11、tItem(m_list3.GetItemCount(),str3);/加入列表項(xiàng)圖4:獲取網(wǎng)絡(luò)適配器窗口步驟(8):雙擊“捕獲”按鈕,構(gòu)造函數(shù),在此過程中要打開網(wǎng)絡(luò)接口,為了捕獲到網(wǎng)絡(luò)經(jīng)過某網(wǎng)絡(luò)接口設(shè)備的所有數(shù)據(jù)包,所以把網(wǎng)卡設(shè)置為混雜模式。調(diào)用函數(shù)pcap_open()(此函數(shù)可以在MSDN中查找此函數(shù)的具體使用方法)(僅供參考) pcap_if_t * d;pcap_t * adhandle;/* Open the device */ if ( (adhandle= pcap_open(d->name, / 設(shè)備名 65536, PCAP_OPENFLAG_PROMISCUOUS,
12、 / 混雜模式 1000, / 超時(shí)時(shí)間 NULL;/在遠(yuǎn)程設(shè)備中捕獲數(shù)據(jù)包時(shí)使用,在本實(shí)驗(yàn)中不適用,設(shè)置為NULL errbuf / error buffer ) ) = NULL)打開網(wǎng)絡(luò)適配器后,下一步就是編輯和設(shè)置過濾器,可以根據(jù)自己的需要選擇性的捕獲網(wǎng)絡(luò)數(shù)據(jù)包。本實(shí)驗(yàn)選擇IP協(xié)議,定義char packet_filter=”ip”;if(pcap_compile(adhandle, &fcode, packet_filter, 1, netmask)<0) /add your code pcap_freealldevs(alldevs);/set the filter
13、設(shè)置過濾器if(pcap_setfilter(adhandle, &fcode)<0) add your code;pcap_freealldevs(alldevs);步驟(9):前期工作做完,就開始獲取數(shù)據(jù)包,在本實(shí)驗(yàn)中通過創(chuàng)建線程來實(shí)現(xiàn)抓包的過程,實(shí)現(xiàn)代碼(僅供參考):/* start the capture 抓包線程*/DWORD nThreadId=0; handle=(HANDLE):CreateThread(NULL,0,mythread,(LPVOID)this,CREATE_SUSPENDED,&nThreadId );SetThreadPriority(
14、handle,THREAD_PRIORITY_NORMAL);ResumeThread(handle);其中mythread為在CapturePacket1Dlg.cpp自定義的線程名稱DWORD WINAPI mythread(LPVOID lParam)CWinpcapdialogDlg *p=(CWinpcapdialogDlg*)lParam;time_t local_tv_sec;struct tm *ltime;char timestr16;ip_header *ih;udp_header *uh;u_int ip_len;步驟(10):在mythread()中分析捕獲的數(shù)據(jù)包,實(shí)
15、現(xiàn)代碼(僅供參考,有省略):while(res=pcap_next_ex(p->adhandle,&p->header,&p->pkt_data)>=0) if(res=0)continue;else/處理捕獲的包local_tv_sec = p->header->ts.tv_sec;ltime=localtime(&local_tv_sec);strftime( timestr, sizeof timestr, "%H:%M:%S", ltime); /獲取時(shí)間ih = (ip_header *) (p->pkt_data +14); /ih指向IP報(bào)文的首部ip_len = (ih->ver_ihl & 0xf) * 4; uh = (udp_header *) (u_char*)ih + ip_len); / uh指向UDP報(bào)文的首部sport=ntohs(uh->sport); /網(wǎng)絡(luò)序轉(zhuǎn)化為主機(jī)序dport=ntoh
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程施工索賠爭議的解決學(xué)習(xí)情境六建筑工程索賠課件
- 2025年山西省大同市渾源縣六年級(jí)數(shù)學(xué)小升初摸底考試含解析
- 2.1《推動(dòng)和平與發(fā)展》課件- 2024-2025學(xué)年統(tǒng)編版道德與法治九年級(jí)下冊(cè)
- 購物中心財(cái)務(wù)管理的國際視野
- 鑲黃旗2025屆數(shù)學(xué)四下期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2024-2025學(xué)年密山市小升初數(shù)學(xué)重難點(diǎn)模擬卷含解析
- 中原科技學(xué)院《工程制圖及CAD》2023-2024學(xué)年第二學(xué)期期末試卷
- 眉山職業(yè)技術(shù)學(xué)院《花紙?jiān)O(shè)計(jì)與排版》2023-2024學(xué)年第二學(xué)期期末試卷
- 質(zhì)量標(biāo)準(zhǔn)在醫(yī)療安全中的作用與實(shí)踐
- 沈陽化工大學(xué)《城市復(fù)興設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025-2030年中國數(shù)字告示(數(shù)字標(biāo)牌)行業(yè)需求現(xiàn)狀及發(fā)展趨勢分析報(bào)告
- 矛盾糾紛排查知識(shí)講座
- 2025年廣州市黃埔區(qū)東區(qū)街招考社區(qū)居委會(huì)專職工作人員高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 汽車制動(dòng)系統(tǒng)課件
- 2025年黑龍江省高職單招《職測》高頻必練考試題庫400題(含答案)
- 統(tǒng)編版七年級(jí)語文下冊(cè)《第16課有為有不為》教案
- GB 45184-2024眼視光產(chǎn)品元件安全技術(shù)規(guī)范
- 【上?!康谝淮卧驴季?1【20~21章】
- 2025年湖南科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年東營科技職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 《新媒體廣告》課件 第4章 從技術(shù)到場景:新媒體廣告的創(chuàng)新應(yīng)用
評(píng)論
0/150
提交評(píng)論