Wireshark的世界裡有2種過濾器,分別是採集過濾器和顯示過濾器,採用恰當的過濾器,不但能提高數據分析的靈活性,而且能讓分析者更快看到自己想要的分析對象。
使用Wireshark採集數據包時,可能有諸多原因會使用到採集過濾器,比如減少採集的數據包大小來節省磁碟空間,加速問題和目標分析,提高軟體自身工作速率等等。本節介紹如何使用採集過濾器,以及常見的採集過濾器的特徵和表達方式,另外羅列出常用的採集過濾器表達式供參考。
為什麼要使用抓包過濾器
當網絡中數據流的規模相當龐大時,只抓取滿足某些條件的流量就顯得十分重要了。如果用戶需要在生產環境中進行流量分析,那他一定遲早會需要使用到抓包過器。用戶要在開始抓包之前使用抓包過濾器。總之,Wireshark抓取的每個數據包都會提交給抓包引擎,再由抓包引擎將抓取的數據包轉換成人類可以讀懂的格式。但是,如果用戶應用了抓包過濾器,那麼Wireshark就會丟棄與用戶需求不符的那些數據包。Wireshark不會將這些丟棄的數據包交給抓包引擎進行轉換。相比之下,顯示過器就要具體和強大得多了。在使用抓包過濾器時,用戶一定要謹慎,因為如果有些數據包因為與用戶定義的規則不符可能被丟棄,這些丟棄的數據包是無法恢復的。
創建過源器時要使用伯克利數據包過器(BPF)語法,還有很多協議分析軟體使用的也是這種語法,因為這種語法是行業標準。這種語法很容易學習和使用,使用基本的格式來構建用戶的過濾標準就行了。
如何使用抓包過濾器
最簡單直接的使用方式如下圖,在Wireshark主體界面,直接輸入抓捕過濾器表達即可。
也可以選擇已有的過濾器名稱,直接使用。如下圖。
如何管理過濾器
管理過濾器的目的是提前定義常用的過濾器,在使用的使用直接使用,以避免再去查找語法或書寫規範等操作。
選擇捕獲——捕獲過濾器,即可打開捕獲過濾器管理窗口。
在捕獲過濾器窗口,你可以定義自己想要的過濾器並保存,下次使用的使用,直接從下拉菜單選擇就行。
在定義捕獲過濾器時,有個小技巧,就是多用複製功能,這種先通過複製形似的過濾器,然後再調整修改的方式能夠加快過濾器的定義速度,提高定義過濾器的準確性。
抓包過濾器語法規則
捕獲過濾器應用於Winpcap,並使用 Berkeley Packet Filter(BPF)語法。這個語法被廣泛用於多種數據包抓包軟體,主要因為大部分數據包抓包軟體都依賴於使用BPF的libpcap/Winpcap庫。
掌握BPF語法對你在數據包層級更深入地探索網絡來說是非常關鍵的。使用BPF語法創建的過濾器被稱為表達式,並且每個表達式包含一個或多個原語。每個原語包含一個或多個限定詞,然後跟著一個ID名字或者數字,如下圖是對限定詞的介紹。
下圖是一個完整的抓包過濾器示例。
在這個給定表達式的組成部分中,一個src限定詞和192.168.0.10組成了一個原語。這個原語本身就是表達式,可以用它只捕獲那些源IP位址是192.168.0.10的流量。
你可以使用以下3種邏輯運算符,對原語進行組合,從而創建更高級的表達式。
連接運算符與(&&)
選擇運算符或(II)
否定運算符非(!)
舉例來說,下面的這個表達式只對源地址是192.168.0.10和源埠或目標埠是80的流量進行捕獲。
src 1921680.108 && port 80
常見抓包過濾器列表
以下是常見的抓包過濾器,供參考。