Wirshark使用的關鍵就在于過濾出想要的資料包,下面介紹怎么過濾,
抓包過濾器
Wirshark有兩種過濾器,一個是抓包過濾器,一個是顯示過濾器,他們之間的區別在于抓包過濾器只抓取你設定的規則,同時丟棄其他資訊,顯示過濾器并不會丟棄資訊,只是將不符合規則的資料隱藏起來而已,有時候一旦資料包被丟棄,這些資料包就無法在恢復回來,還有一個區別就是,捕捉過濾器必須在開始捕捉前設定完畢,這一點跟顯示過濾器是不同的,
兩種過濾器的目的也是不同的:
捕捉過濾器是資料經過的第一層過濾器,它用于控制捕捉資料的數量,以避免產生過大的日志檔案,
顯示過濾器是一種更為強大(復雜)的過濾器,它允許您在日志檔案中迅速準確地找到所需要的記錄,
說完區別,他們也是有共同點的,就是都遵循BPF語法,看到這里,你可能大概就能知道wireshark的套路了,想用好他,熟練的使用BPF是關鍵,下面只是介紹了兩種過濾的流程,跟著步驟,誰都能完成特定的效果,但是給你一個新任務,你是否能快速過濾出想要的資料包呢?

使用演示
-
添加一條自定義的抓包規則

-
選擇自定義的抓包規則

技巧_只抓協議頭部引數的抓包過濾器
先看一個ICMP協議發包的特征,
-
發包

-
分析
你會發現每一條資料包的這個位置都是00

-
解釋
知道協議的頭部都是固定這個特征之后,我們就能完成一個根據協議頭部欄位的引數來自定義抓包過濾器,創建這類抓包過濾器的語法為:
proto[offset:size(optional)]=value
語法對應的示意圖:

icmp[0:1]=0
這樣就完成了一個只抓取ICMP回應的抓包過濾器規則,我實驗過了,只能抓包ICMP的包,

- 常用只抓協議頭的抓包過濾器規則
| 抓包過濾器規則 | 描述 |
|---|---|
| icmp[0]=0 | ICMP回應包 |
| icmp[0:1]=8 | ICMP請求包 |
| icmp[0:1]=3、icmp[13]=2 | ICMP目的主機不可達資料包,僅抓取TCP SYN標記的資料包 |
| icmp[13]=18 | 僅抓取TCP SYN/ACK標記的資料包 |
| icmp[13]=32 | 僅抓取TCP URG標記設定資料包 |
抓包過濾器語法規則解釋
語法規則圖示:

名詞解釋:
-
Protocol(協議)
常用值:ether、fddi、ip、arp、rarp、decnet、lat、sca、moprc、mopdl、tcp and udp
如果沒有特別指明是什么協議,則默認使用所有支持的協議, -
Direction(方向)
常用值:src、dst、src and dst、src or dst
如果沒有特別指明來源或目的地,則默認使用 "src or dst" 作為關鍵字,
例如:
"host 10.2.2.2" 與 "src or dst host 10.2.2.2" 相同
- Host(s):
常用值:net、port、host、portrange
如果沒有指定此值,則默認使用"host"關鍵字,
例如:
"src 10.1.1.1" 與 "src host 10.1.1.1" 相同
- Logical Operations(邏輯運算):
常用值值:not、and、or
否("not")具有最高的優先級,或("or")和與("and")具有相同的優先級,運算時從左至右進行,
例如:
"not tcp port 3128 and tcp port 23" 與 "(not tcp port 3128) and tcp port 23" 相同
"not tcp port 3128 and tcp port 23" 與 "not (tcp port 3128 and tcp port 23)" 不同
常見的抓包過濾器BPF
來源或目的地是指定地址的包
host 192.168.0.123
host www.taobao.com
范圍內的包
net 192.168.0.0/24
or
net 192.168.0.0 mask 255.255.255.0
抓取目的地是某范圍的包
dst net 192.168.0.0/24
or
dst net 192.168.0.0 mask 255.255.255.0
抓取來源是某范圍的包
src net 192.168.0.0/24
or
src net 192.168.0.0 mask 255.255.255.0
僅抓取DNS(埠是53)的包
port 53
tcp dst port 3128
顯示目的TCP埠為3128的封包,
ip src host 10.1.1.1
顯示來源IP地址為10.1.1.1的封包,
host 10.1.2.3
顯示目的或來源IP地址為10.1.2.3的封包,
src portrange 2000-2500
顯示來源為UDP或TCP,并且埠號在2000至2500范圍內的封包,
not imcp
顯示除了icmp以外的所有封包,(icmp通常被ping工具使用)
src host 10.7.2.12 and not dst net 10.200.0.0/16
顯示來源IP地址為10.7.2.12,但目的地不是10.200.0.0/16的封包,
(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8
顯示來源IP為10.4.1.12或者來源網路為10.6.0.0/16,目的地TCP埠號在200至10000之間,并且目的位于網路10.0.0.0/8內的所有封包,
顯示過濾器
使用演示
在這里輸入過濾語法,必須正確才會顯示綠色,

顯示過濾器語法規則解釋
語法圖示:

名詞解釋:
-
Protocol(協議)
您可以使用大量位于OSI模型第2至7層的協議,(wireshark支持的協議介紹 https://www.wireshark.org/docs/dfref/)
常用值:IP、TCP、DNS、SSH -
String1, String2 (可選項)
協議的子類,
點擊相關父類旁的"+"號,然后選擇其子類 -
Comparison operators (比較運算子)
可以使用6種比較運算子

-
Logical expressions(邏輯運算子)

舉例:
"tcp.dstport 80 xor tcp.dstport 1025"
只有當目的TCP埠為80或者來源于埠1025(但又不能同時滿足這兩點)時,這樣的封包才會被顯示,
常見的顯示過濾器BPF
只顯示本地發出去的包
ip.src=https://www.cnblogs.com/mysticbinary/p/=192.168.8.60
過濾從某地址發出的請求
ip.src==192.168.8.60
過濾發送到某地址的請求
ip.dst==192.168.8.60
過濾http協議
http
過濾某地址
http.request.uri=="/projectname/a.html"
過濾全地址(它與uri的區別是,包含host)
http.request.full_uri=="www.mydomain.com/projectname/a.html"
snmp || dns || icmp 顯示SNMP或DNS或ICMP封包,
ip.addr == 10.1.1.1
顯示來源或目的IP地址為10.1.1.1的封包,
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6
顯示來源不為10.1.2.3或者目的不為10.4.5.6的封包,
換句話說,顯示的封包將會為:
來源IP:除了10.1.2.3以外任意;目的IP:任意
以及
來源IP:任意;目的IP:除了10.4.5.6以外任意
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6
顯示來源不為10.1.2.3并且目的IP不為10.4.5.6的封包,
換句話說,顯示的封包將會為:
來源IP:除了10.1.2.3以外任意;同時須滿足,目的IP:除了10.4.5.6以外任意
tcp.port == 25 顯示來源或目的TCP埠號為25的封包,
tcp.dstport == 25 顯示目的TCP埠號為25的封包,
tcp.flags 顯示包含TCP標志的封包,
tcp.flags.syn == 0x02 顯示包含TCP SYN標志的封包,
Find文本匹配器
流量面板文本搜索
ctr + f 彈出搜索框

并且支持這幾種匹配模式

Stream文本搜索

這里只支持普通的文本搜索;

總結_注意事項
- 寫運算式時關鍵字要轉義
當使用關鍵字作為值時,需使用反斜杠“\”
"ether proto \ip" (與關鍵字"ip"相同).
這樣寫將會以IP協議作為目標,
"ip proto \icmp" (與關鍵字"icmp"相同).
這樣寫將會以ping工具常用的icmp作為目標,
可以在"ip"或"ether"后面使用"multicast"及"broadcast"關鍵字,
當您想排除廣播請求時,"no broadcast"就會非常有用,
- 輔助生存運算式
mac os版打開的方式

遇到一些陌生協議,想要寫運算式的時候,可以打開這個工具,它把所有協議的引數選項,可用符號都列舉出來了,在沒有思路的時候,是個輔助好工具,

參考
https://biot.com/capstats/bpf.html
https://wiki.wireshark.org/CaptureFilters
https://openmaniak.com/cn/wireshark_filters.php
https://staight.github.io/2018/07/25/BPF過濾規則/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/24542.html
標籤:其他
