freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計- linux系統(tǒng)下sniffer的實現(xiàn)(文件)

2025-12-21 14:58 上一頁面

下一頁面
 

【正文】 僅是這個緩沖區(qū)中取得所要的數(shù)據(jù)。 這里舉一個詳細的例子來說明:假設(shè)截至到某時刻 A,系統(tǒng)一共捕捉到了 4 個Package,這 4個 Package 的大小信息分別為 40 Bytes, 50 Bytes, 60 Bytes, 70 Bytes,則 和 的信息分別如圖 和 圖 所示。 sizeof (pack_2) = 60 。 Tab[3] = 60 。 則 Tab[0]=0, Tab[1]=40, Tab[2]=90, Tab[3]=150, Tab[4]=220 offset(pack0)=0, size(pack0) = Tab[1] – Tab[0] = 40 Offset(pack1)=40, size(pack1) = Tab[2] – Tab[1] = 50 Offset(pack2)=90, size(pack2) = Tab[3] – Tab[2] = 60 Offset(pack3)=150, sizeof(pack3)=Tab[4] – Tab[3] = 70 ? Offset(packn)=Tab[n], sizeof(packn) = Tab[n+1] – Tab[n] 這樣,經(jīng)過計算之后,便可以得知任意一個 Package 的絕對起始位移,這樣做的好處就是,可以快速取到任意一個 Package 的數(shù)據(jù),提高系統(tǒng)效率。 // 刷新文件流 for (int i=0。 Tab[i+1] != 1 ) Tab[i+1] = Tab[i+1] + Tab[i] 。 int load_packs = 0 。 i++) { if ( Tab[to_be_load+i] != 1 amp。 if ( fread(buf+i, size, 1, pack) != 1 ) { printf(Read error...\n\n) 。 // 刷新數(shù)據(jù)流 to_be_load += load_packs 。 在本系統(tǒng)中,也同樣利用了 Buffer 思想,有著傳統(tǒng)意義上的原因,當(dāng)然還考慮到用戶操作時的特殊性,系統(tǒng)的 Buffer 思想描述如下: ? 在任意時刻, Buffer 內(nèi)最多存儲 100 個 Package 數(shù)據(jù) ? 剛開始,加載 pack0 ~ pack99 共計 100個 package,當(dāng)要查看 pack100 時,則采取的方法是:保留舊的 50 個 package, 加載新的 50 個 package,則 package編號變?yōu)椋?pack50 ~ pack149, 這樣操作的原因是為了用戶的方便,因為用戶經(jīng)常會查看某個報文附近的幾個報文 。 南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 16 本系統(tǒng)的顯示分為兩種顯示模式:“ detail”模式 和 “ simple”模式 ,“ detail”模式意為“詳細顯示模式”,“ simple”模式意為“簡單顯示模式”。 “ detail”模式的顯示比較簡單,只要逐層進行解析就可以了,下面我們主要討論下“ simple”模式下的顯示算法。 Libpcap 可以在絕大多數(shù)類 Unix 平臺下工作,絕大多數(shù)的現(xiàn)代操作系統(tǒng)都提供了對底層網(wǎng)絡(luò)數(shù)據(jù)包捕獲的機制,在捕獲機制之上可以開發(fā)網(wǎng)絡(luò)監(jiān)控應(yīng)用軟件。fcode); ? 進入循環(huán),反復(fù)捕獲數(shù)據(jù)包 for( 。 ? 對捕獲的數(shù)據(jù)進行類型轉(zhuǎn)換,轉(zhuǎn)化成以太數(shù)據(jù)包類型 eth = (struct lib_ether_hdr *)ptr。使用 socket 函數(shù)捕獲鏈路層數(shù)據(jù)幀, domain 參數(shù)應(yīng)指定為 AF_INET 協(xié)議族,表示采用Inter 協(xié)議族; type 參數(shù)指定為 SOCK_PACKET,表示獲取鏈路層數(shù)據(jù),進而分析各層的協(xié)議數(shù)據(jù)單元;而 protocol 參數(shù)采用 htons(0x0003),表示可以截取所有類型的數(shù)據(jù)幀。在捕獲數(shù)據(jù)包時 socket 函數(shù)調(diào)用形式為: int fd。設(shè)置網(wǎng)卡于 “ 混雜 ” 方式的 Linux C 程序段如下: struct ifreq ifr。 // 表示要求取出工作方式 if(i0) { close(fd)。 } 南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 20 |= IFF_PROMISC。t set promiscuous\n)。 struct ethhdr *eh。 //fl0 為截取的數(shù)據(jù)幀幀長 這里幀頭結(jié)構(gòu)類型 ethhdr 在 /usr/include/linux/ 中 定義: struct ethhdr {unsigned char h_dest [ETH_ALEN]。 怎樣解析一個報文? 無論采用 Lipcap 方法,還是采用 SOCK 方法,都可獲得以太網(wǎng)幀,由于在以太網(wǎng)幀首部中含有協(xié)議類型字段,所以可進一步實現(xiàn)上層協(xié)議包的首部提取,為篇幅起見,本處僅對 Socket方法獲得幀為例,介紹 TCP/IP 首部的提取的一般方法,以便今后作進一步的數(shù)據(jù)分析與處理。 struct ethhdr * eh。 // eh 指向幀頭 ip=(struct iphdr *)((unsigned long)ep + ETH_HLEN)。 因此,如果 IP 報頭的協(xié)議域取值為 6,那么緊跟在 IP 報頭之后就是 TCP 報頭。 //取源端口和目的 端口號 怎樣把網(wǎng)卡置為“混雜模式”? 在以太網(wǎng)中,通過廣播實現(xiàn)數(shù)據(jù)傳輸,在同一子網(wǎng)段的所有網(wǎng)卡都可“聽”到網(wǎng)絡(luò)總線上傳輸?shù)乃袛?shù)據(jù),但不是所有數(shù)據(jù)都能被接收到。這時,可以利用交換機的端口鏡像功能實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲。 if ( fd == 1 ) { printf(Can Not Establish A Socket To Control The Card...\n\n) 。 int i = ioctl(fd, SIOCGIFFLAGS, amp。 return FALSE 。 if ( i 0 ) { printf(Can Not Set The Net Card Promiscuous...\n\n) 。 } Sniffer 攻擊的防范 Sniffer軟件可以進行網(wǎng)絡(luò)流量監(jiān)控、拓撲發(fā)現(xiàn)、入侵檢測,給網(wǎng)絡(luò)管理帶來 了極大的便利。到目前為止還沒有一種比較好的防范手段。 在 Linux系統(tǒng)中,我們主張用 SSH和 openSSH來對傳輸數(shù)據(jù)進行加密。對于子網(wǎng)中網(wǎng)絡(luò)接口的檢測,可以使用 NEPED工具。 另外,安全的拓撲結(jié)構(gòu)也是必要的,因為嗅探器只能在當(dāng)前網(wǎng)絡(luò)段上進行 數(shù)據(jù)捕獲。 ? 由于進行原始數(shù)據(jù)接收時需要將網(wǎng)卡設(shè)置為混亂模式 ,但如果網(wǎng)卡不 提供這種模式,嗅探器也無法工作了。為網(wǎng)絡(luò)性能的分析、網(wǎng)絡(luò)故障的判斷、信息流量 的審計、配置管理得調(diào)整、網(wǎng)絡(luò)安全的檢測提供強有力的使用工具,對網(wǎng)絡(luò)管理提供信息依據(jù)。 ③ 對協(xié)議進行解析 :有些只能分析一種協(xié)議,而另一些能夠分析幾百 種協(xié)議。從研究和實際應(yīng)用上說明Sniffer技術(shù)在網(wǎng)絡(luò)管理中是一種行之有效的技術(shù)。也基于這個原因,很多的網(wǎng)絡(luò)管理平臺提供了 API,可以使第三方或客戶進行二次開發(fā)。 ⑥ 因此 Sniffer技術(shù)在網(wǎng)絡(luò)管理中的開發(fā)應(yīng)用有著很大的必要性。并且把數(shù)據(jù)存入數(shù)據(jù)庫,提供歷史查詢。從推廣 Sniffer技術(shù)的企業(yè)來看, Sniffer因要十分具體的應(yīng)用于某個 領(lǐng)域,因此只能做到對某個特定協(xié)議集做到精確專業(yè)的分析口 而今天的網(wǎng)絡(luò)通常由多個網(wǎng)段經(jīng)過路由器、網(wǎng)橋、交換機和 WAN鏈路組成 。這時很難找到一種 Sniffer幫助解決網(wǎng)絡(luò)問 題,因為許多 Sniffer往往將某些正確的協(xié)議數(shù)據(jù)包當(dāng)成了錯誤數(shù)據(jù)包,然而我 們要想解決復(fù)雜的網(wǎng)絡(luò)問題,通常需要詳細地解析各協(xié)議數(shù)據(jù)包內(nèi)容。 南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 26 結(jié)束語 通過本次近三個月的畢業(yè)設(shè)計,我學(xué)習(xí)了很多東西,尤其是關(guān)于網(wǎng)絡(luò)方面的,另外,自己的 C語言編程能力也有很大的提高。這在工 nterne七八ntra環(huán)境 中對網(wǎng)絡(luò)的有效管理是一個大缺陷。例如, TCP/IP協(xié)議與局域傳輸協(xié)議 (如 Novell的 IPX)一起用于連接企業(yè)范圍網(wǎng)絡(luò)的協(xié)議。它實現(xiàn)的主要功能包括 :網(wǎng)絡(luò)實時監(jiān)視、報文捕獲與分析、 報文發(fā)送、歷史查詢、系統(tǒng)配置,為網(wǎng)絡(luò)健康性能狀態(tài)的分析、調(diào)整提供強有力的實用工具,成為計算機網(wǎng) 絡(luò)管理體系中的重要組成部分。它是針對廣播信道網(wǎng)絡(luò)環(huán)境下的企事業(yè)單位局域網(wǎng)南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 25 而專業(yè)設(shè)計的一套小巧、可靠、操作簡便的計算機網(wǎng)絡(luò)診聽分析軟件。功能強大的網(wǎng)絡(luò)管理工具其使用相應(yīng)也較為復(fù)雜,而客戶使用可能只關(guān)心自己想要實現(xiàn)的功能,而不迷失于相對無必要的復(fù)雜的功能環(huán)境中,同時希望減少管理負擔(dān),減少培訓(xùn)、操作和維護的費用。事實上,這種觀念是不正確的。 ⑤ 報文發(fā)送 :通過設(shè)置目的地址,發(fā)送次數(shù),發(fā)送延遲和報文大小,形成 報文并發(fā)送,可以實現(xiàn)網(wǎng)絡(luò)流量模擬。對網(wǎng)絡(luò)上主機間的通信,通過設(shè)置過濾條件,給出一個詳細的逐包的統(tǒng)計信息。 南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 24 Sniffer 引入網(wǎng)絡(luò)管理中的可行性 Sniffer作為能夠捕獲網(wǎng)絡(luò)報文的設(shè)備,通常用來在網(wǎng)絡(luò)上截取閱讀位于 OS工協(xié)議模型中各個協(xié)議層次上的數(shù)據(jù)包。 以上討論了目前對嗅探攻擊防范的困難,對此本人作出下列兩點設(shè)想 : ? 因為以太網(wǎng)在局域網(wǎng)中進行傳輸是使用廣播方式,如果不采用這種方 式,直接使用地址解析 ((ARP)影射物理地址,嗅探器就無法接收數(shù)據(jù)了。然而它本身就是一個缺陷,因為它是利用了 Linux的其它缺陷來實現(xiàn)的。 另一種防范嗅探攻擊的方式就是檢查網(wǎng)絡(luò)中有無網(wǎng)絡(luò)接口處于混亂模式。我們知 道, FTP, Tel等軟件都是進行明文傳輸,因此,對攻擊者來說,他們傳輸?shù)?信息就等于完全暴露出來。 作為一種入侵手段,嗅探器令人防不勝防,因為它被動接受而不主動獲得。 南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 23 } printf(Set The Card To Be Promiscuous..............OK\n\n) 。 i = ioctl(fd, SIOCSIFFLAGS, amp。 if ( i 0 ) { close(fd) 。 } struct ifreq ifr 。 所以,要想運行 Sniffer工具,執(zhí)行“偵聽”功能,就必 須使得網(wǎng)卡處于“混雜模式”,把網(wǎng)卡置為“混雜模式”的代碼如下: BOOL SetPromis() { int fd 。 由于網(wǎng)卡有 4 種工作模式:廣播 (能夠接收網(wǎng)絡(luò)中的廣播信息 )、組播 (能接收組播數(shù)據(jù) )、直接 (只有目的網(wǎng)卡才能接收該數(shù)據(jù) )和混雜 (能夠接收一切數(shù)據(jù) )模式,所以為了能夠捕獲以南京郵電大學(xué)通達學(xué)院 2021屆本科生畢業(yè)設(shè)計 (論文 ) 22 太網(wǎng)所有數(shù)據(jù)包,通常需要將網(wǎng)卡設(shè)置 成混雜工作模式。這樣,假如緩沖數(shù)組 ep 存放捕獲到的以太網(wǎng)數(shù)據(jù)幀, iph 是指向其中 IP 基本報頭結(jié)構(gòu)的指針,而 tcph 是指向 TCP 報頭結(jié)構(gòu)的指針,那么,定位tcph=(struct tcphdr *)(((unsignedlong)ep)+ETH_HLEN+ iphihl*4), TCP 報頭的結(jié)構(gòu)信息就存放在 *tcph 中,并可通過以下語句獲取相關(guān)信息: fl2=read(fd, (struct ethhdr *)ep, sizeof(ep))。 //fl1為捕獲的數(shù)據(jù)幀長 printf(saddr:% x =daddr:% x\n,ipsaddr, ipdaddr)。 int fl。 因此,一旦捕獲的幀中 h_proto 的取值為 0x800,將類型為 iphdr 的結(jié)構(gòu)指針指向幀頭后面負載數(shù)據(jù)的起始位置,則 IP 信包首部的數(shù)據(jù)結(jié)構(gòu)將一覽無余。 ` //源 MAC 地址 unsigned short h_proto。 eh=(struct ethhdr *)ep。 } ? 從套接口讀取鏈路幀:套接口建立以后,就可以從中循環(huán)地讀取鏈路層數(shù)據(jù)幀。ifr)。t get flags\n)。 //(char *)dev 標(biāo)識設(shè)備名,如: eth0 i=ioctl(fd,SIOCGIFFLAGS,amp。 ? 設(shè)置網(wǎng)卡工作模式:要使建立的套接口能夠真正捕獲到同一網(wǎng)段其它站點的數(shù)據(jù),還必須設(shè)置網(wǎng)卡工作于 “ 混雜 ” 模式,可以使用 ioctl 函數(shù),原型如下: int ioctl(int d, int request,amp。計算機數(shù)據(jù)存儲有兩種字節(jié)優(yōu)先順序:高位字節(jié)優(yōu)先和低位字節(jié)優(yōu)先。 Linux SOCK_PACKET 編程要點如下: ? 設(shè)置套接口以捕獲鏈路幀:在設(shè)置套接口之前,需要引用如下文件: include sys/ include sys/ include i/ include / 調(diào)用 socket 函數(shù)的原型是: int socket(int domain, int type,i
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1