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

正文內(nèi)容

畢業(yè)設(shè)計:一個網(wǎng)絡(luò)嗅探工具的開發(fā)(參考版)

2024-12-07 17:50本頁面
  

【正文】 其中“ \\” 為文件路途和文件名, “ \\”表示 為當前目錄 。 (3)在 MFC 中添加一個 幫助 菜單, 并 加 如 相應的響應函數(shù)。 其具體步驟如下: (1)用 Word 編輯好幫助文檔,并保存為網(wǎng)頁格式, 當然,也可以用其它軟件來編輯網(wǎng)頁 。 其流程圖如 圖 : 圖 數(shù)據(jù)包分析模塊流程圖 其它 模塊設(shè)計 作為一個完整的程序,必需有相關(guān)的幫助說明。這是因為捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包是一個數(shù)據(jù)幀,其中最外層的協(xié)議是鏈路層協(xié)議,然后分別是網(wǎng)絡(luò)層,傳輸層和應用層。 根據(jù)前面的設(shè)計思路 , 對網(wǎng)絡(luò)數(shù)據(jù)包的解碼分析,必 須從鏈路層開始分析。 表 53 數(shù)據(jù)包總體結(jié)構(gòu) 數(shù)據(jù)包 IP 頭 信息頭(如 TCP 頭、 UDP 頭等) 數(shù)據(jù) 太網(wǎng) V2標準 的主要特點是通過類型域標識了封裝在幀里的數(shù)據(jù)包所采用的協(xié)議,類型域是一個有效的指針,通過它,數(shù)據(jù)鏈路層就可以承載多個上層(網(wǎng)絡(luò)層)協(xié)議。 數(shù)據(jù)包的總體結(jié)構(gòu) 如 表 53所示,因為數(shù)據(jù)發(fā)送時從協(xié)議棧的高層到底層, 會在每一層根據(jù)所使用的不同協(xié)議添加不同的數(shù)據(jù)頭,所以通常在底層直接截獲得到的數(shù)據(jù)包內(nèi),會有不止一個的協(xié)議頭。 IP 數(shù)據(jù)報的第 4至 7位是 IP 首部長度,該字段可以用來準確定位上層協(xié)議的起始位置 。 表 51 Ether_II的幀結(jié)構(gòu) 前導碼 目的地址 源地址 類 型 數(shù)據(jù) 報 校驗碼 8 字節(jié) 6字節(jié) 6 字節(jié) 2字節(jié) 46~1500 字節(jié) 4 字節(jié) 前導碼:包括同步碼(用來使局域網(wǎng)中的所有節(jié)點同步, 7字節(jié)長)和幀標志(幀的起始標志, 1 字節(jié))兩部分; 目的地址:接收端的 MAC 地址, 6 字節(jié)長; 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 26 頁 共 47 頁 源地址:發(fā)送端的 MAC地址, 6字節(jié)長; 類型:數(shù)據(jù)包的類型(即上層協(xié)議的類型), 2 字節(jié)長; 數(shù)據(jù):被封裝的數(shù)據(jù)包, 46- 1500 字節(jié)長; 校驗碼:錯誤檢驗, 4字節(jié)長?,F(xiàn)在使用最多的是以太網(wǎng) V2 的 MAC 幀格式。雖然幀頭和幀尾所用的字節(jié)數(shù)是固定不變的,但根據(jù)被封裝數(shù)據(jù)包大小的不同,以太網(wǎng)幀的長度也隨之變化,變化的范圍是 641518 字節(jié)(不包括 8字節(jié)的前導碼)。 (8)void pcap_close(pcap_t *p) 此函數(shù)的功能是關(guān)閉 Libpcap 操作,并銷毀相應的資源。 (5)void pcap_breakloop(pcap_t *p) 此函數(shù)的功能是退出循環(huán)捕 獲數(shù)據(jù)包狀態(tài) (6)pcap_t *pcap_open_dead(int linktype,int snaplen) 此函數(shù)的功能是構(gòu)造一個 Libpcap 句柄。 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 25 頁 共 47 頁 (3)const u_char *pcap_next(pcap_t *p,struct pcap_pkthdr *h) 此函數(shù)的功能是捕獲 下 一個網(wǎng)絡(luò)數(shù)據(jù)包,然后返回此數(shù)據(jù)包。所以,可以在回調(diào)函數(shù)中對捕獲到的數(shù)據(jù)包進行操作。 具 體到編程實現(xiàn)上 , 相關(guān)函數(shù)及其說明如下 : (1)int pcap_loop(pcap_t *p,int t,pcap_handler callback,u_char *user) 此函數(shù)是循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包,直到遇到錯誤或滿足退出條件。 設(shè)置好過濾器后,就調(diào)用函數(shù) pcap_loop 進行循環(huán)監(jiān)聽。當有數(shù)據(jù)包流過網(wǎng)卡時,系統(tǒng)會自動調(diào)用這個接口函數(shù)執(zhí)行相應的功能。 WinPcap 提供 2 種抓包方法 : pcap_loop()方法和 pcap_next_ex()方法。 捕獲模塊設(shè)計 在以太網(wǎng)中有兩種基本的監(jiān)聽技術(shù),即被動監(jiān)聽和主動監(jiān)聽,被動監(jiān)聽的原理就是把網(wǎng)卡置于混雜模式,然后捕獲數(shù)據(jù)包。 (4)tcp dst port 80 到達本機 TCP端口 80的幀 。預定義關(guān)鍵字方便了對相應的協(xié)議標志位的判斷。 應用程序 設(shè)置過濾器 pcap_pile pcap_freecode 系統(tǒng)調(diào)用 NPF 測試過濾器 釋放過濾器 pcap_pile_nopcap pcap_setfilter pcap_setfilter_win32_npf pcap_open_dead pcap_pile pcap_close PacketSetBpf DeviceIoConctrol NPF_IoConctrol NPF_tap bpf_validate NPF_jitter NPF_ResetBuffer_Contents NPFtoX86 bpf_filter_with_2_buffers NPFtoX86 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 24 頁 共 47 頁 (2)tcp[tcpflags]amp。 具體過濾規(guī)則見本程序的幫助文檔中的規(guī)則說明,下面舉例介紹過濾條件的設(shè)置。 下圖 相關(guān) 函數(shù)調(diào)用關(guān)系 圖 。 (3)int pcap_pile_nopcap(int snaplen_arg,int linktype_arg, strcut bpf_program *program,char *buf,int optimize,bpf_u_int 32 mask) 是 否 寫線程開始 有新數(shù)據(jù) 寫線程結(jié)束 協(xié)議解析、寫屏 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 23 頁 共 47 頁 此函數(shù)的功能也是編譯 BPF過濾規(guī)則。相關(guān) 規(guī)則函數(shù) (1)int pcap_setfilter(pcap_t *p,struct bpf_program *fp) 此函數(shù)的功能是設(shè)置 BFP 過濾規(guī)則,由參數(shù) fp 確定。 本程序基于 WinPcap 庫建立,自然繼承 WinPcap 最強大的封 包過濾功能。它提供非常有效的方法去獲取網(wǎng)絡(luò)流量中的某些數(shù)據(jù)包,這也是 WinPcap 捕獲機制中的一個重要組成部分。在嗅探器的正常工作中,通常需要根據(jù)一定的條件對接收的數(shù)據(jù)包進行過濾,這樣可以極大的提高顯示效率,達到基本同步。 圖 接受線程流程 是 否 收到 是 超時返回 否 申請內(nèi)存并加入鏈表 接受線程開始 接受數(shù)據(jù)包 寫線程存在 創(chuàng)建寫線程 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 22 頁 共 47 頁 圖 工作線程流程 至于顯示速度不能完全與接收速度同步 , 是因為在網(wǎng)絡(luò)流量較大時,封包截獲的速度遠大于協(xié)議解析和寫屏的速度,即接收線程建立數(shù)據(jù)鏈表遠快于工作線程對鏈表的處理,這時,封包信息的顯示會稍有 延遲。寫線程處理協(xié)議解析和屏幕顯示,寫屏速度僅僅受限于計算機的處理速度。這樣做的好處是,數(shù)據(jù)接收與數(shù)據(jù)顯示完全分離。 接收線程只負責接收數(shù)據(jù)、建立數(shù)據(jù)鏈表和判斷是否存在工作線程,若存在則繼續(xù)接收下一數(shù)據(jù)包,否則建立工作線程。為 0 時,線程創(chuàng)建后立即運行。 lpParameter 是 傳遞給線程的參數(shù); dwCreationFlags 是 控制這個線程創(chuàng)建的附加標記。 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 21 頁 共 47 頁 參數(shù) 的意義是 : lpThreadAttributes=null 時表示 使用缺省的安全性; dwStackSize 指定初始提交的棧大小,以字節(jié)為單位 。由于 線程需要的開銷比進程少,因此在編程中經(jīng)常采用多線程來解決編程問題,而盡量避免創(chuàng)建新的進程。因此,新線程可以訪問進程的內(nèi)核對象的所有句柄、進程中的所有內(nèi)存和在這個相同的進程中的所有其 它 線 程的堆棧。系統(tǒng)從進程的地址空間中分配內(nèi)存,供線程的堆棧使用??梢詫⒕€程內(nèi)核對象視為由關(guān)于線程的統(tǒng)計信息組成的一個小型的數(shù)據(jù)結(jié)構(gòu)。 當創(chuàng)建線程時,系統(tǒng)創(chuàng)建一個線程內(nèi)核對象。線程由兩個部分組成: (1)線程的內(nèi)核對象,操作系統(tǒng)用它來對 線程 實施管理。 進程是操作系統(tǒng)分配資源的基本單位,是程序運行的一個實例,它是動態(tài)的。 一種解決此問題的方法是在整個捕獲過程停止后集中處理數(shù)據(jù)并 顯示 ,但由于不能同步監(jiān)視網(wǎng)絡(luò)數(shù)據(jù),會給使用帶來一些不便。 WinPcap 庫已在內(nèi)核層對封包截獲及過濾的效率做了優(yōu)化。 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 20 頁 共 47 頁 多線程 設(shè)計 由于本程序?qū)崿F(xiàn)了在截獲網(wǎng)絡(luò)數(shù)據(jù)包的同時顯示數(shù)據(jù)包概要信息的功能。 函數(shù) pcap_close()用來關(guān)閉與 p 關(guān)聯(lián)的文件并釋放相關(guān)的資源,函數(shù)原型如下: void pcap_close(pcap_t *p)。 參數(shù) auth 是一個指向一個 pcap_rmtauth 結(jié)構(gòu)體的指針,該結(jié)構(gòu)體保存遠程機器上用戶所需的認證信息。讀取超時用來處理,捕獲一個數(shù)據(jù)包后,讀操作并不必需要立即返回的情況。 參數(shù) flags 是用來保存幾個捕獲數(shù)據(jù)包所需的標識 ,合法 的標識在 文件中定義。 參數(shù) snaplen 是必須保留的數(shù)據(jù)包長度。 參數(shù) source 是以 “ \0” 結(jié)尾的字符串,包含所需打開源的名稱。 適配器的打開與關(guān)閉 庫 為打開與關(guān)閉適配器,提供了 如下函數(shù): pcap_open、 pcap_close、pcap_open_dead、 pcap_open_live、 pcap_open_offline。該 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 19 頁 共 47 頁 函數(shù)成功返回時,該指針被設(shè)置為指向網(wǎng)絡(luò)設(shè)備鏈表的第一個元素,該鏈表的每個元素都是“ pcap_if_t”類型。該參數(shù)對本 地主機請求沒什么意義,此時可以設(shè)為 NULL。 參數(shù) auth 是一個指向 pcap_rmtauth 結(jié)構(gòu)體的指針。因為 pcap_findalldevs_ex()依賴于標準的 pcap_findalldevs()來獲得本地機器的地址,所以它是平臺無關(guān)的。 該函數(shù)創(chuàng) 建一個能用 pcap_open 函數(shù)打開的網(wǎng)絡(luò)適配器設(shè)備列表。 適配器的獲取與釋放 WinPcap 提供 了 pcap_findalldevs_ex 函數(shù)來實現(xiàn)獲得網(wǎng)絡(luò)適配器設(shè)備列表功能,它返回一個 pcap_if_t 類型的鏈表 alldevs,每個 pcap_if_t 結(jié)構(gòu)體都包含一個適配器的詳細信息,其中成員 name 和 description 分別表示一個適配器的名稱和一個更容易讓人理解的描述。調(diào)用依賴平臺的函數(shù) pcap_platform_finddevs 查找余下的設(shè)備信息,并添加到適配器設(shè)備列表 devlist 中 , 為防止設(shè)備被遺漏。 WinPcap 提供了各種 函數(shù) ,其 調(diào)用關(guān)系 如下 圖 所示: 圖 適配器 函數(shù)調(diào)用關(guān)系圖 即 函數(shù) pcap_findalldevs 首先調(diào)用 中提供的 PacketGetAdapterNames 函數(shù),通過給第一個參數(shù) pStr 傳遞 NULL 值,使第二個參數(shù) BufferSize 返回存儲適配器列表所需的字節(jié)數(shù) , 按該字節(jié)數(shù)分配空間 AdaptersName 以存儲適配器列表 ,再 把第一個參數(shù)設(shè)為 AdaptersName 所指的內(nèi)存空間,第二次調(diào)用 PacketGetAdapterNames 函應用程序 獲得網(wǎng)絡(luò)適配器列表 釋放網(wǎng)絡(luò)適配器列表 pcap_findalldevs_ex pcap_freealldevs 文件 pcap_open_offline 本地主機 pcap_findalldevs 遠程主機 rpcap_remoteact_getsock pcap_add_if_win32 PacketGetAdapterNames PacketGetNetInfoEx PacketRequest 系統(tǒng)調(diào)用 DeviceIoConctrol NPF NPF_IoConctrol Add_or_find_if PacketPopulatAdapersInfoList PacketUpdateAdInfo PacketFindAdInfo PacketGetAdaptersNPF PacketAddAdapterNPF PackeGetAddressesFromRegistry PackeGetLinklayerFromRegistry 一個網(wǎng)絡(luò)嗅探工具的開發(fā) 第 18 頁 共 47 頁 數(shù), 以獲得適配器列表。 本小節(jié)討論的是 網(wǎng)絡(luò)適配器的設(shè)計 ,它 是整個流程中的第一個環(huán)節(jié),以下作詳細的說明。打開 iade 模式由 promisc 表示:如果是 1,就表示以混雜模式打開此網(wǎng)絡(luò)接口;否則,以非混雜模式打開網(wǎng)絡(luò)接口。 函數(shù)原型如下: char *pcap
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1