Wireshark
Wireshark 是一款自由且開源的包分析器。可用於網絡排錯、網絡分析、軟體和通訊協議開發以及教學等。
安裝[編輯 | 編輯原始碼]
Wireshark 軟體包分成了 CLI 版本和依賴 CLI 版本的前端界面.
- CLI 版本 - 安裝 軟體包 wireshark-cli包。
- TUI 前端 - 安裝 軟體包 termshark包。
- Qt 前端 - 安裝 軟體包 wireshark-qt包。
以普通用戶身份抓包[編輯 | 編輯原始碼]
以 root 身份運行 Wireshark 是不安全的。Wireshark 已經實現了權限分離,因此 Wireshark 的圖形界面(或 tshark CLI)能夠以普通用戶身份運行,而數據包捕獲工具使用 root 身份運行[1]。
wireshark-cli包 的安裝腳本會為 /usr/bin/dumpcap
設置數據包捕獲能力。
/usr/bin/dumpcap
僅能被 root 用戶或 wireshark
群組用戶執行,因此需要將用戶加入 wireshark
用戶組以使普通用戶能夠正常運行 Wireshark (參見 Users and groups#用戶組管理)。
使用如下命令獲得當前用戶的抓包權限(中文 wiki 注):
$ sudo groupadd wireshark $ sudo usermod -a -G wireshark $USER $ sudo chgrp wireshark /usr/bin/dumpcap $ sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
執行完如上命令重啟生效。
一些抓包技巧[編輯 | 編輯原始碼]
你可以通過使用 capture filters 和 display filters 準確獲取你想抓取的數據包。
過濾 TCP 包[編輯 | 編輯原始碼]
只查看所有的 TCP 數據包,在 Filter 攔輸入 tcp
,或者在終端中輸入:
$ tshark -f "tcp"
過濾 UDP 包[編輯 | 編輯原始碼]
只想查看所有的 UDP 數據包,在 Filter 攔輸入 udp
,或者在終端輸入:
$ tshark -f "udp"
查看指定 IP 地址的數據包[編輯 | 編輯原始碼]
將 1.2.3.4
替換為要查看的 IP 地址。
- 只想查看發到某個特定地址的數據包,輸入
ip.dst == 1.2.3.4
。
- 只想查看從某個特定地址發出的數據包,輸入
ip.src == 1.2.3.4
。
- 要查看某個特定地址的所有數據包,輸入
ip.addr == 1.2.3.4
。
排除特定 IP 地址的數據包[編輯 | 編輯原始碼]
將 1.2.3.4
替換為要排除的 IP 地址。
ip.addr != 1.2.3.4
查看區域網數據包[編輯 | 編輯原始碼]
如果只想查看區域網數據包,使用
(ip.src==10.0.0/8 AND ip.dst==10.0.0/8) OR (ip.src==172.16.0.0/12 AND ip.dst==172.16.0.0/12) OR (ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16)
這樣可以過濾出所有來自私有網絡地址的數據包。
查看指定埠的數據包[編輯 | 編輯原始碼]
查看某兩個或更多埠的流量:
tcp.port==80||tcp.port==3306 tcp.port==80||tcp.port==3306||tcp.port==443
使用 dumpcap 捕獲數據包[編輯 | 編輯原始碼]
dumpcap 是 Wireshark 的一部分,可以使用該工具在無圖形界面的情況下捕獲數據包。dumpcap 可以在 tmux 或 GNU Screen 中使用,以在一個處於 Detached 狀態的會話中捕獲數據包。
可以使用 -h
參數查看 dumpcap 的所有選項。
下面的例子展示了如何捕獲循環緩衝區(ringbuffer)中內容。下面的命令會以每個文件 100MB 的大小捕獲20個.pcap
文件,並且會在捕獲第21個文件時替換最早創建的文件並依次繼續。因此此命令會保持運行,而不會持續消耗磁碟空間以致磁碟容量耗盡。
# dumpcap -i 1 -b filesize:100000 -b files:20 -w mycapture.pcapng
-i
- 接口名稱或編號(dumpcat -D
命令列出的編號)-b filesize:
- 創建的.pcap
文件的大小,以 kB 為單位-b files:
- 在輸出指定的文件數量後覆蓋舊文件-w
- 輸出文件名,上例中輸出會保存到mycaptureidentifier.pcapng