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

正文內(nèi)容

網(wǎng)絡(luò)數(shù)據(jù)包捕獲工具的設(shè)計(jì)與實(shí)現(xiàn)免費(fèi)(論文)(編輯修改稿)

2025-01-12 00:57 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 ap_pkthdr{ Struct timeval ts; //時(shí)間戳 Bpf_u_int32 caplen; //捕獲長(zhǎng)度 Bpf_u_int32 len; //數(shù)據(jù)包長(zhǎng)度 }; 此數(shù)據(jù)結(jié)構(gòu)用來描述每個(gè)捕獲到的數(shù)據(jù)包的一些基本信息,每個(gè)數(shù)據(jù)包都有此數(shù)據(jù)結(jié)構(gòu)。 Winpcap 函數(shù) Winpcap 提供的輸出函數(shù)與 Libpcap 的函數(shù)完全一樣,使用方法也一樣,呵呵,也就是說掌握了其中任何一種那么恭喜你不論是 windows 下的還是 linux 下的你都已經(jīng)邁出了堅(jiān)實(shí)的 一大步,至少我個(gè)人是這么認(rèn)為的。下面介紹一些主要的函數(shù)。 a) int pcap_findalldevs( pcap_if_t **alldevsp,char *errbuf); 函數(shù)返回值:如果操作成功,就返回 0;失敗就返回 1。 參數(shù)描述:參數(shù) alldevsp 表示網(wǎng)絡(luò)接口鏈表,參數(shù) errbuf 用來儲(chǔ)存錯(cuò)誤信息。 此函數(shù)的功能是查找機(jī)器的所有可用網(wǎng)絡(luò)接口,用一個(gè)鏈表返回。 b) void pcap_freealldevs(pcap_if_t *alldevs); 函數(shù)返回值:無。 參數(shù)描述:參數(shù) alldevs 表示一個(gè)網(wǎng)絡(luò)接口鏈表。 此函數(shù)的功能是釋放網(wǎng)絡(luò)接口鏈表中的所有網(wǎng)絡(luò)接口。 c) pcap_t *pcap_open_live(const char *device,int snaplen,int promisc,int to_ms,char *ebuf); 函數(shù)返回值:返回一個(gè) Libpcap 句柄。 參數(shù)描述:參數(shù) device 表示網(wǎng)絡(luò)接口的名字;參數(shù) snaplen 表示捕獲數(shù)據(jù)包的長(zhǎng)度;參數(shù) promisc 表示是否設(shè)置混雜模式,如果賦值 1,就表示設(shè)置混雜模式;參數(shù) to_ms 表示等待時(shí)間;參數(shù) ebuf 表示儲(chǔ)存錯(cuò)誤 信息。 此函數(shù)的功能是打開一個(gè)網(wǎng)絡(luò)接口進(jìn)行數(shù)據(jù)包捕獲打開的模式有promisc 表示,如果是 1 就表示以混雜模式把接口打開。 a) int pcap_setfilter(pcap_t *p,struct bpf_program *fp) 第 9 頁 共 27 頁 //此函數(shù)設(shè)置 BPF 過濾規(guī)則 ,由參數(shù) fp確定 b) int pcap_pile(pcap_t *p,struct bpf_program *program,char *buf,int optimize,bpf_u_int32 mask) //此函數(shù)的功能是編譯 BPF 過濾規(guī)則。 說明: 此處的過濾規(guī)則只是在內(nèi)核中過濾顯示協(xié)議信息,并非過濾數(shù)據(jù)包,并不能做到對(duì)數(shù)據(jù)包的阻塞功能,要想過濾數(shù)據(jù)包可以采用 NDIS 網(wǎng)絡(luò)驅(qū)動(dòng)在更底層來實(shí)現(xiàn),所以我并沒由添加這部分功能,這里只是提出來說明下有這些功能。 a) int pcap_loop(pcap_t *p,int t,pcap_handler callback,u_char *user) 函數(shù)返回值:操作成功返回 0,失敗返回負(fù)數(shù)。 參數(shù)描述:參數(shù) p 表示 winpcap 的句柄;參數(shù) t為捕獲數(shù)據(jù)包的個(gè)數(shù)如果為 1 則表示無限個(gè);參數(shù) callback 表示回調(diào)函數(shù);參數(shù) user 表示回調(diào)函數(shù)中傳輸?shù)膮?shù)。 此函數(shù)是循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包,直到遇到錯(cuò)誤或者滿足退出條件。每捕獲一個(gè)數(shù)據(jù)包就調(diào)用 callback 指示的回調(diào)函數(shù),所以可以在回調(diào)函數(shù)中對(duì)捕獲到的數(shù)據(jù)包進(jìn)行操作。 說明 : 由于 pcap_loop()這個(gè)函數(shù)在沒有數(shù)據(jù)包進(jìn)出時(shí)會(huì)可能阻塞掉,而且用 loop 會(huì)造成程序代碼更加復(fù)雜,所以我采用的下面一個(gè)pcap_next_ex()來循環(huán)抓包。 b) int pcap_next_ex(pcap_t *p,struct pcap_pkthdr **pkt_header,const u_char **pkt_data) 函數(shù)返回值:函數(shù)操作成功返回 1,如果超時(shí)就返回 0,失敗則返回 1或 2。 參數(shù)描述:參數(shù) p 表示 Winpcap 句柄;參數(shù) pkt_header 寶石數(shù)據(jù)包頭;參數(shù) pkt_data 表示數(shù)據(jù)包。 此函數(shù)的功能時(shí)捕獲一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包。 說明: winpcap_next_ex() 從 winpcap_next() 發(fā)展 的, 更加 簡(jiǎn)單 好用 ,winpcap_next() 還要配合 pcap_dispatch() 來 使 用 才 能 達(dá) 到Winpcap_next_ex()的效 果。 c) void pcap_close(pcap_t *p) 函數(shù)返回值:無。 參數(shù)描述:參數(shù) p 為 Winpcap 句柄。 第 10 頁 共 27 頁 此函數(shù)的功能是關(guān)閉 winpcap 操作,并銷毀相應(yīng)資源。 a) pcap_dumper_t *pcap_dump_open(pcap_t *p,const char *fname) 此函數(shù)的功能是打開一個(gè)文件,并準(zhǔn)備向其寫入網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)。 b) void pcap_dump(u_char *user,const struct pcap_pkthdr *h,const u_char *sp) 此函數(shù)的功能是向文件中寫入網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容。 3 設(shè)計(jì)方案與系統(tǒng)功能描述 設(shè)計(jì)方案 在多方參考的情況下打算采用 Winpcap和 Winsock中的一種來實(shí)現(xiàn)抓包等相應(yīng)的功能。參考了《網(wǎng)絡(luò)安全開發(fā)包詳解》和《 Windows 防火墻和網(wǎng)絡(luò)封包截獲技術(shù)》這兩本書后決定采用 Winpcap 來實(shí)現(xiàn)代碼。 Winpcap 中封裝了許多的功能,只需要直接調(diào)用,就像 java 中封裝好的類一樣,使用起來非常方便。 通過 Microsoft Visual C++ MFC 來實(shí)現(xiàn)可視化編程,通過一個(gè)簡(jiǎn)單的界面來實(shí)現(xiàn)對(duì)于捕獲網(wǎng)卡信息 、本機(jī) IP 地址、廣播地址和子網(wǎng)掩碼等信息的獲取顯示。設(shè)置開始 /停止按鈕來實(shí)現(xiàn)對(duì)于抓包函數(shù)的調(diào)用的控制。在界面上獲取并顯示系統(tǒng)當(dāng)前時(shí)間,通過設(shè)置定時(shí)器每隔一秒鐘觸發(fā)一次獲取當(dāng)前系統(tǒng)時(shí)間來實(shí)現(xiàn)一個(gè)時(shí)間顯示。在開始 /停止按鈕中添加循環(huán)判斷語句,并且設(shè)置一個(gè) bool 型變量來控制是否開啟抓包函數(shù)的調(diào)用。如果執(zhí)行抓包函數(shù),那么將捕獲到的數(shù)據(jù)包的信息保存并解析處里面的信息返回到 list 表中插入顯示出來。如果點(diǎn)擊停止按鈕則調(diào)用 pcap_close()函數(shù)來實(shí)現(xiàn)關(guān)閉 winpcap 操作。大體的一個(gè)設(shè)計(jì)思路就是這樣子的,具體的各 個(gè)功能實(shí)現(xiàn)在軟件編碼部分會(huì)詳細(xì)講解。 下面部分,為了方便大家形象的理解其中的一些東西,會(huì)適當(dāng)?shù)慕Y(jié)合一些圖片和代碼來分類詳細(xì)描述。 下面的圖 4是開發(fā)初期的大體界面框架。 第 11 頁 共 27 頁 圖 4 MFC控制界面 功能描述 制作的這個(gè)軟件的最主要也是最核心的功能就是對(duì)于網(wǎng)絡(luò)數(shù)據(jù)包的捕獲,對(duì)于捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包顯示和簡(jiǎn)單的分析,分析數(shù)據(jù)包的協(xié)議類型(是 TCP、UDP 還是 ICMP 等),還有數(shù)據(jù)包的源 IP、目的 IP 還有端口號(hào)、時(shí)間戳和包長(zhǎng)等最后并將這些信息顯示出來。實(shí)質(zhì)是主要實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)實(shí)時(shí)監(jiān)聽的功能,然后將 捕捉到的數(shù)據(jù)包保存下來以便進(jìn)一步的分析使用。圖 5 中為系統(tǒng)初始化后加載各個(gè)模塊的流程圖。具體功能在后面章節(jié)中會(huì)分別詳細(xì)說明。 圖 5 功能模塊圖 第 12 頁 共 27 頁 系統(tǒng)流程圖 下圖 6 是程序流程圖 圖 6 程序流程圖 根據(jù)流程圖可以清楚明白的看到每一步的流程,程序是怎么樣執(zhí)行下去的,有助于理解程序。 4 編碼實(shí)現(xiàn) Winpcap環(huán)境設(shè)置 配置環(huán)境首先需要安裝 Winpcap,所使用的是 ,這個(gè)是必須安裝的,它是所有基于 Winpcap 的應(yīng)用程序運(yùn)行所必須的。還有就是 文件的解壓了放在 D: \畢業(yè)設(shè)計(jì)- KNIGHTG\WPDPACK 中,它是Winpcap 開發(fā)包文件,是設(shè)計(jì)基于 Winpcap 的應(yīng)用程序的開發(fā)文件。該文件包括開發(fā)用的頭文件和靜態(tài)鏈接庫(kù)文件,是開發(fā)者要用到的。解壓后會(huì)有幾個(gè)文件夾。其中, Include 文件夾中的是 Winpcap 的一些頭文件,編程時(shí)必須把此文件夾的路徑包含到 Visual C++的包含頭文件的路徑中;文件夾 Lib 中是開發(fā)程序時(shí)用刀的靜態(tài)鏈接庫(kù),編程時(shí)此文件夾也必須包含到 Visual C++庫(kù)文件路徑中。 VC 環(huán)境下安裝配置過程如下: 第 13 頁 共 27 頁 添加路 徑: 工具( Tools) 選擇( Options) 目錄( Directories) 同下圖圖 7 進(jìn)行設(shè)置 。 圖 7 Winpcap環(huán)境配置 1 這里添加路徑要注意自己 Winpcap 安裝時(shí)的 WPCAP 和 Include 的文件夾的位置 ,要不然在代碼編譯和連接的時(shí)候都會(huì)報(bào): Cannot open include file: 39。39。: No such file or directory。剛開始寫代碼的時(shí)候就吃了這方面的虧,對(duì)于這個(gè) Winpcap 的環(huán)境配置不來,教程和相應(yīng)的參考書籍里面寫的非常的模糊,當(dāng) 時(shí)配置起來選項(xiàng)和欄目又多不知道該要填在哪兒,對(duì)于一個(gè) Winpcap 的初學(xué)者來說實(shí)在時(shí)有一定的難度,后來在 MSDN 論壇上面求教后才明白該怎么弄,所以在論文中特別將這點(diǎn)加入進(jìn)來。 添加路徑時(shí)要注意這里不僅要添加頭文件相關(guān)的路徑,還要加入 Libpcap 的的路徑。否則編譯過了,連接時(shí)也會(huì)報(bào)錯(cuò): cannot open file 。 圖 8 Winpcap環(huán)境設(shè)置 2 設(shè)置工程參數(shù) 新建一個(gè)工程后, 第 14 頁 共 27 頁 工程( Project) 設(shè)置( Settings) 選擇 C/C++;在預(yù)處理程序定義 ( Preprocessor definition)里面添加 圖 9 Winpcap環(huán)境設(shè)置 3 WPCAP 即可。 同理設(shè)置 link,如下圖圖 10: 圖 10 Winpcap環(huán)境配置 4 MFC控件相關(guān) 通過設(shè)置不同的按鈕來實(shí)現(xiàn)不同的控制功能,還可以通過設(shè)置 list 表來顯示信息。其中這里主要說下關(guān)于 list 表的問題。其他的控件都比較簡(jiǎn)單就不在這里多說了。 將 list 的屬性中的 style 里查看選項(xiàng)改成了 report 格式,然后通過插入語 第 15 頁 共 27 頁 句來實(shí)現(xiàn)對(duì)表項(xiàng)中每一列顯示信息種類的設(shè)置。 //設(shè)置監(jiān)聽狀況表項(xiàng) ( 0, _T(協(xié)議類型 ), LVCFMT_LEFT, 60)。 ( 1, _T(時(shí)間 ), LVCFMT_LEFT, 70)。 ( 2, _T(包頭長(zhǎng) ), LVCFMT_LEFT, 60)。 ( 3, _T(源 IP地址 ), LVCFMT_LEFT, 125)。 ( 4, _T(目的 IP地址 ), LVCFMT_LEFT, 125)。 ( 5, _T(源端口號(hào) ), LVCFMT_LEFT, 60)。 ( 6, _T(目的端口號(hào) ), LVCFMT_LEFT, 80)。 設(shè)置第一列為協(xié)議類型,然后第二到七列分別為捕獲到數(shù)據(jù)包的時(shí)間戳、包頭長(zhǎng)度、源 IP、目的 IP、源端口號(hào)和目的端口號(hào)。 然后在抓包函數(shù)執(zhí)行后得到我們需要的信息后執(zhí)行和列的插入來將數(shù)據(jù)返回界面并顯示出來。 row=()。 row=(row,ip_header_proto)。 //協(xié)議類型 (row,1,time1)。 //捕獲數(shù)據(jù)包的時(shí)間戳 (row,2,bag_header_len)。 //包頭長(zhǎng)度 (row,3,sourceip)。 //源 IP (row,4,desip)。 //目的 IP (row,5,sourceport)。 //源端口號(hào) (row,6,desport)。 //目的端口號(hào) 其中數(shù)據(jù)包的顯示是通過定時(shí)器每隔一秒鐘觸發(fā)調(diào)用一次將捕捉到的數(shù)據(jù)包信息返回插入到 list 表中 定時(shí)器和系統(tǒng)時(shí)間的獲得 SetTimer(1,1000,NULL); //設(shè)置定時(shí)器 ,1000ms觸發(fā)一次 ? ? CDialog::OnTimer(nIDEvent)。 // 獲得系統(tǒng)當(dāng)前時(shí)間 SYSTEMTIME tNow。 GetLocalTime(amp。tNow)。 第 16 頁 共 27 頁 (%2d:%2d:%2d,)。 UpdateData(false)。 其中設(shè)置定時(shí)器放在程序的初始化里邊,通過控件顯示定時(shí)器每個(gè)一秒觸發(fā)一次獲取當(dāng)前時(shí)間函數(shù)所得到的 時(shí)間。定時(shí)器的設(shè)置在捕獲網(wǎng)絡(luò)數(shù)據(jù)包函數(shù)還將會(huì)使用到,后面會(huì)詳細(xì)說明。 捕獲并顯示本機(jī)信息 int getworkcardinf
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1