Wireshark使用教程(界面說明、捕獲過濾器表達式、顯示過濾器表達式)

一、說明

1.1 背景說明

對於大多數剛開始接觸wireshark的使用者而言,經常是開始的時候時候看到wireshark能把所有數據包都攔截下來覺得強無敵,但是面對一大堆的數據包要問有什麼用或者說想要找到我想要的那些數據包怎麼找(比如telnet登錄過程的那些數據包)則完全是一臉茫然。

一是界面一堆窗口,什麼作用什麼區別看不懂;二是捕獲、顯示過濾器表達示看不出有什麼規律,每次過濾都要百度找半天。其實wireshark界面還是比較清晰的,過濾器表過示也不困難,我們今天就來破解這wireshark使用的兩大難題。

官網地址:https://www.wireshark.org/

官網下載地址:https://www.wireshark.org/#download

安裝就不多說了和一般windows一樣下一步下一下裝就可以了。另外ethereal爲什麼在2006年更名wireshark參見:https://www.linux.com/news/ethereal-changes-name-wireshark

添加一個菜單中文版破解分享給你們

http://www.cr173.com/soft/44435.html

 

1.2 攔截本地迴環數據

另外注意本機訪問本機的迴環數據是不經過網卡的,比如我們在本機訪問搭建在本機上的web服務,但我們經常有服務搭建在本機的操作也經常有攔截本地迴環數據包加以分析的需求,所以我們環要攔載迴環數據包。操作如下。

首先,以管理員身份運行cmd(普通用戶沒有路由表操作權限,會提示“請求的操作需要提升”)

然後,使用ipconfig查看本機ip和網關:

ipconfig

再然後,使用以下命令添加路由,指定迴環數據也要先轉發到網關(使用上一步獲取本的本機ip和網關替換其中的<your_IP>和<gateway_IP>):

route add <your_IP> mask 255.255.255.255 <gateway_IP> metric 1

最後,查看路由表中路由是否已添加成功:

route print

迴環數據經網關再回來會增加網卡的壓力,可使用以下命令刪除路由(使用前邊獲取本的本機ip替換其中的<your_IP>):

route delete <your_IP>

 

二、Wireshark界面說明

過濾器表達式書寫是wireshark使用的核心,但在此之前,很多初學者還會碰到一個難題,就是感覺wireshark界面上很多東西不懂怎麼看。其實還是挺明瞭的我們下面簡單說一下,如下圖。

1號窗口展示的是wireshark捕獲到的所有數據包的列表。注意最後一列Info列是wireshark組織的說明列並不一定是該數據包中的原始內容。

2號窗口是1號窗口中選定的數據包的分協議層展示。底色爲紅色的是因爲wireshark開啓校驗和驗證而該層協議校驗和又不正確所致。

3號窗口是1號窗口中選定的數據包的源數據,其中左側是十六進制表示右側是ASCII碼錶示。另外在2號窗口中選中某層或某字段,3號窗口對應位置也會被高亮。

被認爲最難的其實還是2號窗口展開後的內容不懂怎麼看,其實也很明瞭,以IP層爲例:

每一行就對應該層協議的一個字段;中括號行是前一字段的說明。

冒號前的英文是協議字段的名稱;冒號後是該數據包中該協議字段的值。

 

三、捕獲過濾器表達式

捕獲過濾器表達式作用在wireshark開始捕獲數據包之前,只捕獲符合條件的數據包,不記錄不符合條件的數據包。

捕獲過濾器表達式沒有像顯示過濾器表達式那樣明顯的規律,但寫法不多所以也不難;而且除非全部捕獲要佔用的磁盤空間實現太大,且你非常明確過濾掉的數據包是你不需要的,不然一般都不用捕獲過濾器表達式而用顯示過濾器表達式。

在wireshark2.x版本,啓動後歡迎界面即有捕獲過濾器,在其中輸入過濾表達式開始捕獲數據包時即會生效:

點擊圖中“書籤”標誌,再點管理“捕獲篩選器”,即可看到常用捕獲過濾表達示的書寫形式

 

四、顯示過濾器表達示及其書寫規律

顯示過濾器表達式作用在在wireshark捕獲數據包之後,從已捕獲的所有數據包中顯示出符合條件的數據包,隱藏不符合條件的數據包。

顯示過濾表達示在工具欄下方的“顯示過濾器”輸入框輸入即可生效

4.1 基本過濾表達式

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

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

4.1.1 過濾項

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

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

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

4.1.2 過濾關係

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

4.1.3 過濾值

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

 

4.2 複合過濾表達示

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

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

 

4.3 常見用顯示過濾需求及其對應表達式

數據鏈路層:

篩選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

應用層:

特別說明----http中http.request表示請求頭中的第一行(如GET index.jsp HTTP/1.1),http.response表示響應頭中的第一行(如HTTP/1.1 200 OK),其他頭部都用http.header_name形式。

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章