Wireshark過濾器寫法總結
- 2020 年 3 月 18 日
- 筆記
#Wireshark提供了兩種過濾器:
1、捕獲過濾器
捕獲過濾器:在抓包之前就設定好過濾條件,然後只抓取符合條件的數據包。
2、顯示過濾器
顯示過濾器:在已捕獲的數據包集合中設置過濾條件,隱藏不想顯示的數據包,只顯示符合條件的數據包。
注意:這兩種過濾器所使用的語法是完全不同的,想想也知道,捕捉網卡數據的其實並不是Wireshark,而是WinPcap,當然要按WinPcap的規則來,顯示過濾器就是Wireshark對已捕捉的數據進行篩選。
使用捕獲過濾器的主要原因就是性能。如果你知道並不需要分析某個類型的流量,那麼可以簡單地使用捕獲過濾器過濾掉它,從而節省那些會被用來捕獲這些數據包的處理器資源。當處理大量數據的時候,使用捕獲過濾器是相當好用的。
Wireshark攔截通過網卡訪問的所有數據,前提是沒有設置任何代理。
Wireshark不能攔截本地迴環訪問的請求,即127.0.0.1或者localhost。
#過濾器具體寫法
#顯示過濾器寫法
1、過濾值比較符號及表達式之間的組合
2、針對ip的過濾
- 對源地址進行過濾
ip.src == 192.168.0.1
- 對目的地址進行過濾
ip.dst == 192.168.0.1
- 對源地址或者目的地址進行過濾
ip.addr == 192.168.0.1
- 如果想排除以上的數據包,只需要將其用括弧囊括,然後使用 "!" 即可
!(ip.addr == 192.168.0.1)
3、針對協議的過濾
- 獲某種協議的數據包,表達式很簡單僅僅需要把協議的名字輸入即可
http
注意:是否區分大小寫?答:區分,只能為小寫
- 捕獲多種協議的數據包
http or telnet
- 排除某種協議的數據包
not arp 或者 !tcp
4、針對埠的過濾(視傳輸協議而定)
- 捕獲某一埠的數據包(以tcp協議為例)
tcp.port == 80
- 捕獲多埠的數據包,可以使用and來連接,下面是捕獲高於某埠的表達式(以udp協議為例)
udp.port >= 2048
5、針對長度和內容的過濾
- 針對長度的過慮(這裡的長度指定的是數據段的長度)
udp.length < 20 http.content_length <=30
- 針對uri 內容的過濾
http.request.uri matches "user" (請求的uri中包含「user」關鍵字的)
注意:matches
後的關鍵字是不區分大小寫
的!
http.request.uri contains "User" (請求的uri中包含「user」關鍵字的)
注意:contains
後的關鍵字是區分大小寫
的!
5、針對http請求的一些過濾實例。
- 過濾出請求地址中包含「user」的請求,不包括域名;
http.request.uri contains "User"
- 精確過濾域名
http.host==baidu.com
- 模糊過濾域名
http.host contains "baidu"
- 過濾請求的content_type類型
http.content_type =="text/html"
- 過濾http請求方法
http.request.method=="POST"
- 過濾tcp埠
tcp.port==80
http && tcp.port==80 or tcp.port==5566
- 過濾http響應狀態碼
http.response.code==302
- 過濾含有指定cookie的http數據包
http.cookie contains "userid"
#捕捉過濾器寫法
在wireshark的工具欄中點擊捕獲
→捕獲過濾器
,可以看到一些過濾器的寫法,如下圖:
1、比較符號
與:&&或者and 或:||或者or 非:!或者not
實例:
src or dst portrange 6000-8000 && tcp or ip6
2、常用表達式實例
- 源地址過濾
src www.baidu.com
- 目的地址過濾
dst www.baidu.com
- 目的地址埠過濾
dst post 80
- 協議過濾
udp