wireshark 捕捉過濾器和顯示過濾器的區別 及各自的用法

NO IMAGE

同:捕捉過濾器和顯示過濾器同樣面臨首要的問題是選擇,選擇捕捉或顯示那些資料。
異:
捕捉過濾器 (此過濾器不需要比較運算子,查詢關鍵字請全部小寫)
捕捉過濾器是資料經過的第一層過濾器,它用於控制捕捉資料的數量,以避免產生過大的日誌檔案。
捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟體一樣,比如著名的TCPdump。捕捉過濾器必須在開始捕捉前設定完畢,這一點跟顯示過濾器是不同的。

顯示過濾器 (支援比較運算子,關鍵字全部小寫)
顯示過濾器是一種更為強大(複雜)的過濾器。它允許您在日誌檔案中迅速準確地找到所需要的記錄。
通常經過捕捉過濾器過濾後的資料還是很複雜。此時您可以使用顯示過濾器進行更加細緻的查詢。它的功能比捕捉過濾器更為強大,而且在您想修改過濾器條件時,並不需要重新捕捉一次。

1. 捕捉過濾器

捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟體一樣,比如著名的TCPdump。捕捉過濾器必須在開始捕捉前設定完畢,這一點跟顯示過濾器是不同的。

設定捕捉過濾器的步驟是:
– 選擇 capture -> options。
– 填寫”capture filter”欄或者點選”capture filter”按鈕為您的過濾器起一個名字並儲存,以便在今後的捕捉中繼續使用這個過濾器。
– 點選開始(Start)進行捕捉。

wireshark capture options

wireshark capture options 

語法:  Protocol  Direction  Host(s)  Value  Logical Operations  Other expression
例子:  tcp  dst  host  10.1.1.1  and  tcp dst 10.2.2.2 3128

寫放逐之羅標:羅標在寫一個放逐的故事。

Wireshark圖解教程(簡介、抓包、過濾器) Protocol(協議):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果沒有特別指明是什麼協議,則預設使用所有支援的協議。

Wireshark圖解教程(簡介、抓包、過濾器) Direction(方向):
可能的值: src, dst, src and dst, src or dst
如果沒有特別指明來源或目的地,則預設使用 “src or dst” 作為關鍵字。
例如,”host 10.2.2.2″與”src or dst host 10.2.2.2″是一樣的。
Wireshark圖解教程(簡介、抓包、過濾器) Host(s):
可能的值: net, port, host, portrange.(net跟一個網段、port跟埠、host 跟IP地址或域名、portrange埠範圍,比如80-110埠)
如果沒有指定此值,則預設使用”host”關鍵字。
例如,”src 10.1.1.1″與”src host 10.1.1.1″相同。

Wireshark圖解教程(簡介、抓包、過濾器) Logical Operations(邏輯運算):
可能的值:not, and, or.
否(“not”)具有最高的優先順序。或(“or”)和與(“and”)具有相同的優先順序,運算時從左至右進行。
例如,
“not tcp port 3128 and tcp port 23″與”(not tcp port 3128) and tcp port 23″相同。

“not tcp port 3128 and tcp port 23″與”not (tcp port 3128 and tcp port 23)”不同。

怎麼看待Logical Operations

(1)<Protocol name><Direction><Hosts><Value>作為一個組或者叫做一個表示式

(2)<Logical operation>是連結多個表示式的。

例如:<Expression1><Logical operations><Expression2><Logical operations><Expression3>……


例子:

tcp dst port 3128

顯示目的TCP埠為3128的封包。

ip src host 10.1.1.1

顯示來源IP地址為10.1.1.1的封包。

host 10.1.2.3

顯示目的或來源IP地址為10.1.2.3的封包。

src portrange 2000-2500

顯示來源為UDP或TCP,並且埠號在2000至2500範圍內的封包。

not imcp

顯示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net 10.200.0.0/16

顯示來源IP地址為10.7.2.12,但目的地不是10.200.0.0/16的封包。

(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

顯示來源IP為10.4.1.12或者來源網路為10.6.0.0/16,目的地TCP埠號在200至10000之間,並且目的位於網路10.0.0.0/8內的所有封包。


注意事項:

當使用關鍵字作為值時,需使用反斜槓“\”。
“ether proto \ip” (與關鍵字”ip”相同).
這樣寫將會以IP協議作為目標。

“ip proto \icmp” (與關鍵字”icmp”相同).
這樣寫將會以ping工具常用的icmp作為目標。

可以在”ip”或”ether”後面使用”multicast”及”broadcast”關鍵字。
當您想排除廣播請求時,”no broadcast”就會非常有用。


檢視 TCPdump的主頁以獲得更詳細的捕捉過濾器語法說明。
Wiki Wireshark website上可以找到更多捕捉過濾器的例子。

2.顯示過濾器

通常經過捕捉過濾器過濾後的資料還是很複雜。此時您可以使用顯示過濾器進行更加細緻的查詢。
它的功能比捕捉過濾器更為強大,而且在您想修改過濾器條件時,並不需要重新捕捉一次。

語法: Protocol. String 1. String 2  Comparison
operator
  Value  Logical
Operations
  Other
expression
例子:  ftp  passive  ip  ==  10.2.3.4  xor  icmp.type

Wireshark圖解教程(簡介、抓包、過濾器) Protocol(協議):

您可以使用大量位於OSI模型第2至7層的協議。點選”Expression…”按鈕後,您可以看到它們。
比如:IP,TCP,DNS,SSH

wireshark filter expression 

wireshark filter expression 

您同樣可以在如下所示位置找到所支援的協議:

wireshark supported protocols 

wireshark supported protocols 

Wireshark的網站提供了對各種 協議以及它們子類的說明

Wireshark圖解教程(簡介、抓包、過濾器) String1, String2 (可選項):

協議的子類。
點選相關父類旁的” “號,然後選擇其子類。

wireshark filter expression 

Wireshark圖解教程(簡介、抓包、過濾器) Comparison operators (比較運算子):

可以使用6種比較運算子:

英文寫法: C語言寫法: 含義:
eq  == 等於
ne !=不等於
gt >大於
lt <小於
ge >=大於等於
le <=小於等於

Wireshark圖解教程(簡介、抓包、過濾器) Logical expressions(邏輯運算子):

英文寫法: C語言寫法: 含義:
and &&邏輯與
or ||邏輯或
xor ^^邏輯異或
not !邏輯非

被程式設計師們熟知的邏輯異或是一種排除性的或。當其被用在過濾器的兩個條件之間時,只有當且僅當其中的一個條件滿足時,這樣的結果才會被顯示在螢幕上。
讓我們舉個例子:
“tcp.dstport 80 xor tcp.dstport 1025”
只有當目的TCP埠為80或者來源於埠1025(但又不能同時滿足這兩點)時,這樣的封包才會被顯示。


例子:

snmp || dns || icmp顯示SNMP或DNS或ICMP封包。
ip.addr == 10.1.1.1

顯示來源或目的IP地址為10.1.1.1的封包。

ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

顯示來源不為10.1.2.3或者目的不為10.4.5.6的封包。
換句話說,顯示的封包將會為:
來源IP:除了10.1.2.3以外任意;目的IP:任意
以及
來源IP:任意;目的IP:除了10.4.5.6以外任意

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6

顯示來源不為10.1.2.3並且目的IP不為10.4.5.6的封包。
換句話說,顯示的封包將會為:
來源IP:除了10.1.2.3以外任意;同時須滿足,目的IP:除了10.4.5.6以外任意

tcp.port == 25顯示來源或目的TCP埠號為25的封包。
tcp.dstport == 25顯示目的TCP埠號為25的封包。
tcp.flags顯示包含TCP標誌的封包。
tcp.flags.syn == 0x02顯示包含TCP SYN標誌的封包。

如果過濾器的語法是正確的,表示式的背景呈綠色。如果呈紅色,說明表示式有誤。

wireshark display filter example表示式正確
wireshark display filter example

表示式錯誤