WinPcap網(wǎng)絡(luò)封包抓取工具
WinPcap 是用于網(wǎng)絡(luò)封包抓取的一套工具,可適用于32位的操作平臺(tái)上解析網(wǎng)絡(luò)封包,包含了核心的封包過濾,一個(gè)底層動(dòng)態(tài)鏈接庫(kù),和一個(gè)高層系統(tǒng)函數(shù)庫(kù),及可用來直接存取封包的應(yīng)用程序界面。
WinPcap 是一個(gè)免費(fèi)公開的軟件系統(tǒng)。它用于 Windows 系統(tǒng)下的直接的網(wǎng)絡(luò)編程。大多數(shù)網(wǎng)絡(luò)應(yīng)用程序訪問網(wǎng)絡(luò)是通過廣泛使用的套接字。這種方法很容易實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸,因?yàn)椴僮飨到y(tǒng)負(fù)責(zé)底層的細(xì)節(jié)(比如協(xié)議棧,數(shù)據(jù)流組裝等)以及提供了類似于文件讀寫的函數(shù)接口。
但是有時(shí),簡(jiǎn)單的方法是不夠的。因?yàn)橐恍?yīng)用程序需要一個(gè)底層環(huán)境去直接操縱網(wǎng)絡(luò)通信。因此需要一個(gè)不需要協(xié)議棧支持的原始的訪問網(wǎng)絡(luò)的方法。
WinPcap 適用于下面的開發(fā)者:
1、捕獲原始數(shù)據(jù)包。不管這個(gè)包是發(fā)往本地機(jī),還是其他機(jī)器之間的交換包。
2、在數(shù)據(jù)包被發(fā)送到應(yīng)用程序之前,通過用戶定義的規(guī)則過濾。
3、向網(wǎng)絡(luò)發(fā)送原始數(shù)據(jù)包。
4、對(duì)網(wǎng)絡(luò)通信量做出統(tǒng)計(jì)。
這些功能依賴于 Win32系統(tǒng)內(nèi)核中的設(shè)備驅(qū)動(dòng)以及一些動(dòng)態(tài)鏈接庫(kù)。
WinPcap 提供了一個(gè)強(qiáng)大的編程接口,它很容易地在各個(gè)操作系統(tǒng)之間進(jìn)行移植,也很方便程序員進(jìn)行開發(fā)。
什么樣的程序需要使用 Winpcap
很多不同的工具軟件使用 WinPcap 于網(wǎng)絡(luò)分析,故障排除,網(wǎng)絡(luò)安全監(jiān)控等方面。WinPcap 特別適用于下面這幾個(gè)經(jīng)典領(lǐng)域:
1、網(wǎng)絡(luò)及協(xié)議分析
2、網(wǎng)絡(luò)監(jiān)控
3、通信日志記錄
4、traffic generators
5、用戶級(jí)別的橋路和路由
6、網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NIDS)
7、網(wǎng)絡(luò)掃描
8、安全工具
WinPcap 有些方面不能做。它不依靠主機(jī)的諸如 TCP/IP 協(xié)議去收發(fā)數(shù)據(jù)包。這意味著它不能阻塞,不能處理同一臺(tái)主機(jī)中各程序之間的通信數(shù)據(jù)。它只能“嗅探”到物理線路上的數(shù)據(jù)報(bào)。因此它不適用于 traffic shapers,QoS 調(diào)度,以及個(gè)人防火墻。
WinPcap 內(nèi)部結(jié)構(gòu)
WinPcap 是一個(gè) Win32平臺(tái)下用于抓包和分析的系統(tǒng)。包括一個(gè)內(nèi)核級(jí)別的 packet filter,一個(gè)底層的 DLL(packet.dll)和一個(gè)高級(jí)的獨(dú)立于系統(tǒng)的 DLL(Wpcap.dll)
1、 捕獲系統(tǒng)要能得到網(wǎng)絡(luò)上原始傳輸數(shù)據(jù)必須繞過協(xié)議棧。這就需要一個(gè)??爝\(yùn)行于操作系統(tǒng)內(nèi)核,與網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)接口直接打交道。這一部分極端依賴系統(tǒng),也被認(rèn) 為是一種設(shè)備驅(qū)動(dòng)?,F(xiàn)有版本有 Windows 85,98,ME,NT 4,2000,Xp。這些驅(qū)動(dòng)提供一些如數(shù)據(jù)包的捕獲與發(fā)送這些基本功能,還提供一些高級(jí)的可編程的過濾系統(tǒng)和監(jiān)控引擎。過濾系統(tǒng)可以約束只捕獲特定的數(shù) 據(jù)包(比如,只捕獲特定主機(jī)發(fā)送的 FTP 報(bào)文)。監(jiān)控引擎提供了一種強(qiáng)大但簡(jiǎn)單的使用機(jī)制去獲得網(wǎng)絡(luò)通信的統(tǒng)計(jì)荷載數(shù)據(jù)。
2、捕獲系統(tǒng)要讓用戶程序使用內(nèi)核提供的功能必須要有一個(gè)編程接口。Winpcap 提供了兩個(gè)不同的庫(kù):packet.dll 和 wpcap.dll。
packet.dll 提供一個(gè)底層的 API,通過這個(gè) API 可直接訪問網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng),而獨(dú)立于 Microsoft OS。
wpcap.dll 是一個(gè)高層的強(qiáng)大捕獲程序庫(kù),與 Unix 下的 libpcap 兼容。它獨(dú)立于下層的網(wǎng)絡(luò)硬件和操作系統(tǒng)。
