您好,登錄后才能下訂單哦!
在Wireshark中往往會抓到很多數據,這時我們就需要用到過濾器Filter來篩選出我們所關心的數據包。
Wireshark提供了兩種過濾器:
捕獲過濾器:在抓包之前就設定好過濾條件,然后只抓取符合條件的數據包。
顯示過濾器:在已捕獲的數據包集合中設置過濾條件,隱藏不想顯示的數據包,只顯示符合條件的數據包。
需要注意的是,這兩種過濾器所使用的語法是完全不同的,在本篇博文中將介紹捕獲過濾器。
使用捕獲過濾器的主要原因就是性能。如果你知道并不需要分析某個類型的流量,那么可以簡單地使用捕獲過濾器過濾掉它,從而節省那些會被用來捕獲這些數據包的處理器資源。當處理大量數據的時候,使用捕獲過濾器是相當好用的。
新版Wireshark的初始界面非常簡潔,主要就提供了兩項功能:先設置捕獲過濾器,然后再選擇負責抓包的網卡。由此可見捕獲過濾器的重要性。
比如我們希望只抓取與80端口之間的通信,那么可以設置過濾規則“port 80”。
捕獲過濾器應用于Winpcap,并使用Berkeley Packet Filter(BPF)語法,其語法規則如下:
協議 方向 類型 數據 |
協議,可能的值:ether、ip、arp、tcp、udp、http、ftp……,如果沒有特別指明是什么協議,則默認使用所有支持的協議。
方向,可能的值:src、dst,如果沒有特別指明來源或目的地,則默認使用“src or dst”作為關鍵字。例如,“host 10.2.2.2”與“src or dst host 10.2.2.2”是一樣的。
類型,可能的值:net、port、host,如果沒有指定此值,則默認使用”host”關鍵字。例如,“src 10.1.1.1”與“src host 10.1.1.1”相同。
我們還可以使用以下三種邏輯運算符,對表達式進行組合,從而創建更高級的表達式。
邏輯與&&,邏輯或||,邏輯非! |
比如下面這個表達式,只捕獲源地址是192.168.0.10并且源端口或目的端口是80的數據包。
src 192.168.0.10 && port 80 |
應用示例
如果我們希望抓取某臺特定主機或設備的數據包,那么可以根據設備的IP地址或MAC地址來設置過濾規則。
比如只抓取IP地址為192.168.0.10的數據包。
host 192.168.0.10 |
如果考慮到主機的IP地址可能會變化,那么可以指定MAC地址進行過濾。
ether host 00-50-56-C0-00-01 |
也可以根據數據的流向來過濾:
src host 192.168.0.10 //從192.168.0.10發出的數據包 dst host 192.168.0.10 //發往192.168.0.10的數據包 ether src host 00-50-56-C0-00-01 //從00-50-56-C0-00-01發出的數據包 ether dst host 00-50-56-C0-00-01 //發往00-50-56-C0-00-01的數據包 |
需要注意的是,host在表達式中是默認選項,因而上面的這幾個表達式無論是否加上host都是表達相同含義。
再比如通過端口進行過濾:
port 8080 //只捕獲8080端口的流量 !port 8080 //捕獲8080端口外的所有流量 dst port 8080 //只捕獲前往8080端口的流量 |
通過協議或通信方式進行過濾:
icmp //只捕獲ICMP流量 !broadcast //不要抓取廣播包 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。