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

正文內(nèi)容

網(wǎng)絡數(shù)據(jù)包的捕獲與分析畢業(yè)設計(編輯修改稿)

2025-07-08 00:32 本頁面
 

【文章內(nèi)容簡介】 Pcap_if 數(shù)據(jù)結構定義如下: Tpyedef struct pcap_if pcap_if_t; Struct pcap_if{ Struct pcap_if *next; //指向下一個網(wǎng)絡接口結點 char *name; //網(wǎng)絡接口名字 char *description; //描述信息 Struct sockaddr *addresses; //網(wǎng)絡接口地址 Bpf_u_int32 flags; //標記 }; 此數(shù)據(jù)結構描述的是一個網(wǎng)絡接口,它其實是網(wǎng)絡接口鏈表中的一個結點。 ( 3) pcap_pkthdr Pcap_pkthdr 數(shù)據(jù)結構定義如下: Struct pcap_pkthdr{ Struct timeval ts; //時間 戳 Bpf_u_int32 caplen; //捕獲長度 Bpf_u_int32 len; //數(shù)據(jù)包長度 }; 此數(shù)據(jù)結構用來描述每個捕獲到的數(shù)據(jù)包的一些基本信息,每個數(shù)據(jù)包都有此數(shù)據(jù)結構。 Winpcap 函數(shù) Winpcap 提供的輸出函數(shù)與 Libpcap 的函數(shù)完全一樣,使用方法也一樣。下面介紹一些主要的函數(shù)。 ( 1) 網(wǎng)絡接口函數(shù) : int pcap_findalldevs( pcap_if_t **alldevsp,char *errbuf); 陜西理工學院畢業(yè)設計 第 8 頁 共 65 頁 此函數(shù)的功能是查找機器的所有可用網(wǎng)絡接口,用一個鏈表返回。 void pcap_freealldevs(pcap_if_t *alldevs); 此函數(shù)的功能是釋放網(wǎng)絡接口鏈表中的所有網(wǎng)絡接口。 pcap_t *pcap_open_live(const char *device,int snaplen,int promisc,int to_ms,char *ebuf); 此函數(shù)的功能是打開一個網(wǎng)絡接口進行數(shù)據(jù)包捕獲打開的模式有 promisc 表示,如果是1 就表示以混雜模式把接口打開。 ( 2) 規(guī)則函數(shù) : int pcap_setfilter(pcap_t *p,struct bpf_program *fp) 此函數(shù)設置 BPF 過濾規(guī)則 ,由參數(shù) fp 確定 int pcap_pile(pcap_t *p,struct bpf_program *program,char *buf,int optimize,bpf_u_int32 mask) 此函數(shù)的功能是編譯 BPF 過濾規(guī)則。 ( 3) 數(shù)據(jù)包捕獲函數(shù) : int pcap_loop(pcap_t *p,int t,pcap_handler callback,u_char *user) 此函數(shù)是循環(huán)捕獲網(wǎng)絡數(shù)據(jù)包,直到遇到錯誤或者滿足退出條件。每捕獲一個數(shù)據(jù)包就調(diào)用 callback 指示的回調(diào)函數(shù),所以可以在回調(diào)函數(shù)中對捕獲到的數(shù)據(jù)包進行操作。 int pcap_next_ex(pcap_t *p,struct pcap_pkthdr **pkt_header,const u_char **pkt_data) 此函數(shù)的功能 是 捕獲一個網(wǎng)絡數(shù)據(jù)包。 void pcap_close(pcap_t *p) 此函數(shù)的功能是關閉 winpcap 操作,并銷毀相應資源。 ( 4) 文件相關函數(shù) : pcap_dumper_t *pcap_dump_open(pcap_t *p,const char *fname) 此函數(shù)的功能是打開一個文件,并準備向其寫入網(wǎng)絡數(shù)據(jù)包數(shù)據(jù)。 void pcap_dump(u_char *user,const struct pcap_pkthdr *h,const u_char *sp) 此函數(shù)的功能是向文件中寫入網(wǎng)絡數(shù)據(jù)包內(nèi)容。 陜西理工學院畢業(yè)設計 第 9 頁 共 65 頁 3 系統(tǒng)設計 方案及功能 描述 系統(tǒng) 設計 方案 對于該軟件的設計和執(zhí) 行過程,主要分為兩個關鍵部分,所以按此要求分為中有兩個核心的工作步驟,第一步是調(diào)用 Winpcap 函數(shù)庫實現(xiàn)下層抓包,這部分是為了實現(xiàn)網(wǎng)絡中的數(shù)據(jù)包獲取, 也 是最基礎的步驟。第二步是對所獲取的數(shù)據(jù)包文進行分析和統(tǒng)計或是其他操作,篩選出我們所需要的信息。下面分別列出兩個核心過程。 捕獲 過程,通過 winpcap 的調(diào)用從網(wǎng)絡中獲取數(shù)據(jù)包信息,步驟如下: 第一:初始化 Winpcap 開發(fā)庫。 第二:獲得當前的網(wǎng)卡列表信息,從列表中選取其中所需要的指定網(wǎng)卡。 第三:獲得當前的過濾規(guī)則,決定其過濾細節(jié),但也可為空。 第四:調(diào) 用庫函數(shù), pcap_loop(),并同時指定其回調(diào)函數(shù),所指定的回調(diào)函數(shù)其實就是數(shù)據(jù)包分析過程。 分析過程,將所獲取的當前數(shù)據(jù)包信息轉存后進行解析過程,步驟如下: 第一:由上一步通過 winpcap 抓包,將抓包后得到的數(shù)據(jù)包后轉存到內(nèi)存里,滿足以后的使用和操作。 第二:調(diào)用相符協(xié)議類型的數(shù)據(jù)包分析類。 在概要設計中,按模型層的要求,構造了多個用于分析不同類型數(shù)據(jù)包的分析類模型,每個模型對應一種數(shù)據(jù)包類型,調(diào)用是按要求調(diào)用符合該數(shù)據(jù)包類型的指定模塊。每個模型中按對應的數(shù)據(jù)包類型構造分析算法,完成對本類型數(shù)據(jù)包的 具體解析工作。 第三:對數(shù)據(jù)包信息內(nèi)容進行解析,過程如下: 在數(shù)據(jù)包中,其前 14 個字節(jié)( Byte)表示為數(shù)據(jù)鏈路層的報文頭,其報文格式是前 6個字節(jié)( Byte)表示為目的 MAC 地址,隨后的 6個字節(jié)( Byte)表示為源 Mac 地址,最后的 2 個字節(jié)( Byte)代表上層協(xié)議類型,這些重要的數(shù)據(jù)信息,是我們分析上層協(xié)議的依據(jù)。根據(jù)所分析到的協(xié)議類型進行類似的迭代分析。這樣就可以得到各層中的報文頭信息和數(shù)據(jù)信息。 第四:結束本次分析,等待下一次調(diào)用。 總體設計流程圖如圖 所示 啟 動 程 序選 擇 網(wǎng) 卡啟 動 監(jiān) 聽不 停 的 通 過 p c a p . l o o p 抓 包 , 通 過 調(diào) 用 各P a c k e t 類 來 解 析 報 文 的 包增 加 相 應 的 包 類 型 計 數(shù) ( t c p 或 u d p ) , 將捕 獲 到 的 包 的 分 析 結 果 插 入 l i s t 中 。開 始 監(jiān) 聽 線 程 圖 設計流程圖 系統(tǒng)功能描述 開發(fā)的這個 系統(tǒng) 最主要也是最核心的功能就是對于網(wǎng)絡數(shù)據(jù)包的捕獲 以及 對于捕獲到 陜西理工學院畢業(yè)設計 第 10 頁 共 65 頁 的網(wǎng)絡數(shù)據(jù)包顯示和簡單的分析 。 實質(zhì)是主要實現(xiàn)一個網(wǎng)絡實時監(jiān)聽的功能,然后將捕捉到的數(shù)據(jù)包保存下來以便進一步的分析使用。 具體實現(xiàn)功能如下: ( 1) 通過使用 winpcap 庫函數(shù) 進行 數(shù)據(jù)包的捕獲; ( 2) 將 捕獲到的數(shù)據(jù) 包進行分析并顯示 ; ( 3) 解析出 數(shù)據(jù) 包使用的協(xié)議、 源 地址 、目的地址、包的大小 和 內(nèi)容等 ; ( 4) 在界面的列表中實時顯示 捕獲 到的 數(shù)據(jù) 包的情況,點擊列表,可以展開此 數(shù)據(jù) 包的詳細 信息 ; ( 5) 流量監(jiān)控 ; ( 6) 導出數(shù)據(jù) 。 陜西理工學院畢業(yè)設計 第 11 頁 共 65 頁 4 系統(tǒng)編碼實現(xiàn) 網(wǎng)絡數(shù)據(jù)包 捕獲 模塊 的 實現(xiàn) 以太網(wǎng)具有共享介質(zhì)的特征,信息是以明文的形式在以太網(wǎng)絡上傳輸?shù)?,當網(wǎng)卡被設置為混雜模式時,可以捕獲任何一個在同一沖突域上傳輸?shù)臄?shù)據(jù)包。運用這一原理使網(wǎng)絡數(shù)據(jù)包捕獲系統(tǒng)能夠攔截到我們所要的信息,這是捕獲數(shù)據(jù)包的物理基礎。網(wǎng)卡具有 4 種工作模式:廣播模式,多播傳送模式,直接模式,混雜模式。網(wǎng)卡的缺省工作模式包含廣播模式和直接模式,即它只接收廣播幀和發(fā)給自己的幀。如果采用混雜模式,網(wǎng)卡將接受同一網(wǎng)絡內(nèi)所有主機所發(fā)送的數(shù)據(jù)包,這樣就 可以到達對所有數(shù)據(jù)包進行捕獲的目的。 網(wǎng)絡數(shù)據(jù)包捕獲 程序的編寫過程 ( 1) 獲取 本機已連接的網(wǎng)絡適配器列表 WinPcap 提供了 pcap_findalldevs_ex() 函數(shù)來實現(xiàn)這個功能 : 這個函數(shù)返回 pcap_if 結構的鏈表, 每個這樣的結構都包含了一個適配器的詳細信息。值得注意的是,數(shù)據(jù)域 name 和 description 表示一個適配器名稱和一個可以讓人們理解的描述。 int pcap_findalldevs_ex ( char * source, struct pcap_rmtauth * auth, pcap_if_t ** alldevs, char * errbuf ) ( 2) 打印網(wǎng)卡列表 for(d=alldevs。 d。 d=dnext) { printf(%d. %s, ++i, dname)。 if (ddescription) printf( (%s)\n, ddescription)。 else printf( (No description available)\n)。 } ( 3) 選擇網(wǎng)卡 一般的情況下都會檢測到至少兩塊網(wǎng)卡,所以我們要選擇我們正在使用的網(wǎng)卡設備。 scanf(%d, amp。inum)。 //輸入要選擇的網(wǎng)卡 if(inum 1 || inum i) //選端口輸入錯誤 { printf(\nInterface number out of range.\n)。 pcap_freealldevs(alldevs)。 /* 釋放設備列表 */ return 1。 } ( 4) 跳轉到選中的適配器 for(d=alldevs, i=0。 i inum1 。d=dnext, i++)。 /* 打開設備 */ if ( (adhandle= pcap_open(dname, // 設備名稱抓包的設備 65536, // 65535 保證能捕獲到不同數(shù)據(jù)鏈路層上的每個數(shù)據(jù)包的全部內(nèi)容 1, //PCAP_OPENFLAG_PROMISCUOUS, 混雜模式, 0 10000,//讀取超時時間 陜西理工學院畢業(yè)設計 第 12 頁 共 65 頁 NULL, // 遠程機器驗證 errbuf// 錯誤緩沖池 ) ) == NULL) { fprintf(stderr,\nUnable to open the adapter. %s is not supported by WinPcap\n, dname)。 pcap_freealldevs(alldevs)。 /* 釋放設備列表 */ return 1。 } ( 5) 打開捕獲的數(shù)據(jù)存儲的文件 dumpfile = pcap_dump_open(adhandle, fileway)。 /* 打開文件 */ ( 6) 循環(huán)捕獲并存儲 pcap_freealldevs(alldevs)。 /* 循環(huán)捕獲數(shù)據(jù)并調(diào)用 packet_handler 函數(shù)把數(shù)據(jù)存儲到堆文件 */ //const struct pcap_pkthdr *header。 //const u_char *pkt_data。 pcap_loop(ad
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1