天天看點

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

介紹

掌握顯示過濾器對于網絡分析者來說是一項必備的技能。這是一項大海撈針的技巧。學會建構,編輯,儲存關鍵的顯示過濾器能夠節省數小時的時間。

與捕捉過濾器使用的BPF文法不同,顯示過濾器使用的是Wireshark特定的格式。除了某些特例之外,Wireshark顯示過濾器和捕捉過濾器有很大的差別。

最簡單的過濾器文法:

最簡單的顯示過濾器可基于協定,應用,域名,或字元,對大小寫敏感。絕大多數簡單的顯示過濾器由小寫字母組成。

協定過濾器:

  • arp:顯示所有包括ARP請求和回複在内的所有ARP資料流。
  •  ip:顯示内含IPv4頭在内的(如ICMP目的位址不可達封包,在ICMP封包頭之後傳回到來方向的IPv4頭)IP資料流。
  • ipv6:顯示所有IPv6資料流,包括内含IPv6封包頭的IPv4封包,如6to4,Teredo,以及ISATAP資料流。
  • tcp:顯示所有基于TCP的資料流。

應用過濾器:

  • bootp:顯示所有DHCP資料流(基于BOOTP)。
  • dns:顯示包括TCP區域傳輸以及基于标準UDP的DNS請求和回複在内的所有DNS資料流。
  • tftp:顯示所有TFTP(Trivial File Transfer Protocol)資料流。
  • http:顯示所有HTTP指令,回複以及資料傳輸封包,但不顯示TCP握手封包,TCP ACK封包以及TCP結束封包。
  • icmp:顯示所有ICMP封包。

域過濾器:

  • boot.option.hostname:顯示所有包含主機名的DHCP資料流(DHCP基于BOOTP)。
  • http:host:顯示所有包含HTTP主機名字段的所有HTTP封包。此封包是用戶端向網絡伺服器發送請求時發出的。
  • ftp.request.command:顯示所有包含指令的FTP資料流,比如USER,PASS,或RETR指令。

字元過濾器:

  • tcp.analysis.flags:顯示所有包含TCP分析辨別的所有封包,包括封包丢失,重傳,或零視窗辨別。
  • tcp.analysis,zero_window:顯示含有表明發送方的接收緩存用完辨別的封包。

了解字段名:

很多顯示過濾器都是基于字段名(例如http.host)。要了解字段名,在Packet list面闆選中字段檢視Status條,如下圖所示。

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

本例中,我們在Packet Display面闆中選中第10幀,然後在Packet Details面闆中展開HTTP封包頭。之後在封包的HTTP段點選Request Method行,狀态條表明這一字段稱為http.request.method。

我們在顯示過濾器區域輸入http.request.method以顯示所有包含這一字段的封包。如下圖所示,注意到Status條表明此抓封包件包含2011個封包隻有101個封包符合過濾條件。

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

這是一個很好用的過濾器,以确定HTTP用戶端請求了哪些内容。網絡伺服器不發送HTTP request method,它們發送HTTP響應代碼。

使用自動完成功能:

當你在過濾器區域輸入http.request.method的時候,Wireshark打開一個視窗讓你周遊過濾器選項。當你輸入http.(包括點号),你會看到所有可能的以此為開頭的顯示過濾條件清單。繼續輸入http.request. ,會看到以這一短語為開頭的過濾條件,如下圖所示:

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

可以使用這一自動完成功能檢視所有可用的過濾條件。例如,輸入tcp. ,Wireshark會列出所有可用的TCP過濾條件。如果輸入tcp.analysis. ,Wireshark會列出所有處理TCP問題與性能的TCP analysis過濾條件,如下圖:

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

顯示過濾器比較運算符:

通過擴充過濾條件可查找某一域值,Wireshark針對此功能支援數字比較運算符。

1. ==或eq

例如:ip.src == 10.2.2.2

顯示所有源位址為10.2.2.2的IPv4資料流

2. !=或ne

例如:tcp.srcport != 80

顯示源端口除了80以外的所有TCP資料流

3. >或gt

例如:frame.time_relative > 1

顯示距前一個封包到達時間相差1秒的封包

4. <或lt

例如:tcp.window_size < 1460

顯示當TCP接收視窗小于1460位元組時的封包

5. >=或ge

例如:dns.count.answers >= 10

顯示包含10個以上answer的DNS響應封包

6. <=或le

例如:ip.ttl <= 10

顯示IP封包中Time to Live字段小于等于10的封包

7. contains

例如:http contains “GET”

顯示所有HTTP用戶端發送給HTTP伺服器的GET請求

對于基于TCP應用的過濾條件采用比較運算符。例如,如果想看端口80上面的HTTP資料流,使用HTTP.port==80。

小貼士:

運算符兩邊不用留白格。ip.src == 10.2.2.2與ip.src==10.2.2.2的效果是相同的。

使用Expressions:

當你實在不知道該過濾些什麼的時候,使用顯示過濾器工具欄的Expression按鈕。在Filter Expression視窗,輸入感興趣的應用或協定名,跳轉到Field Name清單中相應條目。Relation選項用來添加一個比較運算符,視窗右端是預先定義的值。點選Apply按鈕完成。

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

編輯和使用預設過濾器:

Wireshark提供15個預設顯示過濾器供建立新的顯示過濾器時參考。點選Filter按鈕或點選Display Filter按鈕打開顯示過濾器視窗,如下圖所示:

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)

下圖顯示了預設過濾器清單,選中之後點選OK。

一站式學習Wireshark(九):應用Wireshark顯示過濾器分析特定資料流(上)