Winpcap使用經驗

2021-09-24 23:25:28 字數 1322 閱讀 3205

1.過濾規則

對winpcap的過濾表示式語法進行一下簡要的介紹,其中關鍵字用黑體字表示。

1) 表示式支援邏輯操作符,可以使用關鍵字 and、or、not對子表示式進行組合,同時支援使用小括號。

2) 基於協議的過濾要使用協議限定符,協議限定符可以為ip、arp、rarp、tcp、udp等。

3) 基於mac位址的過濾要使用限定符ether(代表乙太網位址)、當該mac位址僅作為源位址時表示式為ether src mac_addr,僅作為目的位址時,表示式為ether dst mac_addr,既作為源位址又作為目的位址時的表示式為ether host mac_addr。此外應注意mac_addr應該遵從00:e0:4c:e0:38:88的格式,否則編譯過濾器時會出錯。

4) 基於ip位址的過濾應該使用限定符host(代表主機位址)。當該ip位址僅作為源位址時過濾表示式應為 src host ip_addr,僅作為目的位址時的表示式為 dst host ip_addr,既作為源位址又作為目的位址時表示式為 host ip_addr。

5) 基於埠的過濾應使用限定符 port。例如僅接收80埠的資料報則表示式為port 80。

下邊給出兩個例子:

例1:只捕獲arp或icmp資料報。

過濾表示式:arp or (ip and icmp)

例2:捕獲主機192.168.1.23與192.168.1.28之間傳遞的所有udp資料報。

過濾表示式:(ip and udp)and( host 192.168.1.23 or host 192.168.1.28)

2.抓包的混雜模式與單一模式

pcap_t * pcap_open_live ( char * device, int snaplen, int promisc,

int to_ms, char * errbuf );

pcap_t就是網絡卡描述符的型別,

device是裝置名,如eth0

snaplen是要抓獲的最大的包的位元組數

promisc如果為非0的話,則將網絡卡設為混雜模式

to_ms是超時時間,如果為0則永不超時

winpcap定義了三種標誌:

pcap_openflag_promiscuous:1,它定義了介面卡(網絡卡)是否進入混雜模式(promiscuous mode)。

pcap_openflag_datatx_udp:2,它定義了資料傳輸(假如是遠端抓包)是否用udp協議來處理。

pcap_openflag_nocapture_rpcap:4,它定義了遠端探測器是否捕獲它自己產生的資料報。

winpcap使用 傳送資料報

傳送資料報是winpcap的擴充套件功能,並不是libpcap本身具備的,所以不能工作在linux下。利用pcap sendpacket 函式可以傳送單個資料報,其函式原型為 int pcap sendpacket pcap t p,u char buf,int size 說明 該函式可以傳送乙個原...

WinPcap過濾規則

下面對winpcap的過濾表示式語法進行一下簡要的介紹,其中關鍵字用黑體字表示。1 表示式支援邏輯操作符,可以使用關鍵字 and or not對子表示式進行組合,同時支援使用小括號。2 基於協議的過濾要使用協議限定符,協議限定符可以為ip arp rarp tcp udp等。3 基於mac位址的過濾...

winpcap靜默安裝

winpcap是windows下的網路嗅探庫,通常用於在程式中實現網路抓包分析。當然它也可以讓網絡卡傳送我們自己構造的資料報,從而實現一些特定的功能。通常情況下,winpcap是需要安裝的,官方提供了乙個exe的安裝檔案,會彈出對話方塊讓使用者點選下一步下一步來確認。在某些情況下,我們不希望使用者知...