應用抓包過濾,選擇Capture | Options,擴展窗口查看到Capture Filter欄。雙擊選定的接口,如下圖所示,彈出Edit Interface Settints窗口。

下圖顯示了Edit Interface Settings窗口,這里可以設置抓包過濾條件。如果你確知抓包過濾條件的語法,直接在Capture Filter區(qū)域輸入。在輸入錯誤時,Wireshark通過紅色背景區(qū)域表明無法處理過濾條件。最有可能的情況是,過濾條件中含有輸入錯誤,或是使用了display filter的語法。
點擊Capture Filter按鈕查看并選擇已保存的抓包過濾條件。

更多信息
抓取指定**IP地址的數據流:**
如果你的抓包環(huán)境下有很多主機正在通訊,可以考慮使用所觀察主機的IP地址來進行過濾。以下為IP地址抓包過濾示例:
- host 10.3.1.1:抓取發(fā)到/來自10.3.1.1的數據流
- host 2406:da00:ff00::6b16:f02d:抓取發(fā)到/來自IPv6地址2406:da00:ff00::6b16:f02d的數據流
- not host 10.3.1.1:抓取除了發(fā)到/來自10.3.1.1以外的所有數據流
- src host 10.3.1.1:抓取來自10.3.1.1的數據流
- dst host 10.3.1.1:抓取發(fā)到10.3.1.1的數據流
- host 10.3.1.1 or 10.3.1.2:抓取發(fā)到/來自10.3.1.1,以及與之通訊的所有數據流,與10.3.1.2,以及與之通訊的所有數據流
- host?www.espn.com:抓取發(fā)到/來自所有解析為www.espn.com的IP地址的數據流
抓取指定**IP地址范圍的數據流:**
當你需要抓取來自/發(fā)到一組地址的數據流,可以采用CIDR(無類別域間路由,Classless Interdomain Routing)格式或使用mask參數。
- net 10.3.0.0/16:抓取網絡10.3.0.0上發(fā)到/來自所有主機的數據流(16表示長度)
- net 10.3.0.0 mask 255.255.0.0:與之前的過濾結果相同
- ip6 net 2406:da00:ff00::/64:抓取網絡2406:da00:ff00:0000(IPv6)上發(fā)到/來自所有主機的數據流
- not dst net 10.3.0.0/16:抓取除了發(fā)到以10.3開頭的IP地址以外的所有數據流
- not src net 10.3.0.0/16:抓取除了來自以10.3開頭的IP地址以外的所有數據流
- ip proto :抓取ip協議字段等于值的報文。如TCP(code 6), UDP(code 17), ICMP(code 1)。
- ip[2:2]==:ip報文大小
- ip[8]==:TTL(Time to Live)值
- ip[9]==:協議值
- icmp[icmptype]==:?抓取?ICMP代碼等于identifier的ICMP報文,?如icmp-echo?以及?icmp-request。
方括號中第一個數字表示從協議頭開始的偏移量,第二個數字表示需要觀察多少位。

抓取發(fā)到廣播或多播地址的數據流**:**
只需偵聽廣播或多播數據流,就可以掌握網絡上主機的許多信息。
- ip broadcast:抓取廣播報文
- ip multicast:抓取多播報文
- dst host ff02::1:抓取到IPv6多播地址所有主機的數據流
- dst host ff02::2:抓取到IPv6多播地址所有路由器的數據流
小貼士:
Wireshark包含了一些默認的抓包過濾條件。點擊主工具欄的Edit Capture Filters,跳轉到已保存抓包過濾列表。你會發(fā)現一些常見抓包過濾的示例。
抓取基于**MAC地址的數據流:**
當你需要抓取發(fā)到/來自某一主機的IPv4或IPv6數據流,可創(chuàng)建基于主機MAC地址的抓包過濾條件。
應用MAC地址時,需確保與目標主機處于同一網段。
- ether host 00:08:15:00:08:15:抓取發(fā)到/來自00:08:15:00:08:15的數據流
- ether src 02:0A:42:23:41:AC:抓取來自02:0A:42:23:41:AC的數據流
- ether dst 02:0A:42:23:41:AC:抓取發(fā)到02:0A:42:23:41:AC的數據流
- not ether host?00:08:15:00:08:15:抓取除了發(fā)到/來自00:08:15:00:08:15以外的所有數據流
- ether broadcast或ether dst ff:ff:ff:ff:ff:ff:抓取廣播報文
- ether multicast:多播報文
- 抓取指定以太網類型的報文:ether proto 0800
- 抓取指定VLAN:vlan
- 抓取指定幾個VLAN:vlan and vlan
抓取基于指定應用的數據流**:**
你可能需要查看基于一個或幾個應用的數據流。抓包過濾器語法無法識別應用名,因此需要根據端口號來定義應用。通過目標應用的TCP或UDP端口號,將不相關的報文過濾掉。
- port 53:抓取發(fā)到/來自端口53的UDP/TCP數據流(典型是DNS數據流)
- not?port 53:抓取除了發(fā)到/來自端口53以外的UDP/TCP數據流
- port 80:抓取發(fā)到/來自端口80的UDP/TCP數據流(典型是HTTP數據流)
- udp port 67:抓取發(fā)到/來自端口67的UDP數據流(典型是DHCP據流)
- tcp port 21:抓取發(fā)到/來自端口21的TCP數據流(典型是FTP命令通道)
- portrange 1-80:抓取發(fā)到/來自端口1-80的所有UDP/TCP數據流
- tcp portrange 1-80:抓取發(fā)到/來自端口1-80的所有TCP數據流
抓取結合端口的數據流**:**
當你需要抓取多個不連續(xù)端口號的數據流,將它們通過邏輯符號連接起來,如下圖所示:
- port 20 or port 21:抓取發(fā)到/來自端口20或21的UDP/TCP數據流(典型是FTP數據和命令端口)
- host 10.3.1.1 and port 80:抓取發(fā)到/來自10.3.1.1端口80的數據流
- host 10.3.1.1 and not port 80:抓取發(fā)到/來自10.3.1.1除了端口80以外的數據流
- udp src port 68 and udp dst port 67:抓取從端口68到端口67的所有UDP數據流(典型是從DHCP客戶端到DHCP服務器)
- udp src port 67 and udp dst port 68:抓取從端口67到端口68的所有UDP數據流(典型是從DHCP服務器到DHCP客戶端)
- 抓取TCP連接的開始(SYN)和結束(FIN)報文,配置tcp[tcpflags] & (tcp-syn|tcp-fin)!=0
- 抓取所有RST(Reset)標志位為1的TCP報文,配置tcp[tcpflags] & (tcp-rst)!=0
- less :抓取小于等于某一長度的報文,等同于len
- greater :抓取大于等于某一長度的報文,等同于len >=
SYN:?簡歷連接的信號
FIN:?關閉連接的信號
ACK:?確認接收數據的信號
RST:?立即關閉連接的信號
PSH:?推信號,盡快將數據轉由應用處理
- tcp[13] & 0×00 = 0: No flags set (null scan)
- tcp[13] & 0×01 = 1: FIN set and ACK not set
- tcp[13] & 0×03 = 3: SYN set and FIN set
- tcp[13] & 0×05 = 5: RST set and FIN set
- tcp[13] & 0×06 = 6: SYN set and RST set
- tcp[13] & 0×08 = 8: PSH set and ACK not set
tcp[13]是從協議頭開始的偏移量,0,1,3,5,6,8是標識位

盡量避免使用抓包過濾。即便多看幾個報文,也比漏看一個報文要好。當你抓取了大量報文的時候,用顯示過濾(過濾選項也更多)來重點查看某一數據流。
小貼士:
如果你需要查看TCP幀中的某一ASCII字符串,用Wireshark String-Matching Capture Filter Generator(http://www.wireshark.org/tools/string-cf.html)。例如,想要抓取HTTP GET報文,輸入GET并將TCP偏移量設置為0。
更多建議: