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

正文內(nèi)容

網(wǎng)絡(luò)工程-windows下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析(編輯修改稿)

2025-01-11 01:48 本頁面
 

【文章內(nèi)容簡介】 是一個獨立于操作系統(tǒng)的訪問數(shù)據(jù)鏈路層的方法,主要用于讀取數(shù)據(jù)鏈路層的數(shù)據(jù), 它支持 BPF, DLPI 以及 SOCK_PACKET。 Libpcap 的工作過程如圖 33 所示,它是通過調(diào)用相應(yīng)的庫函數(shù)來實現(xiàn)的,步驟如下: 圖 33 libpcap 的工作過程 (1)查找網(wǎng)絡(luò)設(shè)備 (pcap_lookupdev)。 (2)獲取網(wǎng)絡(luò)地址及網(wǎng)絡(luò)掩碼 (pcap_lookup)。 (3)打開網(wǎng)絡(luò)設(shè)備 (pcap_open_live)。 (4)將過濾字符串編譯到過濾程序中 (pcap_pile)。 (5)設(shè)置過濾器 (pcap_setfilter)。 (6)開始捕獲包 (pcap_dispatch)。 查找網(wǎng)絡(luò)設(shè)備時,如果有多個接口,將自動選擇序號最小的接口,如果要指定接口,可以把接口名直接傳給應(yīng)用程序;打開網(wǎng)絡(luò)設(shè)備時,通過傳遞函數(shù)參數(shù)可將網(wǎng)卡查找有效的網(wǎng)絡(luò)設(shè)備 獲得網(wǎng)絡(luò)地址及網(wǎng)絡(luò)掩碼 打開網(wǎng)絡(luò)設(shè)備 設(shè)置過濾器 捕獲包 將用戶輸入的字符串編譯到過濾程序中 緩沖滿? 退出 顯示捕獲的包 N Y Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 8 設(shè)置為混雜模式;過濾字符串表達(dá)了過濾規(guī)則,它的格式與 Tcpdump 使用的相同。以上列出的只是幾個重函數(shù),函數(shù)原型可查看相關(guān)文獻(xiàn)。 三、 winpcap 工作原理 winpcap 是 libpcap 在 windows 下的版本,它們具有相同的接口,程序員只需要調(diào)用相應(yīng)的函數(shù)。 Winpcap 的結(jié)構(gòu)如圖 34 所示,數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動程序直接從數(shù)據(jù)鏈路層取得網(wǎng)絡(luò)數(shù)據(jù)包,且不加修改地傳遞給運行在用戶層的應(yīng)用程序,低級的動態(tài)鏈接庫運行在用戶層,它把應(yīng)用程序和數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū)動隔離開來,使得應(yīng)用程序可以不加修改地在不同的 windows 系統(tǒng)上運行。著名的網(wǎng)絡(luò)入侵檢測系統(tǒng) snort 的windows 版是通過它來捕獲數(shù)據(jù)。 圖 34 winpcap 的結(jié)構(gòu) 四、 Jpcap 工作原理 Jpcap 是一個 java 類庫,它使 java 應(yīng)用程序能捕獲和發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包。 Jpcap 是基于 libpcap、 winpcap 和原始套接字的,所以它能夠工作于安裝有 libpcap 和 winpcap的任何操作系統(tǒng)上。基于移動代理的入侵檢測系統(tǒng)可用 Jpcap 獲取檢測數(shù)據(jù)源。 五、 Winsock 工作原理 Socket[6]在英文中試插座的意思,他的設(shè)計者實際上是暗指電話插座。因為在Socket 環(huán)境下編程很想事模擬打電話, Inter 的 IP 地址就是電話號碼,要打電話,需要電話插座,在程序中就是向 系統(tǒng)申請已個 Socket,以后兩臺機(jī)器上的程序“交談”應(yīng)用程序 高級靜態(tài)鏈接庫 高級靜態(tài)鏈接庫 數(shù)據(jù)包監(jiān)聽設(shè)備驅(qū) 動程序 協(xié)議棧 用戶層 內(nèi)核層 數(shù)據(jù)包 Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 9 都是通過這個 Socket 來進(jìn)行的。對程序員來說,也可以把 Socket 看成一個文件指針,只有向指針?biāo)傅奈募x寫數(shù)據(jù),就可以實現(xiàn)雙向通信。利用 Socket 進(jìn)行通信,有兩種主要的方式。第一種是面向連接的流方式。顧名思義,在這種方式下,兩個通信的應(yīng)用程序之間先要建立一種連接鏈路,其過程好像在打電話。一臺計算機(jī)(電話)要想和另一臺計算機(jī)(電話)進(jìn)行數(shù)據(jù)傳輸(通話),必須首先獲得一條鏈路,只有確定了這條通路之后,數(shù)據(jù)(通話)才能被正確接收和發(fā)送。這種法師對應(yīng)的是 TCP( Transport Control Protocol)協(xié)議。第二種叫做無連接的數(shù)據(jù)報文方式,這時兩臺計算機(jī)像是把數(shù)據(jù)放在一個信封里,通過網(wǎng)絡(luò)寄給對方,信在傳送的過程中有可能殘缺不全,而且后發(fā)出的信也有可能會先收到,它對應(yīng)的是 UDP( User Datagram Protocol)協(xié)議。流方式的特點是通信可靠,對數(shù)據(jù)有校驗和重發(fā)的機(jī)制,通常用來做數(shù)據(jù)文件的傳輸如 FTP、 Tel 等;數(shù)據(jù)報文方式由于取消了重發(fā)校驗機(jī)制,能夠達(dá)到較高的通信速率,可以用于對數(shù)據(jù)可靠性要求不高的通信,如實時的語音、圖像傳送和廣 播消息等。 在 ISO 的 OSI 網(wǎng)絡(luò)七層協(xié)議中, Winsock 主要負(fù)責(zé)的是控制數(shù)據(jù)的輸入和輸出,也就是傳輸層和網(wǎng)絡(luò)層。 Winsock 屏蔽了數(shù)據(jù)鏈路層和物理層,它的出現(xiàn)給 Winsock下的網(wǎng)絡(luò)編程帶來了巨大的變化。 Winsock 技術(shù)的出現(xiàn),極好的屏蔽了網(wǎng)絡(luò)底層復(fù)雜的結(jié)構(gòu)和協(xié)議,因此基于Winsock 的網(wǎng)絡(luò)應(yīng)用程序可以在不同類型的網(wǎng)絡(luò)上運行。這些優(yōu)點,是 Winsock 成為網(wǎng)絡(luò)編程的最流行技術(shù),所以,本文中的實例就是用 Winsock 技術(shù)完成的。 Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 10 第四章 Windows 下數(shù)據(jù)包捕獲與分析的具體實現(xiàn) 根據(jù)前面的設(shè)計思 路,不難寫出數(shù)據(jù)包捕獲模塊的實現(xiàn)代碼,下面就給出一個簡單的實例,該實例可以捕獲到所有經(jīng)過本地網(wǎng)卡的數(shù)據(jù)包,并可從中分析出協(xié)議、 IP源地址、 IP 目標(biāo)地址、 TCP 源端口號、 TCP 目標(biāo)端口號以及數(shù)據(jù)包長度等信息。由于前面已經(jīng)將程序的設(shè)計流程講述的比較清楚了,因此在這里就不在贅述了,下面就結(jié)合注釋對程序的具體實現(xiàn)進(jìn)行講解,同時為了程序的清晰可見,去掉了錯誤檢查等保護(hù)性代碼。主要代碼實現(xiàn)清單為: //創(chuàng)建原始套接字 m_s = socket( AF_INET , SOCK_RAW , IPPROTO_IP ) 。 //得到本機(jī)名 gethostname(szHostName, sizeof(szHostName)) 。 //得到 IP 地址表 GetIpAddrTable(NULL,amp。dwSize,FALSE)。 //填充 SOCKADDR_IN 結(jié)構(gòu) =*(in_addr *)pHosth_addr_list[0]。 //IP =AF_INET。 =htons(57274) //把原始套接字 Sock 綁定到本地網(wǎng)卡地址上 bind(m_s,(PSOCKADDR)amp。sa, sizeof(sa)) //dwValue 為輸入輸出參數(shù),為 1 時執(zhí)行, 0 時取消 DWORD dwValue=1; //設(shè)置 SOCK_RAW 為 SIO_RCVALL,以便接收所有的 IP 包。其中 SIO_RCVALL的定義為: define SIO_RCVALL_WSAIOW(IOC_VENDOR,1) ioctlsocket(sock,SIO_RCVALL,amp。dwValue)。 前面的工作基本上都是對原始套接字進(jìn)行設(shè)置,在將原始套接字設(shè)置完畢,使其能按預(yù)期目的工作 時,就可以通過 recv()函數(shù)從網(wǎng)卡接受數(shù)據(jù)了,接受到的原始數(shù)據(jù)Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 11 包存放在緩存 RecvBuff[]中,緩沖區(qū)長度 BUFFER_SIZE 定義為 65535。然后就可以根據(jù)前面對 IP 數(shù)據(jù)段頭、 TCP 數(shù)據(jù)段頭的結(jié)構(gòu)描述而對捕獲的數(shù)據(jù)包進(jìn)行分析。 第一節(jié) 網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊的實現(xiàn) 一、 數(shù)據(jù)包捕獲機(jī)制 一般數(shù)據(jù)包的傳輸路徑依次為網(wǎng)卡、設(shè)備驅(qū)動層、數(shù)據(jù)鏈路層、 IP 層、傳輸層、最后到達(dá)應(yīng)用程序。 IP 數(shù)據(jù)包的捕獲就是將經(jīng)過數(shù)據(jù)鏈路層的以太網(wǎng)幀拷貝出一個備份,傳送給 IP 數(shù)據(jù)包捕獲程序進(jìn)行相關(guān)的處理,圖 41 給出了 IP 數(shù)據(jù)包捕 獲的結(jié)構(gòu)框圖。 圖 41 IP 數(shù)據(jù)包捕獲結(jié)構(gòu)框圖 結(jié)構(gòu)框圖的右半部分為數(shù)據(jù)包的傳輸組件,由 TCP/IP 協(xié)議和應(yīng)用程序組成,完成將 IP 數(shù)據(jù)包封裝在數(shù)據(jù)鏈路層的以太網(wǎng)幀內(nèi),并向網(wǎng)絡(luò)媒介傳輸?shù)恼麄€封裝或分解的過程。結(jié)構(gòu)框圖的左半部分為數(shù)據(jù)包的捕獲組件,由數(shù)據(jù)包捕獲函數(shù)庫和數(shù)據(jù)包分析器組成,實現(xiàn)將數(shù)據(jù)鏈路層的以太網(wǎng)幀作拷貝、過濾、緩沖等相關(guān)處理,并對捕獲的數(shù)據(jù)包進(jìn)行分析處理的功能。 IP 數(shù)據(jù)包的捕獲程序一般由數(shù)據(jù)包捕獲函數(shù)庫和數(shù)據(jù)包分析器組成。數(shù)據(jù)包捕獲函數(shù) 庫是一個獨立于操作系統(tǒng)的標(biāo)準(zhǔn)捕獲函數(shù)庫。主要提供一組可用于查找網(wǎng)絡(luò)接口名稱、打開選定的網(wǎng)絡(luò)接口、初始化、設(shè)置包過濾條件、編譯過濾代碼、捕獲數(shù)據(jù)包等功能函數(shù)。對捕獲程序而言,只需要調(diào)用數(shù)據(jù)包捕獲函數(shù)庫的這些函數(shù)就能獲得所期望的 IP 數(shù)據(jù)包。這種捕獲程序與數(shù)據(jù)包捕獲函數(shù)庫分離的機(jī)制,使得程序具有建立網(wǎng)絡(luò)套接字 進(jìn)行循環(huán)捕獲 設(shè)置過濾條件 進(jìn)行網(wǎng)絡(luò)監(jiān)聽 調(diào)用回調(diào)函數(shù)處理數(shù)據(jù)包 Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 12 很好的可移植性。 IP 數(shù)據(jù)包捕獲程序的核心部分就是數(shù)據(jù)包分析器。數(shù)據(jù)包分析器應(yīng)具有識別和理解各種協(xié)議格式( IP、 TCP、 UCP、 ICMP 協(xié)議)和幀格式的能力,并對捕獲的數(shù)據(jù)進(jìn)行分析和統(tǒng)計處理。通常編寫數(shù)據(jù)包捕 獲程序的主要 工作就是如何實現(xiàn)數(shù)據(jù)包分析器的功能。對于以太網(wǎng)來說,數(shù)據(jù)包分析器根據(jù) Ether II 幀格式中定義的 Frame Type 字段,判斷 Ether II 幀所包含的數(shù)據(jù)包是什么類型( IP 數(shù)據(jù)包還是 ARP 數(shù)據(jù)包),如果是 IP 數(shù)據(jù)包,則數(shù)據(jù)包分析器再根據(jù) IP 數(shù)據(jù)包格式中定義的 Protocol 字段,判斷上層協(xié)議的類型。這樣,通過由下而上地逐步判斷分析,實現(xiàn)了數(shù)據(jù)包分析器對各種數(shù)據(jù)包和協(xié)議的識別理解 。 在局域網(wǎng)中捕獲所有的 IP 包,并對 IP 包進(jìn)行分析,是網(wǎng)絡(luò)流量測量和網(wǎng)絡(luò)管理的基礎(chǔ),許多網(wǎng)絡(luò)管理工具(如 SNIFFER 等)都是在局域網(wǎng)上通過捕獲 IP 數(shù)據(jù)包實現(xiàn)對網(wǎng)絡(luò)的分析。一些黑客軟件也常用此方法對網(wǎng)絡(luò)進(jìn)行竊聽與攻擊。如何實現(xiàn)對所有 IP 包的捕獲,在不同的操作系統(tǒng),有不同的方法,但其基本原理是一致的,即利用 Socket 進(jìn)行網(wǎng)絡(luò)編程。下面利用 Winsock 編程方法,通過建立鏈表和線程,實現(xiàn)對局域網(wǎng)上的所有 IP 包進(jìn)行高效的捕獲和分析。 二、 IP 數(shù)據(jù)包的捕獲方法 數(shù)據(jù)包的捕獲技術(shù)是依賴于以太網(wǎng)網(wǎng)卡的。網(wǎng)卡可以通過廣播監(jiān)聽到以太網(wǎng)絡(luò)上的數(shù)據(jù)包,這是數(shù)據(jù)包捕獲技術(shù)的基礎(chǔ)。但由于網(wǎng)卡一般有四種接收數(shù)據(jù)包的模式:即廣播模式 、組播模式、直接模式和混雜模式 (圖 42 為正常網(wǎng)卡的工作流程圖,圖43 為混雜模式下網(wǎng)卡的工作流程圖) ,這就產(chǎn)生了不同的捕獲方法。其中混雜模式是最主要的捕獲模式,在這種模式下的網(wǎng)卡能夠接收一切通過它的數(shù)據(jù),而不管該數(shù)據(jù)是否是傳給它的。通過將網(wǎng)卡設(shè)置為混雜模式使之可以接受目標(biāo)地址不是自己的MAC 地址的數(shù)據(jù)包,直接訪問數(shù)據(jù)鏈路層獲取數(shù)據(jù)包。 Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 13 圖 42 正常網(wǎng)卡的工作流程圖 圖 43 混雜模式下網(wǎng)卡的工 作流程圖 三、 數(shù)據(jù)捕獲模塊的實現(xiàn) 該模塊包括數(shù)據(jù)包實現(xiàn)從指定網(wǎng)卡獲取指定數(shù)據(jù)包的功能 , 并把捕獲到的數(shù)據(jù)包放到應(yīng)用程序指定的緩沖區(qū)內(nèi)。 利用 VC++[7]結(jié)合 Winsock 實現(xiàn)了數(shù)據(jù)包的抓取與顯示,包抓取模塊與顯示模塊均使用線程實現(xiàn) , 采用全局變量進(jìn)行數(shù)據(jù)共享,下面給出了包抓取線程的關(guān)鍵代碼。 //接受數(shù)據(jù) iRet=recv(pDlgm_s,buf,sizeof(buf),0)。 if( iRet == SOCKET_ERROR ) 合法端口 合法 IP 地址 合法 MAC 地址 數(shù)據(jù)包 不查看端口 不查看 IP 地址 不查看 MAC 地址 傳輸層 網(wǎng)絡(luò)層 物理層 鏈路層 數(shù) 據(jù) 全 部 被 完 整 捕 獲 合法端口 合法 IP 地址 合法 MAC 地址 數(shù)據(jù)包 丟棄 丟棄 丟棄 傳輸層 網(wǎng)絡(luò)層 物理層 鏈路層 YES YES NO YES Windows 下實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲與分析 14 { dwErr = WSAGetLastError() 。 sprintf( szErr , Error recv() = %ld , dwErr ) 。 continue 。 } else if( *buf ) { bufwork = buf 。 //獲取 IP 包的頭 pIpHeader = (IPHEADER *)bufwork 。 WORD iLen = ntohs(pIpHeadertotal_len) 。 while( TRUE ) { if( iLen = iRet ) { = pIpHeadersourceIP。 //獲取源地址 pSource = i_ntoa( ina ) 。 strcpy( szSource , pSource ) 。 = pIpHeaderdestIP。 //獲取目標(biāo)地址 pDest = i_ntoa( ina ) 。 strcpy( szDest , pDest ) 。 CString str, strProto, strSourPort, strDestPort, strData, s
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1