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

正文內(nèi)容

基于winpcap數(shù)據(jù)抓取系統(tǒng)-大學(xué)學(xué)位論文范文模板參考資料-閱讀頁(yè)

2024-12-26 05:44本頁(yè)面
  

【正文】 ( NDIS 或更高版本) 用戶級(jí) NPF 過濾器GUOLVQI 網(wǎng)絡(luò)分流器 數(shù)據(jù)包 網(wǎng)絡(luò) 內(nèi)核級(jí) 網(wǎng)絡(luò) ?? 15 數(shù)據(jù)包給應(yīng)用程序 。 NPF數(shù)據(jù)包過濾器更復(fù)雜一些,因?yàn)樗粌H決定數(shù)據(jù)包是否應(yīng)該被保存,而且還得決定要保存的字節(jié)數(shù)。 ( 2) 虛擬處理器,可以執(zhí)行偽匯編書寫的用戶級(jí)過濾程序,應(yīng)用程序采用用戶定義的過濾器并使用 將它們編譯進(jìn) BPF 程序。這樣,對(duì)于每一個(gè)到來的數(shù)據(jù)包該程序都將被執(zhí)行,而滿足條件的數(shù)據(jù)包將被接收。由于性能的原因,在使用過濾器前,NPF 提供一個(gè) JIT 編譯器將它轉(zhuǎn)化成本地的 80x86 函數(shù)。 2) 動(dòng)態(tài)鏈接庫(kù)模塊, 為 win32 平臺(tái)提供了一個(gè)較低層的編程接口,使用它就可以調(diào)用 Winpcap 函數(shù)。在運(yùn)行時(shí),只有當(dāng) EXE 程序確實(shí)要調(diào)用這些 DLL 模塊的情況下,系統(tǒng)才會(huì)將它們裝載到內(nèi)存空間中。當(dāng)應(yīng)用程序卸載 DLL 時(shí),計(jì)數(shù)則減少,計(jì)數(shù)為 O 時(shí) DLL 就從內(nèi)存被釋放。 直接映射了內(nèi)核的調(diào)用,不同版本的 windows 系統(tǒng)都有自己的內(nèi)核模塊和用戶層模塊 , 用于解決這些不同。 還包含了其他一些函數(shù)使它可以 基于 Winpcap 的網(wǎng)絡(luò)數(shù)據(jù)捕獲和分析系統(tǒng)的研究和實(shí)現(xiàn) 一些底層的操作,如 :獲取網(wǎng)絡(luò)適配器名或動(dòng)態(tài)的加載驅(qū)動(dòng)程序。 和 NPF 都依賴于操作系統(tǒng),并且由于 windows95/98和 windowsNT/2021之 間 結(jié)構(gòu)的不 同而在不同版本的操作系統(tǒng)上有所不同。它提供了更加高層、抽象的函數(shù)。但它包含了一些其它高層的函數(shù),比如 :過濾器生成器、用戶定義的緩沖區(qū)和高層特性 (數(shù)據(jù)統(tǒng)計(jì)和構(gòu)造數(shù)據(jù)包 )。另一套是 提供的高層函數(shù),這些函數(shù)提供了更加友好、功能更加強(qiáng)大的調(diào)用,用戶也更容易掌握。往往一個(gè)“高層“調(diào)用會(huì)被譯成幾個(gè) NPF 系統(tǒng)調(diào)用。 windows 下 BPF 與 NDIS 依賴關(guān)系 Win32 網(wǎng)絡(luò)結(jié)構(gòu)是基于 NDIS 的。 BSD 在所有協(xié)議之前執(zhí)行了捕獲包系統(tǒng) :BPF 通過網(wǎng)卡驅(qū)動(dòng)直 接被調(diào)用,并且它需要 NIC 設(shè)備驅(qū)動(dòng)適應(yīng)一些稱為“ BPF驅(qū)動(dòng)規(guī)范”的程序。當(dāng)創(chuàng)建一個(gè) winpcap 捕獲包的程序,這種解決方案是完全不可能的實(shí)現(xiàn),這是因?yàn)閃indows 沒有與 BPF 驅(qū)動(dòng)規(guī)范相似的接口,而且 windows 也不允許對(duì)操作系統(tǒng)和 NIC進(jìn)行修改。因?yàn)镹DIS 沒有將 NPF 與底層完全隔離,所以它不自動(dòng)支持不同類型媒體 。 Winpcap 數(shù)據(jù)結(jié)構(gòu)和主要功能函數(shù) Winpcap 的數(shù)據(jù)結(jié)構(gòu) 及自定義類型 由于 Winpcap 的設(shè)計(jì)是基于 Libpcap的,所以它使用了與 Libpcap 相同的數(shù)據(jù)結(jié)構(gòu),這里 介紹幾個(gè) Winpcap 核心的數(shù)據(jù)結(jié)構(gòu)。 /*指向下一個(gè)地址節(jié)點(diǎn) */ struct sockaddr *addr。 /*掩碼 */ struct sockaddr *broadaddr。 /*目標(biāo)地址 */ } (2)Winpcap存儲(chǔ)文件類型 struct pcap_file_header{ bpf_u_int32 magic。 /*主版本號(hào) */ u_short version_minor。 /*區(qū)域時(shí)間 */ bpf_int32 sigfigs。 /*捕獲長(zhǎng)度 */ bpf_int32 linktype。 /*下一個(gè)網(wǎng)絡(luò)接口節(jié)點(diǎn) */ char *name。 /*描述信息 */ struct pcap_addr *address。 /*標(biāo)記 */ } (4)捕獲的數(shù)據(jù)包基本信息 struct pcap_pkthdr{ struct timevalts。 /*捕獲長(zhǎng)度 */ bpf_u_int32 len。 /*捕獲到的數(shù)據(jù)包的個(gè)數(shù) */ u_int ps_drop。 /*未用 */ ifdef WIN32 u_int ba_capt。 構(gòu)造一個(gè)可打開的網(wǎng)絡(luò)設(shè)備列表 ( 2) int pcap_freealldevs()。 用于打開一個(gè)網(wǎng)絡(luò)接口進(jìn)行數(shù)據(jù)包捕獲 ( 4) u_char * pcap_next()。 功能是獲得本機(jī)的網(wǎng)絡(luò)接口 ( 6) int pcap_lookup()。 功能是 (循環(huán) )獲取網(wǎng)絡(luò)數(shù)據(jù)包 ( 8) void pcap_dump()。 功能是獲取數(shù)據(jù)鏈路層類型,如 10M 以太網(wǎng)、SLIP、 PPP、 FDDI、 ATM、 等 ( 10) void pcap_close()。用戶分析部分負(fù)責(zé)界面、數(shù)據(jù)轉(zhuǎn)化與處理、格式化、協(xié)議分析等。 Winpcap 的安裝和 環(huán)境搭建 ( 1) 下載 winpcap 及開發(fā)包 ? winpcap 下載地址: ? winpcap 開發(fā)包: 打開網(wǎng)絡(luò)設(shè)備 pcap_open_live() 指定要監(jiān)視的網(wǎng)絡(luò)設(shè)備 捕獲并處理 While (pcap_next()) 釋放列表 pcap_freealldevs() 無指定設(shè)備 開始 結(jié)束 N Y 獲得設(shè)備列表 pcap_findalldevs() 圖 1 系統(tǒng)流程圖 20 基于 winpcap數(shù)據(jù)抓取、分析軟件系統(tǒng) ( 2) 安裝 winpcap ( 3) 解壓 WpdPack 開發(fā)包,將得到一個(gè) WpdPack 目錄,該目錄 中包含了 5個(gè)子目錄: docs、 Examplespcap、 Examplesremote、 Include 和 Lib。 其中 name 和 description 這兩項(xiàng)分別包含了相應(yīng)設(shè)備的名稱和描述,取得網(wǎng)卡列表后就在屏幕上顯示出來,如果網(wǎng)卡沒有被發(fā)現(xiàn)就顯示有關(guān)錯(cuò)誤, pcap_findalldevs()同其他的 libpcap 函數(shù)一樣有一個(gè) errbuf 參數(shù),當(dāng)有異常情況發(fā)生時(shí),這個(gè)參數(shù)會(huì)被 pcap 填充為某個(gè)特定的錯(cuò)誤字串。 //用于存儲(chǔ)網(wǎng)卡信息 char errbuff[PCAP_ERRBUF_SIZE]。pdevs,errbuff) != 0) //獲得本地網(wǎng)卡列表 { printf(發(fā)生錯(cuò)誤: %s\n,errbuff)。 } ?????????????? pcap_freealldevs(pdevs)。它的函數(shù) 實(shí)現(xiàn) 如下 : //打開設(shè)備 if ( (adhandle= pcap_open_live(dname, //設(shè)備名 65536, // 捕捉完整的數(shù)據(jù)包 1 , // 混雜模式 1001, // 讀入超時(shí) errbuf // 錯(cuò)誤緩沖 ) ) == NULL) { //打開設(shè)備失敗 ???????????? } else { ???????????? } 捕獲數(shù)據(jù)包 打開網(wǎng)絡(luò)適配器后就開始捕獲數(shù)據(jù)包 , 捕獲方式有兩種 :一是以回調(diào)的方式,在底層收集數(shù)據(jù)包,當(dāng)滿足一定的條件 (超時(shí)或者緩沖區(qū)滿 ),就調(diào)用回調(diào)函數(shù),把22 基于 winpcap數(shù)據(jù)抓取、分析軟件系統(tǒng) 收集到的原始數(shù)據(jù)包交給用戶,他們返回的數(shù)據(jù)緩沖區(qū)包含多個(gè)包 。捕獲的數(shù)據(jù)都是最原始的數(shù)據(jù)包,即包含數(shù)據(jù)鏈路層的數(shù)據(jù) 頭。在這些情況下使用循環(huán)調(diào)用 pcap_next()來接受數(shù)據(jù)報(bào)會(huì)更容易理解, 當(dāng)然也可以用pcap_next_ex()來接受數(shù)據(jù)包。首先,它的效率不高,因?yàn)樗m然隱藏了回調(diào)模式但是仍然依賴于pcap_dispatch()。 這個(gè)函數(shù)的參數(shù)和回調(diào)函數(shù) pcap_loop()的一樣由是一個(gè)網(wǎng)絡(luò)適配器描述符作為入口參數(shù)和兩個(gè)指針作為出口參數(shù),這兩個(gè)指針將在函數(shù)中被初始化,然后再返回給用戶 (一個(gè)指向 pcap_pkthdr 結(jié)構(gòu),另一個(gè)指向一個(gè)用作數(shù)據(jù)緩沖區(qū)的內(nèi)存區(qū)域 )。 //數(shù)據(jù)捕獲句柄 int res。 //pcap 給出的指向數(shù)據(jù)包包頭的指針 u_char *pkt_data。header, amp。由于網(wǎng)絡(luò)數(shù)據(jù)通信是要在相互公開協(xié)議的前提下對(duì)等進(jìn)行的,所以對(duì)數(shù)據(jù)包 進(jìn)行協(xié)議的分析在原理上是可行的。本 論 文要研究的 Libpcap 和 winPcap 不但能夠捕獲網(wǎng)絡(luò)上的數(shù)據(jù)包,還由于其本身就是基于 BPF 包過濾機(jī)制的,所以它們同樣具有數(shù)據(jù)包的過濾功能。 網(wǎng)絡(luò)協(xié)議分析技術(shù)除了應(yīng)用到對(duì)捕獲的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行分析得到數(shù)據(jù)包的協(xié)議內(nèi)容外,還可以應(yīng)用到網(wǎng)絡(luò)流量統(tǒng)計(jì)、網(wǎng)絡(luò)監(jiān)視、網(wǎng)絡(luò)入侵檢測(cè)、網(wǎng)絡(luò)安全掃描等,可見網(wǎng)絡(luò)協(xié)議分析是網(wǎng)絡(luò)數(shù)據(jù)捕獲技術(shù)之后的各種網(wǎng)絡(luò)安全策略的基礎(chǔ)。需要關(guān)注的是幀的格式,解析的過程是將數(shù)據(jù)幀中的數(shù)據(jù)按不同協(xié)議進(jìn)行分析提取?,F(xiàn)在最常用的 MAC幀是 V2 格式,這個(gè)也是本課題所要研究的格式。 (l)以太網(wǎng)數(shù)據(jù)結(jié)構(gòu) typedef struct ether_header { u_int8_t ether_daddr[6]。 //源地址 u_int16_t ether_type。 目的地址 源地址 類型 數(shù)據(jù) CRC 類型 0800 IP 數(shù)據(jù)包 6 6 2 461500 字節(jié) 4 字節(jié) 2 461500字節(jié) 圖 2 以太網(wǎng)封裝格式 24 基于 winpcap數(shù)據(jù)抓取、分析軟件系統(tǒng) (2)IP 協(xié)議數(shù)據(jù)結(jié)構(gòu) /* IPv4 首部 */ typedef struct ip_header{ u_char ver_ihl。 // 服務(wù)類型 (Type of service) u_short tlen。 // 標(biāo)識(shí) (Identification) u_short flags_fo。 // 存活時(shí)間 (Time to live) u_char proto。 // 首部校驗(yàn)和 (Header checksum) in_addr saddr。 // 目的地址 (Destination address) u_int op_pad。 (3)UDP 協(xié)議數(shù)據(jù)結(jié)構(gòu) /* UDP 首部 */ typedef struct udp_header{ u_short sport。 // 目的端口 (Destination port) u_short len。 // 校驗(yàn)和 (Checksum) }udp_header。 //16 位源端口 u_short dport。 //32 位序列號(hào) u_int ack。 //4 位首部長(zhǎng)度 /4位保留字 25 u_char flag。 //16 位窗口大小 u_short sum。 //16 位緊急數(shù)據(jù)偏移量 }tcp_header。 //8 位類型 u_char code。 //16 位校驗(yàn)和 u_short id。 //報(bào)文序列號(hào) u_int timestamp。 注:要分析不同的以太網(wǎng)協(xié)議,首先要根據(jù)不同數(shù)據(jù)包的 封裝格式定義相應(yīng)的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),然后在程序中通過判斷和匹配來確定不同的數(shù)據(jù)包是屬于什么協(xié)議 。在定義了不同的網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)結(jié)構(gòu)之后, Analyse()用這些定義好的結(jié)構(gòu)來定位數(shù)據(jù)包頭部的各種字段,經(jīng)過 switch 語句的判斷就可以確定協(xié)議的類型 。 CString temp。 //以太網(wǎng)幀報(bào)頭指針 struct ip_header *iph。 //UDP 幀報(bào)頭指針 26 基于 winpcap數(shù)據(jù)抓取、分析軟件系統(tǒng) struct tcp_header *tch。 //ICMP 幀報(bào)頭指針 char mac_addr[19]。 u_int ip_len。 eth=(struct ether_header *)data。 sprintf(mac_addr,%02X:%02X:%02X:%02X:%02X:%02X,*mac_string,*(mac_string+1),*(mac_string+2),*(mac_string+3),*(mac_string+4),*(mac_string+5))。 mac_string=ethether_daddr。 AnalyseStr+=(CString)目的 MAC 地址 :+mac_addr+(CString)\r\n。 AnalyseStr+=IP 包 \r\n。 AnalyseStr+=
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1