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

正文內(nèi)容

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

2025-07-26 17:15 本頁面
 

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