實驗7Linux下以太幀的捕獲與分析_第1頁
實驗7Linux下以太幀的捕獲與分析_第2頁
實驗7Linux下以太幀的捕獲與分析_第3頁
實驗7Linux下以太幀的捕獲與分析_第4頁
實驗7Linux下以太幀的捕獲與分析_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、僅供個人參考實驗七、Linux下以太幀的捕獲與分析實驗目的及要求: 掌握網(wǎng)絡監(jiān)聽的實現(xiàn)技術(shù),使得能夠?qū)崟r捕獲所在以太網(wǎng)實驗步驟:內(nèi)正在傳輸?shù)臄?shù)據(jù)幀,并分析幀的結(jié)構(gòu)。學會在Linux下編寫網(wǎng)絡程序的基本方法;1閱讀本實驗后附錄的背景材料,熟悉以太網(wǎng)數(shù)據(jù)幀的格式, 以及獲取以太幀的編程原理。了解Linux環(huán)境下編程的基本 方法:2.參考本報告中提供的部分實現(xiàn)代碼改編為 程序以獲取以太 幀,并對獲得的以太幀加以分析;For pers onal use only in study and research; not for commercial use實驗內(nèi)容:(1)寫出程序的源代碼如下,并對主要語句

2、作注釋:For pers onal use only in study and research; not for commercial use不得用于商業(yè)用途2)運行、測試該程序,記錄測試結(jié)果,分析遇到的問題與解決的辦法編程背景材料:一、Linux下C語言編程環(huán)境介紹1、使用gedit編輯器輸入程序代碼Stepl:單擊“主菜單”(桌面左下方的圖標)一 “附件” “文本編輯器”,進入gedit編輯界面, 輸入程序。Step2:保存文件的方法與Windows中類似,注意保存位置,建議將保存位置設為:/home,文件名為:file.c。2、使用gcc編譯器在桌面上單擊右鍵,選擇“新建終端”,彈出一

3、對話框,在命令提示符#后依次輸入:cd /home進入程序所在目錄ls/顯示該目錄下的文件及文件夾(應能見 file.c)gcc file file.c (例女口 gcc -g example example編譯程序./file(例如./example)/ 執(zhí)行程序監(jiān)聽的實施以太網(wǎng)上進行數(shù)據(jù)傳輸時,在同一網(wǎng)段上所接的所有網(wǎng)卡事實上都可以收到在共享的物理介質(zhì) 上傳輸?shù)乃袛?shù)據(jù)。但在系統(tǒng)正常工作時,某個主機的網(wǎng)絡接口只響應兩種數(shù)據(jù)幀:一是幀的目標 MAC地址與本主機網(wǎng)卡地址相符;二是幀的目標地址是廣播地址,除此之外的數(shù)據(jù)幀都將被丟棄不作處理。要監(jiān)聽流經(jīng)網(wǎng)卡的不屬于自己主機的數(shù)據(jù),必須繞過系統(tǒng)正常工

4、作的處理機制,直接訪 問網(wǎng)絡底層。三、以太網(wǎng)數(shù)據(jù)幀、IP數(shù)據(jù)報、TCP首部格式1、以太幀數(shù)據(jù)幀格式如下圖所示:8B6B6B2B46-1500B4B前同步碼目標地址源地址幀類型幀中數(shù)據(jù)CRC校驗和Ah. 幀頭載荷幀尾目的地址和源地址都是 6字節(jié)的MAC地址(網(wǎng)卡地址),幀類型是幀中載荷的協(xié)議類型代碼,其幀類型標識主要有:0x0800:IP(網(wǎng)際協(xié)議);0x0806:ARP(地址解析協(xié)議);0x8035:RARP(反向地址解析協(xié)議);IP、ARP或RARP協(xié)議數(shù)據(jù)單元的報頭則位于幀載荷數(shù)據(jù)中。由于以太網(wǎng)最小幀長為64字節(jié),最大幀長為1518字節(jié),而幀頭加幀尾共 18字節(jié),故幀中數(shù)據(jù)為 461500

5、字節(jié)。2、IP數(shù)據(jù)報格式及首部中的各字段(TOS)“恆總字節(jié)數(shù))1(5位標識標志13便片倔移8忖.半存時間enu1S 1631第忖.淵IP老址加字節(jié)克位U的IP葩川/數(shù)據(jù)3、T C P首部的數(shù)據(jù)格式 議族, type 參數(shù)表示套接口的類型, protocol 參數(shù)表示所使用的協(xié)議族中某個特定的協(xié)議。如果函數(shù)調(diào) 用成功,套接口的描述符 (非負整數(shù) )就作為函數(shù)的返回值,若為 -1,就表明有錯誤發(fā)生。歷世口的瑞口耳期迪口大小1&辰檢離荊“惶聚腿新fta15 16314v:?四、Linux編程要點1、設置套接口以捕獲鏈路幀。在Linux下編寫網(wǎng)絡監(jiān)聽程序,比較簡單的方法是在超級用戶模式下,利用類型為

6、SOCK_PACKET的套接口(用socket函數(shù)創(chuàng)建)來捕獲鏈路幀。程序中需引用如下頭文件:#in clude #in clude #in clude #in clude /* ioctl comma nd */#in elude /* ethhdr struct */* ifreq struct */* in addr structure */#in clude #in clude #in clude socket函數(shù)的語法是:/* iphdr struct */* udphdr struct */*tcphdr struct */int socket(int domain, int ty

7、pe, int protocol); 其中 domain 參數(shù)表示所使用的協(xié)Linux C 擴展了套接口函數(shù),增加了 SOCK_PACKET 類型,使之可以用于監(jiān)聽鏈路層的數(shù)據(jù)幀,進 而得以分析各層的協(xié)議數(shù)據(jù)單元。使用socket函數(shù)捕獲鏈路層數(shù)據(jù)幀時,domain參數(shù)應指定為AF_INET 協(xié)議族,表示采用 internet 協(xié)議族; type 參數(shù)指定為 SOCK_PACKET ,表示獲取鏈路層數(shù)據(jù),不作處理; protocol參數(shù)采用htons(0x0003),表示使用的特定協(xié)議是截取所有類型的數(shù)據(jù)幀。此處需用htons函數(shù),用于短整數(shù)的字節(jié)順序轉(zhuǎn)換。監(jiān)聽捕獲時,socket函數(shù)調(diào)用形式

8、為:int fd;IIfd 是套接口的描述符還必須使用 ioctl 函數(shù)設置網(wǎng)卡工作于fd = socket(AF_INET, SOCK_PACKET, htons(OxOOO3);要使建立的套接口能夠真正監(jiān)聽到同一網(wǎng)段其他站點的數(shù)據(jù),“混雜”模式,相應的 Linux C 程序段如下:char *dev = eth0”;/(char *)dev標識設備名,eth0表示系統(tǒng)中的第一塊以太網(wǎng)卡II “ ethO”寫入ifr結(jié)構(gòu)的一個字段中/ SIOCGIFFLAGS(0x8913) 表示要求取出接口標志位struct ifreq ifr;strcpy(ifr.ifr_name, dev);i =

9、ioctl (fd, SIOCGIFFLAGS, &ifr);if (iO)close(fd);perror(“cantget flags n”);exit(O);在標志位中加入“混雜”方式II SIOCSIFFLAGS(Ox8914) 表示要求保存接口標志位ifr.ifr_flags |= IFF_PROMISC;i = ioctl(fd, SIOCSIFFLAGS, &ifr); if (ih_dest、eh-h_source、eh-h_proto 獲取幀頭信息。/display destination MAC Adressprintf(dest MAC: );for(i=0; ih_de

10、sti);printf(%02xn , eh-h_dest5);/display source MAC Adressprintf(src MAC: );for(i=0; ih_sourcei);printf(%02xn , eh-h_source5);/display protocol: 0x0800 IP, 0x0806 ARP, 0x8035 RARPprintf(protocol: 0x%04x, ntohs(eh-h_proto);3、 若捕獲的以太幀中h_proto的取值為0x0800,將類型為iphdr的結(jié)構(gòu)指針指向幀頭后面負載數(shù)據(jù)的 起始位置,則 IP 信包基本報頭的數(shù)據(jù)結(jié)構(gòu)將一

11、覽無余。以下程序段表明這一定位過程:if(ntohs(eh-h_proto)=0x0800)/0x0800 : IP Packetstruct iphdr *ip;ip = (struct iphdr ) (unsigned long)ep + ETH_HLEN);/ETH_HLEN 為幀頭長 (14)printf(src ip:%sn, inet_ntoa(ip-saddr);printf(dest ip:%sn, inet_ntoa(ip-daddr);/取出源和目標 IP 地址4、 若IP報頭的協(xié)議域取值為 6,那么緊跟在IP報頭之后的就是 TCP報頭。IP報頭的長度可以通過 ihl域取

12、得。這樣,假如接收緩沖區(qū) ep存放監(jiān)聽得到的以太幀,iph是指向其中IP基本報頭結(jié)構(gòu)的指針, 而 tcph 是指向 TCP 報頭結(jié)構(gòu)的指針,那么,定位 TCP 報頭的結(jié)構(gòu)信息就盡在 *tcph 中。if(ip-protocol=6)struct tcphdr* tcph;tcph =(struct tcphdr*)(ip+ip-ihl*4);printf(src port:%dn, ntohs(tcph-source);printf(dest port:%dn, ntohs(tcph-dest);僅供個人用于學習、研究;不得用于商業(yè)用途For personal use only in stud

13、y and research; not for commercial use.Nur f u r den pers?nlichen f u r Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l e tude et la recherche uniquementa des fins personnelles; pasa des fins commerciales.to員bko gA.nrogeHKO TOpMenob3ymoiflCH6yHeHuac egoB u HHuefigoHMucno 員 B30Ba

14、TbCEb KOMMepqeckuxqe 員 ex.以下無正文僅供個人用于學習、研究;不得用于商業(yè)用途For personal use only in study and research; not for commercial use.Nur f u r den pers?nlichen f u r Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l e tude et la rechercheiniquement a des fins personnelles; pasa des fins commerciales.to員bko gA.nrogeHKO TOpMenob3ymoiflCH6yHeHuac egoB u HHuefigoHMucno 員 B30BaTbCEb KOMMepqeckuxqe 員 ex.以下無正文僅供個人用于學習、研究;不得用于商業(yè)用途For personal use only in study and research; not for commercial use.Nur f u r den pers?nlichen f u r Studien, Forschun

溫馨提示

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

評論

0/150

提交評論