版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告題 目: 解析ARP數(shù)據(jù)包 姓 名: 學(xué) 號(hào): 同組姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 評(píng)閱意見(jiàn):評(píng)定成績(jī): 指導(dǎo)老師簽名:年 月 日 目 錄一、課程設(shè)計(jì)目的:2二、課程設(shè)計(jì)要求:2三、課程設(shè)計(jì)分析31課程設(shè)計(jì)中的重點(diǎn)及難點(diǎn)32.參考算法33.核心代碼4四、源程序及運(yùn)行截圖5五、心得體會(huì)9六、參考文獻(xiàn)10一、課程設(shè)計(jì)目的:本課程設(shè)計(jì)的目的是對(duì)網(wǎng)絡(luò)上的ARP數(shù)據(jù)包進(jìn)行解析,從而熟悉ARP數(shù)據(jù)包的結(jié)構(gòu),對(duì)ARP協(xié)議有更好的理解和認(rèn)識(shí)。二、課程設(shè)計(jì)要求:通過(guò)編制程序,獲取網(wǎng)絡(luò)中的ARP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時(shí)寫入日志文件。程
2、序的具體要求如下所示:1以命令行的形式運(yùn)行,如下所示:arpparse logfile其中,arpparse為程序名;logfile為日志文件名。2程序輸出內(nèi)容如下所示:源IP地址 源MAC地址 目的IP地址 操作時(shí)間各部分的說(shuō)明如下所示:l 源IP地址:輸出ARP消息格式中的源IP地址字段。l 源MAC地址:輸出ARP消息格式中的源物理地址字段。l 目的IP地址:輸出ARP消息格式中的目的IP地址字段。l 目的MAC地址:輸出ARP消息格式中的目的物理地址字段。l 操作:輸出ARP消息格式中的操作字段,若為ARP請(qǐng)求,則為1,若為ARP應(yīng)答,則為2。l 時(shí)間:該ARP包產(chǎn)生的時(shí)間3.當(dāng)程序接
3、收到鍵盤輸入Ctrl+C時(shí)退出。三、課程設(shè)計(jì)分析1課程設(shè)計(jì)中的重點(diǎn)及難點(diǎn)1) 程序中會(huì)用到Winpcap,Winpcap是Win32環(huán)境下數(shù)據(jù)包捕獲的開(kāi)放代碼函數(shù)庫(kù)?;赪inpcap的應(yīng)用程序一般按照下面幾個(gè)步驟進(jìn)行設(shè)計(jì):l 輸出網(wǎng)卡設(shè)備列表。l 選擇網(wǎng)卡并打開(kāi)。l 捕獲數(shù)據(jù)包時(shí),可能需要設(shè)置過(guò)濾器。l 捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包。2) 在程序設(shè)計(jì)過(guò)程中需要注意網(wǎng)絡(luò)主機(jī)字節(jié)順序的轉(zhuǎn)化。由于不同的計(jì)算機(jī)系統(tǒng)所采用的數(shù)據(jù)表示方式不同,對(duì)于2B或4B的數(shù)據(jù),有的采用低字節(jié)地址存放數(shù)據(jù)的高權(quán)值位,而有的卻以低地址字節(jié)存放數(shù)據(jù)低權(quán)位值,在網(wǎng)絡(luò)的數(shù)據(jù)傳輸中,我們應(yīng)該統(tǒng)一表示,所以我們?cè)诓东@數(shù)據(jù)包后,應(yīng)將數(shù)
4、據(jù)包頭部的表示長(zhǎng)度或類型的數(shù)據(jù)轉(zhuǎn)換成本地機(jī)的表達(dá)形式??梢岳煤瘮?shù)ntohs()將網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換為主機(jī)字節(jié)序。3) 選擇網(wǎng)卡并打開(kāi)時(shí),注意選擇可用的網(wǎng)卡。2.參考算法1) 取得當(dāng)前網(wǎng)卡設(shè)備列表。2) 選擇Ethernet網(wǎng)卡并打開(kāi),注意判斷所選網(wǎng)卡是否為實(shí)際存在的可用網(wǎng)卡。3) 設(shè)置過(guò)濾器,此處的過(guò)濾器正則表達(dá)式為“arp”或者“ether protoarp”。4) 捕獲數(shù)據(jù)包并進(jìn)行處理(包括輸出各IP地址,物理地址,操作類型以及時(shí)間)。由于要記錄日志文件,為了便于輸出流參數(shù),建議采用pcap_next_ex()函數(shù)。流程圖如下圖所示:開(kāi)始獲取網(wǎng)卡列表選取Ethernet網(wǎng)卡打開(kāi)網(wǎng)卡(混雜模式
5、)編譯設(shè)置過(guò)濾器捕獲ARP包并將其相應(yīng)內(nèi)容輸出3.核心代碼l ARP數(shù)據(jù)包結(jié)構(gòu)struct arppkt unsigned short hdtyp; /硬件類型。值0001表示其為Ethernetunsigned short protyp; /協(xié)議類型。值0800表示上層協(xié)議為IPunsigned char hdsize; /硬件地址長(zhǎng)度。值為06unsigned char prosize; /協(xié)議地址長(zhǎng)度。值為04unsigned short op; /操作值為0001/0002,分別表示ARP請(qǐng)求/應(yīng)答u_char smac6; /源MAC地址,6Bu_char sip4; /源IP地址,
6、4Bu_char dmac6; /目的MAC地址u_char dip4; /目的IP地址;l 獲取網(wǎng)絡(luò)設(shè)備列表,并以混雜模式打開(kāi)網(wǎng)絡(luò)設(shè)備/獲取網(wǎng)絡(luò)設(shè)備列表if(pcap_findalldevs(&alldevs,errbuf)=-1)cout<<"Error in pcap_findalldevs:"<<errbuf;return;/選擇Ethernet卡for(d=alldevs;d;d=d->next) /以混雜模式打開(kāi)網(wǎng)卡,以接受所有的幀if(adhandle=pcap_open_live(d->name,1000,1,30
7、0,errbuf)=NULL)cout<<"nUnable to open the adapter."pcap_freealldevs(alldevs); /釋放設(shè)備列表return;if(pcap_datalink(adhandle)=DLT_EN10MB&&d->addresses!=NULL)break;l 編譯過(guò)濾器并設(shè)置過(guò)濾器,只捕獲ARP數(shù)據(jù)包c(diǎn)har packet_filter=”ether proto arp”; /過(guò)濾,選擇arp協(xié)議if(pcap_compile(adhandle,&fcode,packet_fi
8、lter,1,netmask)<0) cout<<"nUnable to compile the packet filter.Check the syntax.n" pcap_freealldevs(alldevs); return;/設(shè)置過(guò)濾器if(pcap_setfilter(adhandle,&fcode)<0) cout<<"nError setting the filter.n" pcap_freealldevs(alldevs); return;l 循環(huán)捕獲ARP包,并進(jìn)行解析while(resul
9、t=pcap_next_ex(adhandle,&header,&pkt_data)>=0) 輸出ARP數(shù)據(jù)包的各個(gè)域的內(nèi)容到文件和屏幕上 四、源程序及運(yùn)行截圖1.源程序如下:#include<winsock2.h>#pragma comment(lib,"Ws2_32.lib") /用到ntobs()/等同于點(diǎn)擊"project-setting-link"打開(kāi)object/library module編輯框后加入文件#pragma comment(lib,"wpcap.lib")#include &
10、quot;pcap.h" /此頭文件沒(méi)有包含在VC中,需要另外加入#include<fstream.h>#include<iomanip.h> /格式化輸出需要用到#include<conio.h> /用到_getch()/注意到接收的數(shù)據(jù)包頭中代表類型,數(shù)據(jù)長(zhǎng)度的字段采用的是big-endian/所以對(duì)于2B/4B的數(shù)據(jù)要用ntohs()轉(zhuǎn)換為本機(jī)形式/ARP包結(jié)構(gòu)struct arppkt unsigned short hdtyp; /硬件類型。值0001表示其為Ethernetunsigned short protyp; /協(xié)議類型。值080
11、0表示上層協(xié)議為IPunsigned char hdsize; /硬件地址長(zhǎng)度。值為06unsigned char prosize; /協(xié)議地址長(zhǎng)度。值為04unsigned short op; /操作值為0001/0002,分別表示ARP請(qǐng)求/應(yīng)答u_char smac6; /源MAC地址,6Bu_char sip4; /源IP地址,4Bu_char dmac6; /目的MAC地址u_char dip4; /目的IP地址;void packet_handler(const pcap_pkthdr *header,const u_char *pkt_data,ostream& out)
12、;void main(int argc,char *argv )if(argc!=2)cout<<"Usage:arpparse logfilename"<<endl;cout<<"press any key to continue."<<endl;_getch();return;pcap_if_t *alldevs;pcap_if_t *d;pcap_t *adhandle;char errbufPCAP_ERRBUF_SIZE;u_int netmask;char packet_filter="
13、;ether proto arp"struct bpf_program fcode;struct pcap_pkthdr *header;const u_char *pkt_data;if(pcap_findalldevs(&alldevs,errbuf)=-1)cout<<"Error in pcap_findalldevs:"<<errbuf;return;for(d=alldevs;d;d=d->next) if(adhandle=pcap_open_live(d->name,1000,1,300,errbuf)=
14、NULL)cout<<"nUnable to open the adapter."pcap_freealldevs(alldevs);return;if(pcap_datalink(adhandle)=DLT_EN10MB&&d->addressess!=NULL)break;if(d=NULL)cout<<"nNo interfaces found! Make sure Winpcap is installed.n"return;/獲得子網(wǎng)掩碼netmask=(sockaddr_in *)(d->ne
15、tmask)->sin_addr.s_un.s_addr;/編譯過(guò)濾器,只捕獲ARP包if(pcap_compile(adhandle,&fcode,packet_filter,1,netmask)<0) cout<<"nUnable to compile the packet filter.Check the syntax.n" pcap_freealldevs(alldevs); return;/設(shè)置過(guò)濾器if(pcap_setfilter(ashandle,&fcode)<0) cout<<"nErr
16、or setting the filter.n" pcap_freealldevs(alldevs); return;cout<<"ttlistening on "<<d->description<<"."<<endl<<endl;/顯示提示信息及每項(xiàng)含義ofstream fout(argv1,ios:app); /日志記錄文件/為了查看日志時(shí)的方便,其中加入了日期記錄time_t t;time(&t);fout.seekp(0,ios:end);if(fout.tell
17、p()!=0)fout<<endl;fout<<"ttARP request(1)/reply(2) on"<<ctime(&t);cout<<Sour Ip Addr"<<" "<<"Sour MAC Address"<<" "<<"Des Ip Addr"<<" "<<"Des MAC Address"<<
18、;" "<<"OP"<<" "<<"Time"<<endl;fout<<Sour Ip Addr"<<" "<<"Sour MAC Address"<<" "<<"Des Ip Addr"<<" "<<"Des MAC Address"<<&qu
19、ot; "<<"OP"<<" "<<"Time"<<endl;/釋放設(shè)備列表pcap_freealldevs(alldevs);int result;while(result=pcap_next_ex(adhandle,&header,&pkt_data)>=0) if(result=0)continue;packer_handler(header,pkt_data,cout);packet_handler(header,pkt_data,fout);vo
20、id packet_handler(const pcap_pkthdr *header,const u_char *pkt_data,ostream& out) arpkt* arph = (arppkt *)(pkt_data +14); for(int i=0;i<3;i+) out<<int(arph->sipi)<<'.' out.setf(ios:left); out<<setw(3)<<int(arph->sip3)<<" " out.unsetf(ios:up
21、percase); for(i=0;i<5;i+) out<<hex<<setw(2)<<int(arph->smaci)<<'-' out<<hex<<setw(2)<<int(arph->smac5)<<" " out.fill(oldfillchar); out.unsetf(ios:hex|ios:uppercase); for(i=0;i<3;i+) out<<int(arph->dip3)<<
22、9;.'out.unsetf(ios:left);/輸出目的MAC地址out.fill('0');out.setf(ios:uppercase);for(i=0;i<5;i+)out<<hex<<setw(2)<<int(arph->dmaci)<<'-'out.fill(oldfillchar);out.unsetf(ios:hex|ios:uppercase);out<<ntohs(arph->op)<<" "struct tm *ltime;ltime=localtime(&header->ts.tv_sec);out.fill('0');out<<ltime->tm_hour<<':'<<setw(2)<<ltime->
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 插畫藝術(shù)課課程設(shè)計(jì)
- 小班糖果班本課程設(shè)計(jì)
- 應(yīng)用文寫作計(jì)劃課程設(shè)計(jì)
- 中國(guó)消費(fèi)行業(yè)未來(lái)五年趨勢(shì)及前景展望
- 青少年心理健康:個(gè)性化教育的發(fā)展前景
- 第10章 格與布爾代數(shù)-《離散數(shù)學(xué)(微課版)》教學(xué)課件
- 《砥礪前行不負(fù)使命》黨建述職報(bào)告
- 電氣基礎(chǔ)知識(shí)問(wèn)答
- 提升小學(xué)語(yǔ)文閱讀教學(xué)實(shí)效的重要性
- 【7歷期末】安徽省蕪湖市無(wú)為市2023-2024學(xué)年七年級(jí)上學(xué)期1月期末歷史試題
- 24秋國(guó)家開(kāi)放大學(xué)《0-3歲嬰幼兒的保育與教育》期末大作業(yè)參考答案
- 跟著音樂(lè)游中國(guó)智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 預(yù)拌混凝土企業(yè)質(zhì)量管理體系·程序文件
- 外國(guó)人換發(fā)或補(bǔ)發(fā)永久居留證件申請(qǐng)表樣本
- 塔吊安裝旁站監(jiān)理記錄表(示范稿)
- GCC認(rèn)證對(duì)整車的一般要求
- OBD-II標(biāo)準(zhǔn)故障代碼表
- 施工現(xiàn)場(chǎng)類安全隱患排查清單表
- 采購(gòu)項(xiàng)目組織履約、驗(yàn)收方案、程序、辦法
- 送貨單(三聯(lián)針式打印)
- pdca循環(huán)在護(hù)理教學(xué)中的應(yīng)用學(xué)習(xí)教案
評(píng)論
0/150
提交評(píng)論