


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、成績:網絡協議分析報告題目:獲取并解析網絡中的ARP數據包學院:計算機科學與技術學院 專業:計算機科學與技術班級:0411203學號:2012211699姓名:李傳根一、要求及功能編程序,獲取網絡中的ARP數據包,解析數據包的內容,將結果顯示在標 準輸出上,并同時寫入日志文件。運行格式:程序名 日志文件二、原理及方法2.0 什么是ARP地址解析協議(Address Resolution Protocol, ARP)是在僅知道 主機的IP地址時確定其物理地址的一種協議。因IPv4和以太網的廣 泛應用,其主要用作將IP地址翻譯為以太網的 MAC地址,但其也能 在ATM和FDDIIP網絡中使用。從I
2、P地址到物理地址的映射有兩種方 式:表格方式和非表格方式。ARP具體說來就是將網絡層(IP層,也 就是相當于OSI的第三層)地址解析為數據連接層(MAC層,也就是 相當于OSI的第二層)的MAC地址。在以太網協議中規定,同一局域網中的一臺主機要和另一臺主 機進行直接通信,必須要知道目標主機的MAC地址。而在TCP/IP協議棧中,網絡層和傳輸層只關心目標主機的IP地址。這就導致在以太網中使用IP協議時,數據鏈路層的以太網協議接到上層IP協議提供的數據中,只包含目的主機的IP地址。于是需要一種方法,根據 目的主機的IP地址,獲得其MAC地址。這就是ARP協議要做的事情。 所謂地址解析(addres
3、s resolution)就是主機在發送幀前將目標IP地 址轉換成目標MAC地址的過程。另外,當發送主機和目的主機不在同一個局域網中時,即便知道目的主機的MAC地址,兩者也不能直接通信,必須經過路由轉發才 可以。所以此時,發送主機通過ARP協議獲得的將不是目的主機的真 實MAC地址,而是一臺可以通往局域網外的路由器的某個端口的 MAC地址。于是此后發送主機發往目的主機的所有幀,都將發往該 路由器,通過它向外發送。這種情況稱為 ARP代理(ARP Proxy。2.1、ARP協議及工作原理ARP協議是“ Address Resolution Protocol ” (地址解析協議)的縮寫。在局域網中
4、,網絡中實際傳輸的是“幀”,幀里面是有目標主機的MAC*址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MACM址是如何獲得的呢?它就是通過地址解析協議獲得 的。所謂“地址解析”就是主機在發送幀前將目標 IP地址轉換成目標MAC地址 的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC 地址,以保證通信的順利進行。ARP的基本運行過程:1、主機A希望發送數據分組給主機 B,但不知道B的物理地址。2、A發送廣播報文,要求B主機用用他的物理地址來響應。3、網站上所有的主機都接收到這個分組。4、B識別自己的IP地址,發送響應報文
5、,告訴 A自己的物理地址。2.2、ARP的分組格式物理幀頭(14B)ARP幀結構(28B)填充數據(18B)CRC( 4B)圖一 ARP分組格式目的 MAC( 6B)源 MAC( 6B)類型(2B)圖二物理幀頭08162432硬件類型(Ethernet : 0x1)上層協議類型(IP : 0x0800)硬件地址長度(0x6)IP地址長度(0x4)操作(:請求:0x1;應答:0x2)源MAC地址源MAC地址源IP地址源IP地址目的MAC地址目的MAC地址目的IP地址圖三ARP幀結構2.3工作原理源主機在傳輸數據前,首先要對數據進行封裝,在該過程中會把目的主機的IP地址和MACM址封裝進去。在通信
6、的初始階段,我們能夠知道目的主機的 IP 地址,而MAC地址是不知道的。這時如果目的主機和源主機在同一網絡內, 源主 機會以第二層廣播的方式發送 ARP請求報文。ARP請求報文中含有源主機的IP地址和MAC地址,以及目的主機的IP地址。當報文通過廣播的方式到達目的主 機時,目的主機會響應請求報文,并返回ARP響應報文,從而源主機就可以獲得 目的主機的MAC地址,同樣目的主機也可以獲得源主機的 MAC地址。如果目的主 機和源主機地址不在同一個網絡中,源主機發送的IP數據包會送到交換機的默認網關,而默認網關的MACM址同樣可以通過ARP協議獲取。經過ARP協議解析 IP地址之后,主機會在緩存中保存
7、IP地址和MACM址的映射條目,此后再進行 數據交換只要從緩存中讀取映射條目即可。2.4 ARP包的填充將命令行的參數作適當的轉換后填到 ARP分組結構的個字段中即可。要注意的是,填充請求包時,因為包要在Ethernet上廣播,所以,物理幀頭的“目的MAC字段要填充為FFFFFFFFFFF;而ARP幀結構中的目的MAC可填充任意值,因為它此時不起作用。“填充數據”字段要填充為0三、源程序核心函數說明#in cludevc oni o.h>#in clude<fstream.h>#i ncludevioma nip.h>#in clude"pcap.h"
8、;#in cludevw in sock2.h>#pragma comme nt(lib,"ws2_32.lib")#pragma comme nt(lib,"wpcap.lib")/定義ARP包數據struct arppktun sig ned short hdtyp;/un sig ned short protyp;/un sig ned char hdsize;/un sig ned char prosize;/un sig ned short op;/u_char smac6;/u_char sip4;/硬件類型協議類型硬件地址長度協議地址
9、長度(操作類型)操作值:ARP/RARP源MAC地址源IP地址/u_char dmac6;/u_char dip4;/目的MAC地址目的IP地址;pcap_pkthdr*header,c onstu_charvoid packet_ha ndler(co nst*pkt_data,ostream& out)/ 從ARP包中找到頭部位置arppkt* arph = (arppkt *)(pkt_data +14);/輸出源IP地址for(int i=0;i<3;i+)out«i nt(arph->sipi)vv'.'out.setf(ios:left
10、);out«setw(3)<<int(arph->sip3)<<""out.u nsetf(ios:left);/輸出源MAC地址char oldfillchar=out.fill('0');out.setf(ios:uppercase);for(i=0;i<5;i+)out<<hex<<setw(2)<<i nt(arph->smaci)vv'-' out<<hex<<setw(2)<<i nt(arph->sm
11、ac5)<<"" out.fill(oldfillchar);out. un setf(ios:hex|ios:uppercase);/輸出目的IP地址for(i=0;i<3;i+)out«i nt(arph->dip3)«'.'out.u nsetf(ios:left);out«setw(3)<<int(arph->dip3)<<''out.u nsetf(ios:left);/輸出目的MAC地址out.fill('0');out.setf(
12、ios:uppercase);for(i=0;i<5;i+)out<<hex<<setw(2)<<i nt(arph->dmaci)vv'-'out<<hex<<setw(2)<<i nt(arph->dmac5)<<""out.fill(oldfillchar);out. un setf(ios:hex|ios:uppercase);/輸出操作類型out< <n tohs(arph->op)<<""/輸出操
13、作時間struct tm *ltime;ltime=localtime(&header->ts.tv_sec);out.fill('O');out<vltime->tm_hourvv':'vvsetw(2)vvltime->tm_m in< v':'v<setw(2)vv| time->tm_sec;out.fill(oldfillchar);out<<e ndl;void main (i nt argc,char *argv )/命令行參數/檢查輸入命令格式if(argc!=2)co
14、ut<<"Please in put comma nd: ParseArp output_file"<<e ndl;return;/初始化網絡設備相關參數pcap_if_t *alldevs;pcap_if_t *d;pcap_t *adha ndle;char errbufPCAP_ERRBUF_SIZE; u_int n etmask;char packet_filter="ether proto Warp"struct bpf_program fcode;struct pcap_pkthdr *header;const u_
15、char *pkt_data;/獲取網絡設備列表if(pcap_fi ndalldevs(&alldevs,errbuf)=-1)cout«"Error in pcap_fi ndalldevs:"«errbuf;return;/選取一個Ethernet網卡for(d=alldevs;d;d=d->n ext)/網卡設為混雜模式,接收所有幀if(adha ndle=pcap_open_live(d-> name,1000,1,300,errbuf)=NULL)cout<<"nUnable to open the
16、adapter." pcap_freealldevs(alldevs);return;/檢查數據鏈路是否為Ethernetif(pcap_datali nk(adha ndle)=DLT_EN10MB&&d->addresses!=NULL) break;if(d=NULL)cout<<"nNoin terfacesfound! Makesure Win pcap is in stalled.'n"return;/獲得子網掩碼n etmask=(sockaddr_i n*)(d->addresses->n et
17、mask)->sin_addr.S_ un .S_addr;/編譯過濾器,只捕獲ARP包if(pcap_compile(adha ndle, &fcode,packet_filter,1, netmask)<0) cout<<"nUnableto compile the packet filter.Check the syntax.n"pcap_freealldevs(alldevs);return;/設置過濾器if(pcap_setfilter(adha ndle,& fcode)<0) cout<<"n
18、Error setting the filter.'n"pcap_freealldevs(alldevs);return;/顯示提示信息及每項含義cout<<"listening on "<<d->description<<"."<<endl<<endl;ofstream fout(argv1,ios:app); /日志記錄文件/為了查看日志時的方便,其中加入了日期記錄time_t t;time(&t);fout.seekp(0,ios:e nd);if(fout
19、.tellp()!=0)fout«e ndl;fout«"ttARP request(1)/reply(2) on"<<ctime(&t);cout«"SourIpAddr"<<""<<"SourMAC Address"<<""<<"DesIpAddr"<<" "<<"Des MAC Address"<<
20、" "<<"OP"<<" "<<"Time"<<e ndl;fout<<"SourIpAddr"<<""<<"SourMAC Address"<<""<<"DesIpAddr"<<" "<<"Des MAC Address" <<&qu
21、ot; "<<"OP"<<" "<<"Time"<<e ndl;/釋放設備列表pcap_freealldevs(alldevs);/開始截獲ARP包int result;while(result=pcap_ next_ex(adha ndle,&header,&pkt_data)>=0) /循環解析ARP數據包if(result=0)con ti nue;/解析ARP包,結果輸出到屏幕與文件packet_ha ndler(header,pkt_data,c
22、out);packet_ha ndler(header,pkt_data,fout);四、實驗環境及平臺搭建操作系統:wi ndows 8運行環境:Microsoft Visual C+ 6.0開發包:wineap SDK,以及最新platform SDK的一些庫文件1.把win cap SDK里面的庫文件以及lib包含到源程序中,避免包含 wincap頭文件時出現找不到頭文件的錯誤具體方法:在菜單欄中-> 工具-> 選項一> 目錄,然后選擇in elude要包含的 庫的路徑2.下載最新platform SDK里面的部分庫文件strsafe.h ,然后添加到vc6.0安裝目錄
23、里面的include文件夾里面,源程序需要用到這個頭文件,但是vc6.0里面沒有這個1 trejmtwr3 STREAMTYJH stringIjJ STRINGSuw1998/24 &«01958/5/15-1C/> I Hicadtr/ K.B4 KBIB KBa kbLt strmheu=-h199S/d/24 0OC-C/C HderII KB190/4/24 b jOCihr'-一一一玄STimiFJDCi勺 SLBGENRLH M SUBEMjFt+l1C. 98/4/24 0-002005/4/1417:54 3O15/4/1417-56 1WB/
24、1B/15 DCM3 19W 畑 QSOCOCCJC + 4 HeaderInterfacs1 Defirli._C7C * + Hrflder Objcci Filr I ibrary 文件C/» + HfadtrC/Ci¥ HeaderKB11 ICB239 KB&5 KB4 KBJ KBUKB開發語言:C語言,C+五、實驗結果及分析 實驗結果:09-1W-W2-C7-24-F5eu-ea-eo-ea-eo-eu21 M3UB-lS-B2-C/-24-Ftf21H31EZ1H3LIU 11H 110 li0MAC naa”時 or wft-pio 呻口一pi n
25、-po -waSaur NUC Addi'ca JWft-lB-B2-C7-24-Fftlicroooft Uindoka c> lltcFnirnft Corpnar-lan.保宙所有杈利QJsepe <Ji>EU72.19112Loiu' p ftddr1管更貝:匚:WINDCWS5y&tem 12cmd.exe - 3.exe nr/lcq.txtm ylog txe亍主耳宣噸叩朱SEk書戒Q 堂看,艸檔助;HISui1 Ip Adih-1172.18.112.1 I172.18J12.11172.18.113.1 IL72.18.112.111
26、72.18.112.1 1172.13.112.1ML7L IS. 112.1 :72. IS. 11H.1172.18.112.1 1172.18L£1 1 I17L1S.1L2.1:7Z,18.11Z,L72.1E. 112,:|L72,i8.112.11172.18.112.1 1172.13.112.1 lL7?.18.112,1IL72.1S. 112.11172. IS. 112,1ARP rerjirtt (1)/reply(25 EtfiMati Jun 22 21! 43 !:5fl 20L5Saur1 1IAC 直Jdrtr品Ip Mdr Etssoq-13-82
27、-cr-ai-re D0-18-S2-C7H244»B 00-13-32-er-24-PB O0-l?-32<7-24-PB 00-13-33-7-24- 00-10-82-C 7-2 4-PB00-lS-32<7-24-nB00-lE-82<7-24-FB00-li-S2<7-Jd-FBM-1E-眾00-15-32-C7-24-PS O0-l£-35<r-24-FP 00-15-82-C7-34-PB 00-13-837-24-? I; 00-13-82-C7-24-FB 00-lE-82<7-24-PB 0Q-lS-S2<7-2
28、4-FB OQ-ia-a2-C7"24-PB 00-13-82-7244 00-13-32-C7-24-PB 00-13-33-C 7-24-PB 00-13-83-Cr-24-ra 00 18-92-C7-24-PB 00-15-52<7-24-PE 00-1E-8J<7-2<1-FB 00 13-8200-18-S2-C7H244»B Oa-lS-a2-CiT-24-PB )0-lE-32<7-21-?B 00-1S-83-CT-24-PB2<6.246, 236. 21611U11Q,11O.1LQ2S0. £50. 2501
29、250251.251, 25L 251144.144.141144252.252. 252. 25S141.141 14L 141KAC AJdrts曲 OPU;-O0-CDO-r D-DOO'-OO-OD-QO 'D-DO 00-0)-0000-00-00 !):-& O-OC-QO-GQ-DO 00-0D-0 CH 0-00-00 oo-oo-oo-ao-oo-oo W.-OO-OC-OO-LO-OD13139,131139 OZ-OO-OD-OO-CO-DO13L 137,13 137 00-00-CXI0-00-001:8.138,138.138 0;-00-Q
30、C-00-:0-00TLn12k3:&D121:43:5111:43:51L 21143:5212i:q$;52121:d3:&2121:陽 £212Lj43:5212L'd3:52121:3:53&. s. 5. 5 nn-oo-oo-no-oo-on i刃:益:岡12.1112. 12 00-閒PQTDTtHJO 121:43;54253,253, 253; 253 00-00-0OH0-00-00 12L;館;網251.251. 25L. JEi 00-00-00-00-00-00 12L:d3:54-fl(H10-00 12L:43!54141
31、.141.14L. 141 OO-OO-OCHIO-IIC-OO 12L43r&4106. L06.106.10& OO-OO-OO-OO-CO-DO 1213:5562.醱旳.62 OOM»-O00-00-00 L 21:43;55 33,33.33, 33 QO-QG-OO-OD-QQO I21:43:5&124,124.124,124 OOPUTCHQtHKHXl121:43:5&10MOT.10MOT 00-00-001 (H)0-0()12L43;55123,123,123.123 (XJ-Q0-00-00-00-00121:<3:55
32、135 00-flC-0(H10-00-CO121:43:55133.133 1 33L133 OO-OC-OCHJO-llC-OCi12k43r£S125.12S. 12E. 12& OZ-OO-OO-OO-CO-DO121:3:OO-OO-OD-OO-iO-DO121.仙3:551荷1空廠笳.總3 0J 00-CD-00-i:0沖J21:鴨:飛121,121.121.121 004J(H0-OOH0121:43:56173. 153.Z7?. 153 門1-7:-"一4一:門12t:7GISO. 18. 18& 180 00-00-00-00-00-00
33、121:4S:K啊.訥64 OO-OQ-OO-OOJ0-00 121:43:5相關擴展與分析:算法和代碼提示:調用socket ()打開協議簇為PF_PACKE的原始套接字,這樣我們就可以 收到數據鏈路幀:int fd = socket(PF_PACKET,SOCK_RAM,hto ns(ETH_P_ALL);對打開的套接字調用ioct1 (),將網卡設置為混雜模式,這樣我們就可以 接受到局域網中所有的包(包括目的地址不是本機的幀):struct ifreq req;memset (&req,0,sizeof(req);strncpy(req.ifr_name, ” eth0 ” ,strlen(“eth0 ” )+1);ioctl(fd,SIOCGIFFLAS,&req);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025撤銷擔保合同協議書范本
- 2025年廢物處理合同范本
- 2025委托制作光盤的合同書
- 2025年大型建設項目合同范本
- 2025設備拆除承包合同
- 《2025精密儀器制造合同》
- 2025合同履行的全面履行原則
- 2025年農村村委會房屋買賣合同
- 數字與形狀相結合的測試題試題及答案
- 建筑施工安全工作會議組織考題及答案
- 糖尿病低血糖診治
- TCALC 003-2023 手術室患者人文關懷管理規范
- 塵肺病介紹與預防課件
- 車載香氛凈化系統行業市場調研數據分析報告2024
- 腦機接口總體愿景與關鍵技術研究報告
- 善待他人班會課件
- 霸王茶姬管理制度
- 心臟康復護理專家共識解讀
- 聚合反應工程基礎
- 對接焊縫角焊縫的構造和計算
- 山東春季高考土建專業2023年高考題
評論
0/150
提交評論