1. 程式人生 > >Wireshark過濾器寫法總結

Wireshark過濾器寫法總結

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