




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
使用Winpcap示例程序的時(shí)候,會(huì)出現(xiàn)很多錯(cuò)誤(轉(zhuǎn))WINPCAP編程環(huán)境設(shè)置2008-05-1912:41一、WINPCAP編程環(huán)境設(shè)置在正式WinPcap編程之前,要配置運(yùn)行環(huán)境。1、運(yùn)行環(huán)境設(shè)置Win32平臺(tái)下WinPcap應(yīng)用程序需要以下四個(gè)動(dòng)態(tài)鏈接庫(kù)才能正常運(yùn)行:wpcap.dllPacket.dllWanPacket.dllpthreadVC.dll這四個(gè)動(dòng)態(tài)鏈接庫(kù)在WinPcap驅(qū)動(dòng)程序里。如果沒(méi)有這個(gè)驅(qū)動(dòng)程序,需要到WinPcap官方網(wǎng)站上下載,下載地址為:www.WinP如果應(yīng)用程序出現(xiàn)一下提示,那就是沒(méi)有安裝驅(qū)動(dòng)程序的原因了。也可以不安裝WinPcap驅(qū)動(dòng)程序。但是需要把上面提到的四個(gè)動(dòng)態(tài)鏈接庫(kù)文件拷貝到系統(tǒng)分區(qū)/WINDOWS/system32目錄下。(似乎有些問(wèn)題)2、配置編程環(huán)境。1>從WWW.WINPCAP.ORG上下載WINPCAPSDK-WpdPack,WinPcapSDk里面包含庫(kù)文件,頭文件,文檔文件和一些例子。解壓到一個(gè)指定的目錄。解壓縮后把Include目錄添加到IDE的包含文件中(VC6.0Tools->Option->Directory;VS2003/2005工具->選項(xiàng)->項(xiàng)目和解決方案/項(xiàng)目->VC++目錄);lib目錄添加為新的庫(kù)文件目錄(VC6.0Tools->Option->Directory;VS2003/2005工具->選項(xiàng)->項(xiàng)目和解決方案/項(xiàng)目->VC++目錄)如下圖所示。
2>如果一個(gè)源文件使用了WinPcap提供的庫(kù)函數(shù),那么就需要在該文件開(kāi)始的位置添加pcap.h包含文件(或者在引用的文件中),即#1nclude"pcap.h”也許會(huì)出現(xiàn)下面的錯(cuò)誤:fatalerrorC1083:無(wú)法打開(kāi)包括文件:"pcap.h”:Nosuchfileordirectory這個(gè)錯(cuò)誤表明找不到pcap.h文件,這個(gè)頭文件在驅(qū)動(dòng)程序安裝完成后也是沒(méi)有的,它是開(kāi)發(fā)包里面的一個(gè)頭文件,所以,如果要運(yùn)行程序還需要到官方網(wǎng)站上去下載WinPcapSDK,并按步驟1添加到項(xiàng)目中。3>在程序中添加wpcap.lib。如果出現(xiàn)下面錯(cuò)誤errorLNK2019:無(wú)法解析的外部符號(hào)_pcap_findalldevs_ex,該符號(hào)在函數(shù)XXX中被引用,如果發(fā)生上面的錯(cuò)誤就表明缺少庫(kù)文件,需要添加wpcap.lib到工程中(VC6.0Project->Settings->Link->Object/librarymodules;VS2003/2005項(xiàng)目->添加現(xiàn)有項(xiàng)->所有文件)如下圖所示:
4>新的版本里WinPcap支持遠(yuǎn)程數(shù)據(jù)包獲取,所以還應(yīng)當(dāng)添加一個(gè)頭文件remote-ext.h,ip#include"remote-ext.h"(記住這條語(yǔ)句要放在#include"pcap.h”之后,否則會(huì)出錯(cuò)?。┓駝t會(huì)發(fā)生下面的錯(cuò)誤errorC2065:“PCAP_SRC_IF_STRING”:未聲明的標(biāo)識(shí)符errorC3861:"pcap_findalldevs_ex":找不到標(biāo)識(shí)符errorC2065:“PCAP_OPENFLAG_PROMISCUOUS”:未聲明的標(biāo)識(shí)符errorC3861:"pcap_open":找不到標(biāo)識(shí)符5>或者不用添加#inelude"remote-ext.h".在VC.NET提供的IDE環(huán)境中,可以通過(guò)執(zhí)行“項(xiàng)目”菜單中的的“屬性”進(jìn)入該項(xiàng)目的屬性配置頁(yè),通過(guò)選擇"配置屬性”樹(shù)中的“C/C++預(yù)處理哭選項(xiàng)就增加'WPCAP和'HAVE_REMOTE'兩個(gè)標(biāo)號(hào)。如下圖所示:6>如果還有問(wèn)題,可以到WinPcaP官方網(wǎng)站上找FAQ。二、WINPCAP編程入門(mén)利用WINPCAP捕獲數(shù)據(jù)包一般要經(jīng)過(guò)以下幾個(gè)步驟1、獲取網(wǎng)絡(luò)接口列表通常,一個(gè)基于WinPcap的應(yīng)用程序所要做的第一件事,就是獲得適合的網(wǎng)絡(luò)接口的列表.pcap_findalldevs()(或者pcap_findalldevs_ex())函數(shù)就是干這活的:這個(gè)函數(shù)返回一個(gè)pcap_if結(jié)構(gòu)的列表,每個(gè)元素都記錄了一個(gè)接口的信息.其中,name和description以人類可以閱讀的形式,記錄了設(shè)備的信息.2、獲取設(shè)備的高級(jí)信息WinPcap也可以為我們提供關(guān)于接口的更多信息.由pcap_findalldevs()函數(shù)返回的pcap_if結(jié)構(gòu)也包含了一個(gè)pcap_addr結(jié)構(gòu)的列表,它記錄了以下信息:接口的地址列表接口的掩碼列表(與地址列表對(duì)應(yīng))接口的廣播地址列表(與地址列表——對(duì)應(yīng))目標(biāo)地址列表(與地址列表對(duì)應(yīng))3、打開(kāi)一個(gè)接口并捕捉流量現(xiàn)在我們已經(jīng)知道如何獲取一個(gè)接口的有關(guān)信息了,我們可以來(lái)點(diǎn)真家伙了--打開(kāi)一個(gè)接口并捕捉流量.接下來(lái)我們會(huì)編譯一個(gè)程序,它將捕捉網(wǎng)絡(luò)中所有的數(shù)據(jù)包并輸出他們的一些相關(guān)信息。我們使用函數(shù)pcap_open_live()來(lái)打開(kāi)一個(gè)捕捉設(shè)備.這里,我們需要解釋一下snaplen,promisc和to_ms參數(shù).函數(shù)原型:pcap_t*pcap_open_live(char*device,intsnaplen,intpromisc,intto_ms,char*ebuf)"snaplen"參數(shù)指定了要捕捉的數(shù)據(jù)包的部分.在某些操作系統(tǒng)中(如xBSD和Win32),驅(qū)動(dòng)程序提供了只捕捉每個(gè)數(shù)據(jù)包其中一部分的可能性:這樣就降低了要處理的數(shù)據(jù)的量,從而提高了捕捉程序的效率.在例子中,我們使用一個(gè)高出MTU最大值的值(65536)以確保可以捕捉到成個(gè)數(shù)據(jù)包."promise"=1表明接口將會(huì)被設(shè)置為混雜模式.一般情況下,接口只處理目標(biāo)地址為自己的數(shù)據(jù);到其他主機(jī)的數(shù)據(jù)包將會(huì)被忽略.然而當(dāng)一個(gè)接口處于混雜模式時(shí),它將會(huì)處理全部的流量:也就是說(shuō),在共享媒介,例如非交換型以太網(wǎng)(比如基于集線器的網(wǎng)絡(luò))中,WinPeap可以捕捉到所有主機(jī)的數(shù)據(jù)包.混在模式是多數(shù)捕捉程序的默認(rèn)模式,所以我們?cè)诶又幸膊捎眠@種模式."to_ms"用以設(shè)置超時(shí),單位是毫秒.一個(gè)從接口讀?。╕-捕捉)的操作,(例如pcap_dispatch()或者pcap_next_ex()),如果沒(méi)有捕捉到數(shù)據(jù)包,那么在超過(guò)指定的時(shí)間以后就會(huì)返回.進(jìn)一步說(shuō),如果接口處在靜態(tài)模式中,to_ms也定義了靜態(tài)報(bào)告的間隔時(shí)間(參閱"GatheringStatisticsonthenetworktraffic"以獲取更多信息).設(shè)置to_ms為0,則說(shuō)明永遠(yuǎn)不會(huì)超時(shí),如果沒(méi)有數(shù)據(jù)包到達(dá),那么捕捉操作將會(huì)永遠(yuǎn)不會(huì)返回,而將其值設(shè)置為-1則會(huì)立刻返回.以上取與網(wǎng)絡(luò)中的環(huán)境配置。事實(shí)上還有許多錯(cuò)誤,需要解決。如:錯(cuò)誤3errorC3163:“_vsnprin屬性與以前的聲明不一致d:\programfiles'microsoftvisualstudio9.0\vc\include'stdio.h358iflist有人說(shuō)解決辦法是這個(gè):"VC9CRT的vsnprintf與其他第3方定義的沖突,導(dǎo)致VS2008編譯錯(cuò)誤"errorC3163:'_vsnprintf':attributesinconsistentwithpreviousdeclaration比如wpdpack\include\pcap-stdinc.h定義了,要注釋掉〃#definevsnprintf_vsnprintf或#if_MSC_VER<1500#definesnprintf_snprintf#definevsnprintf_vsnprintf#endif但是并沒(méi)有發(fā)現(xiàn)可以解決問(wèn)題。最后解決辦法是這個(gè):沒(méi)這么麻煩!既然PCAP.h包的stdio.h的頭文件有問(wèn)題,就先把stdio.h包進(jìn)來(lái)。亠【、'-1^.IV-就這樣:#inelude<stdio.h>#ineludevpcap.h>不是頭文件有問(wèn)題,只是winpcap對(duì)系統(tǒng)的stdio.h進(jìn)行了重定議,兩個(gè)版本間出現(xiàn)了一點(diǎn)小小的磨擦.4、有時(shí)即便是按上面的方法都做了也解決不了,比如我這次就是還出現(xiàn)下面的問(wèn)題:錯(cuò)誤3errorLNK2019:無(wú)法解析的外部符號(hào)_pcap_loop,該符號(hào)在函數(shù)_wmain中被引用錯(cuò)誤8errorLNK2019:無(wú)法解析的外部符號(hào)_pcap_freealldevs,該符號(hào)在函數(shù)_wmain中被引用但是我用了下面的語(yǔ)句即可解決了:#pragmacomment(lib,"wpcap.lib")5、如果出現(xiàn)下面的問(wèn)題:錯(cuò)誤3errorLNK2019:無(wú)法解析的外部符號(hào)__imp__ntohs@4,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年巴音郭楞職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)新版
- 2025年安徽省銅陵市單招職業(yè)傾向性考試題庫(kù)完整
- 2025年安徽審計(jì)職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)完整版
- 2025年安徽省池州市單招職業(yè)適應(yīng)性考試題庫(kù)學(xué)生專用
- 2025年阿勒泰職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- 2025年安徽中澳科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案一套
- 合作出版圖書(shū)合同范本
- 溫州醫(yī)科大學(xué)仁濟(jì)學(xué)院《藥用作物栽培學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江國(guó)際海運(yùn)職業(yè)技術(shù)學(xué)院《蠟染扎染》2023-2024學(xué)年第二學(xué)期期末試卷
- 泉州職業(yè)技術(shù)大學(xué)《企業(yè)并購(gòu)與重組》2023-2024學(xué)年第二學(xué)期期末試卷
- 根管治療病例分享
- 數(shù)學(xué)課后訓(xùn)練:正態(tài)分布
- DB5115-T 129-2024《油樟優(yōu)樹(shù)選擇技術(shù)規(guī)程》
- (完整版)西泠印社出版社三年級(jí)下冊(cè)《書(shū)法練習(xí)指導(dǎo)》完整教案
- 《電工儀表與測(cè)量》課程教學(xué)大綱
- 【企業(yè)盈利能力探析的國(guó)內(nèi)外文獻(xiàn)綜述2400字】
- 危急值的考試題及答案
- 食品安全制度目錄
- 新犯罪學(xué)完整版課件電子教案
- 2025新高考方案一輪物理參考答案與詳解
- 數(shù)字孿生與光伏儲(chǔ)能集成
評(píng)論
0/150
提交評(píng)論