1. 程式人生 > >wireshark顯示過濾表達式書寫規律說明

wireshark顯示過濾表達式書寫規律說明

全部 過濾器 80端口 faq 目標 簡單 兩個 有一個 uri

書寫過濾表達式篩選數據包是wireshark使用的精華所在。

剛開始接觸wireshark的時候看到把所有數據包都攔截下來感覺強無敵,但是面對一大堆的數據包要問有什麽用或者說想要找到我想要的那些數據包怎麽找(比如telnet登錄過程的那些數據包)完全是一臉茫然。後來逐漸認識到要寫過濾表達式,但感覺相當復雜,點開wireshark的過濾器表達式看著長長的過濾項頭皮發麻完全不會用,基本每次過濾都百度用得很難受。後來發現wireshark的過濾表達式還是很有規律的,明白規律之後使用就簡單了。

一、基本過濾表達式

一條基本的表達式由過濾項、過濾關系、過濾值三項組成。

比如ip.addr == 192.168.1.1,這條表達式中ip.addr是過濾項、==是過濾關系,192.168.1.1是過濾值(整條表達示的意思是找出所有ip協議中源或目標ip、等於、192.168.1.1的數據包)

1.1 過濾項

初學者感覺的“過濾表達式復雜”,最主要就是在這個過濾項上:一是不知道有哪些過濾項,二是不知道過濾項該怎麽寫。

這兩個問題有一個共同的答案-----wireshark的過濾項是“協議“+”.“+”協議字段”的模式。以端口為例,端口出現於tcp協議中所以有端口這個過濾項且其寫法就是tcp.port。

推廣到其他協議,如eth、ip、http、telnet、ftp、icmp、snmp等等其他協議都是這麽個書寫思路。當然wireshark出於縮減長度的原因有些字段沒有使用協議規定的名稱而是使用簡寫(比如Destination Port在wireshark中寫為dstport)又出於簡使用增加了一些協議中沒有的字段(比如tcp協議只有源端口和目標端口字段,為了簡便使用wireshark增加了tcp.port字段來同時代表這兩個),但思路總的算是不變的。而且在實際使用時我們輸入“協議”+“.”wireshark就會有支持的字段提示,看下名稱就大概知道要用哪個字段了。wireshark支持的全部協議及協議字段可查看官方說明。

1.2 過濾關系

過濾關系就是大於、小於、等於等幾種等式關系,我們可以直接看官方給出的表。註意其中有“English”和“C-like”兩個字段,這個意思是說“English”和“C-like”這兩種寫法在wireshark中是等價的、都是可用的。

技術分享圖片

1.3 過濾值

過濾值就是設定的過濾項應該滿足過濾關系的標準,比如500、5000、50000等等。過濾值的寫法一般已經被過濾項和過濾關系設定好了,只是填下自己的期望值就可以了。

二、復合過濾表達示

所謂復合過濾表達示,就是指由多條基本過濾表達式組合而成的表達示。基本過濾表達式的寫法還是不變的,復合過濾表達示多出來的東西就只是基本過濾表達示的“連接詞”

我們依然直接參照官方給出的表,同樣“English”和“C-like”這兩個字段還是說明這兩種寫法在wireshark中是等價的、都是可用的。

技術分享圖片

三、常見用過濾需求

數據鏈路層:

篩選mac地址為04:f9:38:ad:13:26的數據包----eth.src == 04:f9:38:ad:13:26

篩選源mac地址為04:f9:38:ad:13:26的數據包----eth.src == 04:f9:38:ad:13:26

網絡層:

篩選ip地址為192.168.1.1的數據包----ip.addr == 192.168.1.1

篩選192.168.1.0網段的數據---- ip contains "192.168.1"

篩選192.168.1.1和192.168.1.2之間的數據包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2

篩選從192.168.1.1到192.168.1.2的數據包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2

傳輸層:

篩選tcp協議的數據包----tcp

篩選除tcp協議以外的數據包----!tcp

篩選端口為80的數據包----tcp.port == 80

篩選12345端口和80端口之間的數據包----tcp.port == 12345 && tcp.port == 80

篩選從12345端口到80端口的數據包----tcp.srcport == 12345 && tcp.dstport == 80

應用層:

篩選url中包含.php的http數據包----http.request.uri contains ".php"

篩選內容包含username的http數據包----http contains "username"

參考:

官方文檔:https://www.wireshark.org/docs/wsug_html_chunked/ChapterWork.html

wireshark顯示過濾表達式書寫規律說明