【正文】
s biologist and ecologist as well. He was blac k, but attached little importance to it, having been born and raised in O39。 除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。 [3] 朱雁輝 .Windows防火墻與網(wǎng)絡(luò)封包截獲技術(shù) [M].北京:電子工業(yè)出版社 ,2021。其路徑跟文件的名稱還有文件的格式都可以自己定義。 圖 16 測(cè)試截圖 1 輸入之后從下圖中可以看到監(jiān)聽本機(jī)網(wǎng)卡然后成功的捕獲到數(shù)據(jù)包并打印出了結(jié)果,其中包括了源、目的 IP 地址,源、目的端口號(hào),時(shí)間戳和包長(zhǎng)。 break。 //14 為以太網(wǎng)首部的長(zhǎng)度 ip_len = (ihver_ihl amp。 /* 跳轉(zhuǎn)到選擇的網(wǎng)卡,這里設(shè)置的默認(rèn)可用網(wǎng)絡(luò)接口為第二塊,即 本機(jī)的網(wǎng)卡,第一塊是撥號(hào)的。 于是同樣用 pcap_next_ex()來編寫了一個(gè)捕獲網(wǎng)絡(luò)數(shù)據(jù)包的小程序來實(shí)驗(yàn)比較,最終決定是用 pcap_next_ex()來實(shí)現(xiàn)抓包功能。 (Address_Family_Name)。定時(shí)器的設(shè)置在捕獲網(wǎng)絡(luò)數(shù)據(jù)包函數(shù)還將會(huì)使用到,后面會(huì)詳細(xì)說明。 然后在抓包函數(shù)執(zhí)行后得到我們需要的信息后執(zhí)行和列的插入來將數(shù)據(jù)返回界面并顯示出來。剛開始寫代碼的時(shí)候就吃了這方面的虧,對(duì)于這個(gè) Winpcap 的環(huán)境配置不來,教程和相應(yīng)的參考書籍里面寫的非常的模糊,當(dāng) 時(shí)配置起來選項(xiàng)和欄目又多不知道該要填在哪兒,對(duì)于一個(gè) Winpcap 的初學(xué)者來說實(shí)在時(shí)有一定的難度,后來在 MSDN 論壇上面求教后才明白該怎么弄,所以在論文中特別將這點(diǎn)加入進(jìn)來。 下面部分,為了方便大家形象的理解其中的一些東西,會(huì)適當(dāng)?shù)慕Y(jié)合一些圖片和代碼來分類詳細(xì)描述。 說明: winpcap_next_ex() 從 winpcap_next() 發(fā)展 的, 更加 簡(jiǎn)單 好用 ,winpcap_next() 還要配合 pcap_dispatch() 來 使 用 才 能 達(dá) 到Winpcap_next_ex()的效 果。 b) void pcap_freealldevs(pcap_if_t *alldevs); 函數(shù)返回值:無。 從圖 3 中也可以看到, 位于 的下層,是較低層的網(wǎng) 第 7 頁 共 27 頁 絡(luò)編程接口。 在這里我使用的是 WinPcap 版,性能穩(wěn)定。這種程序設(shè)計(jì)方法可使用開發(fā)時(shí)間大大地縮短,切實(shí)地提高編程人員的工作效率。 對(duì)于網(wǎng)絡(luò)方面的知識(shí)應(yīng)該予以一定的了解,也許你在學(xué)習(xí)的時(shí)候沒有發(fā)覺它的具體作用,但是當(dāng)你一旦在實(shí)踐中遇到了運(yùn)用到了就會(huì)豁然開朗,發(fā)現(xiàn)原來一切是這么回事。網(wǎng)絡(luò)數(shù)據(jù)包的捕獲在于網(wǎng)絡(luò)安全領(lǐng)域有著無可代替的重要作用,不論是防火墻技術(shù),網(wǎng)絡(luò)監(jiān)聽技術(shù)或者是網(wǎng)絡(luò)測(cè)試都離不開數(shù)據(jù)包的捕獲,這是一切的基礎(chǔ),其他的功能都要基于這個(gè)功能才能實(shí)現(xiàn)。對(duì)于網(wǎng)絡(luò)數(shù)據(jù)包的捕獲現(xiàn)在也有著很多的實(shí)現(xiàn)方法,存在著許多開源的 sniffer 軟件供我們參考,但是其中的某些細(xì)節(jié)上還是有一些問題的存在,在效果和效率上都有一些問題,分析上也并不是很方便。 通過 VC++ 中 MFC編程實(shí)現(xiàn)通過一個(gè)完整界面來控制調(diào)用 Winpcap 中的函 數(shù)來實(shí)現(xiàn)對(duì)網(wǎng)卡信息的捕獲和循環(huán)捕獲數(shù)據(jù)包,然后通過預(yù)先對(duì)于 IP、 TCP、UDP 等數(shù)據(jù)包的定義和 TCP/IP 等協(xié)議來解析其中包含的內(nèi)容并返回顯示捕獲到數(shù)據(jù)包的信息,當(dāng)然也可以保存捕獲到的數(shù)據(jù)包到指定地點(diǎn)以便進(jìn)一步分析。伴隨著網(wǎng)絡(luò)帶來的便利,網(wǎng)絡(luò)安全問題也越來越受到人們的關(guān)注和重視。主要任務(wù)包括會(huì)話管理、傳輸同步以及活動(dòng)管理等。 面向?qū)ο蟮某绦蛟O(shè)計(jì)是結(jié)構(gòu)化語言的自然延伸。 Winpcap 給程序員提供了一套標(biāo)準(zhǔn)的網(wǎng)絡(luò)數(shù)據(jù)包捕獲的編程接口,并且與 Libpcap 兼容,增加了從 linux 到 windows 平臺(tái)的可移植性 。 圖 3 NPF的結(jié)構(gòu) 圖 3 中的箭頭標(biāo)識(shí)網(wǎng)絡(luò)數(shù)據(jù)包的流動(dòng)方向,并且 可以看到 NPF 是工作在內(nèi)核層的。 a) int pcap_findalldevs( pcap_if_t **alldevsp,char *errbuf); 函數(shù)返回值:如果操作成功,就返回 0;失敗就返回 1。 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。如果執(zhí)行抓包函數(shù),那么將捕獲到的數(shù)據(jù)包的信息保存并解析處里面的信息返回到 list 表中插入顯示出來。 圖 7 Winpcap環(huán)境配置 1 這里添加路徑要注意自己 Winpcap 安裝時(shí)的 WPCAP 和 Include 的文件夾的位置 ,要不然在代碼編譯和連接的時(shí)候都會(huì)報(bào): Cannot open include file: 39。 ( 5, _T(源端口號(hào) ), LVCFMT_LEFT, 60)。 第 16 頁 共 27 頁 (%2d:%2d:%2d,)。 } 在初始化程序通過調(diào)用和文本設(shè)置語句將獲取的本機(jī)信息傳遞到 MFC 界面中顯示出來 //調(diào)用獲取網(wǎng)卡及本機(jī)信息函數(shù) getworkcardinfo() //輸出網(wǎng)卡基本信息 (Description)。 基于回調(diào)包捕獲機(jī)制的pcap_loop()在某些情況下是不錯(cuò)的選擇。 第 19 頁 共 27 頁 u_short sport,dport。header)。 case 2: (IGMP)。 第 22 頁 共 27 頁 5 軟件測(cè)試 與結(jié)果 網(wǎng)卡信息獲取 下面圖 16和圖 17是預(yù)先寫的一個(gè)調(diào)試是否能夠獲得網(wǎng)卡信息和打開網(wǎng)卡捕獲數(shù)據(jù)包的測(cè)試程序的截圖。 圖 18 測(cè)試截圖 3 圖 18 中我們可以看到很多有用的信息,發(fā)現(xiàn)還可以增加一些擴(kuò)展功能,比如通過 BPF 過濾分類根據(jù)協(xié)議類型來顯示,當(dāng)然這個(gè)只是一個(gè)小功能而已,隨時(shí)都可以添加,所以并未實(shí)現(xiàn)。關(guān)于這個(gè)幾個(gè)問題還有再繼續(xù)豐富一些別的功能我會(huì)繼續(xù)下去直到最后,爭(zhēng)取做的更好更具有使用意義, 最后, 這是第一次單獨(dú)完成這么大代碼量的編程,由于 經(jīng)驗(yàn)欠缺或者是其他方面的一些原因,這次的項(xiàng)目開發(fā)也存在一些不足,如 程序員邏輯比較混亂,一些簡(jiǎn)單的問題要通過一堆無 用代碼才能實(shí)現(xiàn),不能以簡(jiǎn)潔有效的方式解決 , 在以后的項(xiàng)目開發(fā)過程中會(huì)逐漸解決這些不足之處。 ( 3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文。t say a word about its being painful. An uget. It was impossible to keep secrets when seven people lived in such a confined space. She knew for a fact, for instance, that what the Polo sisters did behind the closed doors of their adjoining rooms was still illegal in Alabama. They had all bounced around a lot, especially in the early months of the voyage. Gene was the only married crew member, and h e had taken care to announce quite early that he and his wife had an arrangement about such matters. Still, he had slept alone for a long time because the Polos had each other, Gaby didn39。 she had learned early to be indifferent to a man39。s not all. My docent told me about your lunch. Did Grandma Karen really tell you you were right? Yes. Gosh! I didn39。 [6] 張仕斌,譚三,易勇,蔣毅 .網(wǎng)絡(luò)安全技術(shù) [M].北京:清華大學(xué)出版社 ,2021。 結(jié) 論 通過本次課題的研究, 對(duì)于網(wǎng)絡(luò)知識(shí)有了更深 更進(jìn)一步的認(rèn)識(shí)。 d=dnext。 default: 第 21 頁 共 27 頁 (other)。 /* 將端口信息從網(wǎng)絡(luò)型轉(zhuǎn)變?yōu)橹鳈C(jī)順序 */ sport = ntohs( uhsport )。 d=dnext) */ d=alldevs。再次它不能夠識(shí)別文件結(jié)束標(biāo)志 EOF 所以對(duì)來自文件的數(shù)據(jù)流它幾乎無能為力。首先要了解一些基本信息,以便更 加容易理解這段代碼。 //將網(wǎng)卡描述傳遞到 Description中 IP_Address=iptos(((structsockaddr_in*)aaddr))。 //協(xié)議類型 (row,1,time1)。 圖 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í)質(zhì)是主要實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)實(shí)時(shí)監(jiān)聽的功能,然后將 捕捉到的數(shù)據(jù)包保存下來以便進(jìn)一步的分析使用。 第 10 頁 共 27 頁 此函數(shù)的功能是關(guān)閉 winpcap 操作,并銷毀相應(yīng)資源。 c) pcap_t *pcap_open_live(const char *device,int snaplen,int promisc,int to_ms,char *ebuf); 函數(shù)返回值:返回一個(gè) Libpcap 句柄。使用 比較煩瑣,如果無特殊要求,一般不用 進(jìn)行編程開發(fā)。它相當(dāng)于在 Linux 下 Libpcap 使用的BPF 過濾模塊,實(shí)現(xiàn)了高效的網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和過濾功能,其過濾規(guī)則跟 BPF是一樣的。而且其強(qiáng)大的調(diào)試功能也為大型復(fù)雜軟件的開發(fā)提供了有效的排錯(cuò)手段。例如: ,并將網(wǎng)際協(xié)議 IP 作為TCP/IP 的重要組成部分。 學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)的我想大都應(yīng)該知道著名的 OSI 體系結(jié)構(gòu), OSI模型有點(diǎn)太過理想化和復(fù)雜,在時(shí)下 Inter 網(wǎng)體系結(jié)構(gòu)非常流行并將其取而代之。所以我們可以清晰的認(rèn)識(shí)到網(wǎng)絡(luò)數(shù)據(jù)包捕獲功能的巨大作用和廣泛的應(yīng)用范圍。 采用的是 Winpcap( Windows Packet Capture)來實(shí)現(xiàn)的抓包功能。我總是在一些比較著名的軟件下載網(wǎng)站上獲取一些比較受好評(píng)的軟件來使用,然后從中選擇適合自己的。傳輸層通過向上提供一個(gè)標(biāo)準(zhǔn)、通用的界面,使上層與通信子網(wǎng)(下三層)的細(xì)節(jié)相隔離。這是一種自底向上和自頂向下相結(jié)合的方法,而且它以對(duì)象建模為基礎(chǔ),從而不僅考慮了輸入、輸出數(shù)據(jù)結(jié)構(gòu),實(shí)際上也包含了所有對(duì)象的數(shù)據(jù)結(jié)構(gòu)。 Winpcap是在 BSD 許可證下發(fā)布的,它主要是由加利福尼亞大學(xué)的 Lawrence Berkeley Laboratory 開發(fā)。 網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范( NDIS, Network Driver Interface Specification) 第 6 頁 共 27 頁 是由微軟和 3 公司共同制定的,它位于網(wǎng)卡和協(xié)議層之間,提供一個(gè)接口,為上層協(xié)議提供服務(wù),并且屏蔽了下層各種網(wǎng)卡的差別,并且支持多種網(wǎng)絡(luò)協(xié)議。 第 8 頁 共 27 頁 Pcap_pkthdr 數(shù)據(jù)結(jié)構(gòu)定義如下: Struct pcap_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)。 此函數(shù)是循環(huán)捕獲網(wǎng)絡(luò)數(shù)據(jù)包,直到遇到錯(cuò)誤或者滿足退出條件。設(shè)置開始 /停止按鈕來實(shí)現(xiàn)對(duì)于抓包函數(shù)的調(diào)用的控制。解壓后會(huì)有幾個(gè)文件夾。 ( 2, _T(包頭長(zhǎng) ), LVCFMT_LEFT, 60)。 // 獲得系統(tǒng)當(dāng)前時(shí)間 SYSTEMTIME tNow。 which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1)。 當(dāng)初在寫抓包程序這段代碼的時(shí)候遇到了一定的問題,最開始打算通過 NDIS網(wǎng)絡(luò)驅(qū)動(dòng)程序來實(shí)現(xiàn)這段代碼,但是通過一段時(shí)間的初步