文章目錄
- Wireshark介紹
- Wireshark使用
- 工作模式介紹
- 1. 混雜模式(Promiscuous Mode)
- 2. 普通模式(Normal Mode)
- 3. 監視模式(Monitor Mode)
- 界面分區
- 捕獲過濾器語法
- 基本語法
- 邏輯運算符
- 高級語法
- 使用示例
- 捕獲過濾器-速查表
- 顯示過濾器語法
- 基本語法
- 邏輯運算符
- 高級語法
- 使用示例
Wireshark介紹
Wireshark 是一款非常流行的網絡協議分析工具,主要用于捕獲和分析網絡數據包,廣泛應用于網絡故障排查、安全分析、性能優化以及協議開發等領域。
Wireshark 的官方網站: https://www.wireshark.org/
Wireshark使用
工作模式介紹
Wireshark 的工作模式主要包括混雜模式和普通模式,此外在無線網絡環境下還會用到監視模式。以下是詳細介紹:
1. 混雜模式(Promiscuous Mode)
混雜模式是 Wireshark 的一種重要工作模式,允許網卡接收所有經過網絡接口的數據包,而不僅僅是發給本機的數據包。在這種模式下,網卡不會根據 MAC 地址過濾數據包,因此可以捕獲局域網內其他設備之間的通信數據包。
- 應用場景:混雜模式常用于網絡分析、故障排查以及安全檢測等場景,能夠幫助用戶全面了解網絡流量情況。
- 開啟方法:在 Wireshark 的菜單欄中,選擇“捕獲”->“選項”,在彈出的“捕獲選項”對話框中,勾選“啟用混雜模式”選項。
2. 普通模式(Normal Mode)
普通模式是 Wireshark 的默認工作模式。在這種模式下,網卡只會接收發給本機的數據包(包括廣播包),其他設備的數據包會被丟棄。這意味著用戶只能捕獲與本機相關的網絡通信數據,無法捕獲局域網內其他設備之間的通信數據。
3. 監視模式(Monitor Mode)
監視模式僅用于無線網絡環境。在這種模式下,無線網卡可以捕獲無線網絡中的所有數據包,而無需與特定的接入點關聯。這使得用戶可以分析無線網絡中的通信情況,檢測無線網絡的安全性和性能問題。
- 應用場景:監視模式主要用于無線網絡的分析和安全檢測,例如檢測無線網絡中的未授權接入點或無線信號干擾。
- 開啟方法:監視模式的開啟方式與混雜模式類似,但具體操作可能會因無線網卡的驅動程序和操作系統而有所不同。
界面分區
Wireshark 是一款功能強大的網絡協議分析工具,它可以幫助用戶捕獲、分析和顯示網絡數據包。根據您提供的截圖和描述,以下是 Wireshark 界面的主要組成部分及其功能的介紹:
- 菜單欄:
- 位于窗口頂部,包含文件、編輯、捕獲、顯示、統計、分析、工具和幫助等菜單選項。這些菜單提供了各種操作和設置功能,如保存捕獲的數據包、設置捕獲選項、應用顯示過濾器等。
- 抓包列表:
- 顯示捕獲到的數據包的列表,包括時間戳、源地址、目的地址、協議、長度和信息等字段。用戶可以通過這個列表查看和選擇特定的數據包進行分析。
- 協議樹:
- 在選擇某個數據包后,顯示該數據包的協議層次結構。用戶可以展開各個協議層查看詳細信息,如 TCP、IP、以太網等協議的字段和值。
- 字節視圖:
- 顯示選中數據包的原始字節數據,通常以十六進制和ASCII格式顯示。這允許用戶查看數據包的原始內容,包括協議頭和數據負載。
- 過濾器欄:
- 位于抓包列表上方,用戶可以在這里輸入顯示過濾器表達式,以篩選和顯示特定的數據包。例如,輸入
tcp.port == 80
可以顯示所有使用 TCP 端口 80 的數據包。
- 位于抓包列表上方,用戶可以在這里輸入顯示過濾器表達式,以篩選和顯示特定的數據包。例如,輸入
- 狀態欄:
- 位于窗口底部,顯示當前捕獲的狀態,如捕獲的總數據包數、已丟棄的數據包數等。
- 詳細視圖:
- 在協議樹下方,提供所選數據包的詳細信息,如字段值、注釋等。用戶可以在這里查看數據包的詳細內容和分析結果。
捕獲過濾器語法
Wireshark 的捕獲過濾器(Capture Filter)用于在捕獲數據包時對數據包進行篩選,只捕獲符合特定條件的數據包。這有助于減少捕獲的數據量,提高分析效率。以下是一些常用的捕獲過濾器語法:
基本語法
-
協議過濾:指定要捕獲的協議類型。
復制
tcp # 只捕獲 TCP 協議的數據包 udp # 只捕獲 UDP 協議的數據包 icmp # 只捕獲 ICMP 協議的數據包 http # 只捕獲 HTTP 協議的數據包
-
IP 地址過濾:指定源或目的 IP 地址。
復制
ip.addr == 192.168.1.1 # 捕獲源或目的 IP 為 192.168.1.1 的數據包 ip.src == 192.168.1.1 # 捕獲源 IP 為 192.168.1.1 的數據包 ip.dst == 192.168.1.1 # 捕獲目的 IP 為 192.168.1.1 的數據包
-
端口過濾:指定源或目的端口。
復制
tcp.port == 80 # 捕獲 TCP 協議的 80 端口的數據包 udp.port == 53 # 捕獲 UDP 協議的 53 端口的數據包 tcp.srcport == 8080 # 捕獲 TCP 協議的源端口為 8080 的數據包 tcp.dstport == 8080 # 捕獲 TCP 協議的目的端口為 8080 的數據包
邏輯運算符
-
與(AND):同時滿足多個條件。
tcp && ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
-
或(OR):滿足任一條件。
tcp || udp
-
非(NOT):不滿足某個條件。
!icmp
高級語法
-
IP 地址范圍:指定 IP 地址范圍。
ip.addr == 192.168.1.1-192.168.1.10 # 捕獲 IP 地址在 192.168.1.1 到 192.168.1.10 之間的數據包
-
端口范圍:指定端口范圍。
tcp.port >= 80 && tcp.port <= 90 # 捕獲 TCP 協議的 80 到 90 端口之間的數據包
-
協議和端口組合:組合協議和端口條件。
tcp.port == 80 || udp.port == 53 # 捕獲 TCP 協議的 80 端口或 UDP 協議的 53 端口的數據包
-
MAC 地址過濾:指定源或目的 MAC 地址。
復制
ethernet.src == 00:11:22:33:44:55 # 捕獲源 MAC 地址為 00:11:22:33:44:55 的數據包 ethernet.dst == 00:11:22:33:44:55 # 捕獲目的 MAC 地址為 00:11:22:33:44:55 的數據包
使用示例
-
捕獲所有 ICMP 數據包:
icmp
-
捕獲源 IP 為 192.168.1.1 且目的端口為 80 的 TCP 數據包:
tcp && ip.src == 192.168.1.1 && tcp.dstport == 80
-
捕獲源 MAC 為 00:11:22:33:44:55 且目的 IP 為 192.168.1.1 的數據包:
ethernet.src == 00:11:22:33:44:55 && ip.dst == 192.168.1.1
-
捕獲除了 ICMP 之外的所有數據包:
!icmp
官方說明文檔:https://biot.com/capstats/bpf.html
以下是從您提供的圖片中提取的內容:
捕獲過濾器-速查表
過濾條件 | 示例 | 說明 |
---|---|---|
源 IP 地址 | src host 192.168.1.1 | 捕獲源 IP 為 192.168.1.1 的數據包 |
目的 IP 地址 | dst host 192.168.1.2 | 捕獲目的 IP 為 192.168.1.2 的數據包 |
任意 IP 地址 | host 192.168.1.3 | 捕獲源或目的 IP 為 192.168.1.3 的數據包 |
源端口 | src port 80 | 捕獲源端口為 80 的數據包 |
目的端口 | dst port 443 | 捕獲目的端口為 443 的數據包 |
任意端口 | port 53 | 捕獲源或目的端口為 53 的數據包 |
TCP 協議 | tcp | 捕獲所有 TCP 數據包 |
UDP 協議 | udp | 捕獲所有 UDP 數據包 |
ICMP 協議 | icmp | 捕獲所有 ICMP 數據包 |
特定協議 | ip proto 1 | 捕獲所有協議類型為 1 的數據包(例如 ICMP) |
特定數據包長度 | len <= 100 | 捕獲長度小于等于 100 字節的數據包 |
特定數據包內容 | tcp[13] & 8 != 0 | 捕獲 TCP 數據包中具有 PSH 標志的數據包 |
特定數據包標志 | tcp[tcpflags] == 0x02 | 捕獲 TCP SYN 數據包 |
特定網絡接口 | ether host 00:11:22:33:44:55 | 捕獲 MAC 地址為 00:11:22:33:44:55 的數據包 |
特定 VLAN | vlan and (src host 192.168.1.1) | 捕獲 VLAN 中源 IP 為 192.168.1.1 的數據包 |
特定 IP 范圍 | net 192.168.1.0/24 | 捕獲源或目的 IP 在 192.168.1.0 到 192.168.1.255 范圍內的數據包 |
特定子網 | src net 10.0.0.0/8 | 捕獲源 IP 在 10.0.0.0 到 10.255.255.255 范圍內的數據包 |
顯示過濾器語法
顯示過濾器(Display Filter)是Wireshark中用于篩選和顯示捕獲數據包的語法規則。與捕獲過濾器不同,顯示過濾器僅影響用戶界面中顯示的數據包,而不會影響實際捕獲的數據包。以下是一些常用的顯示過濾器語法:
基本語法
-
協議過濾:指定要顯示的協議類型。
復制
tcp # 顯示所有 TCP 協議的數據包 udp # 顯示所有 UDP 協議的數據包 icmp # 顯示所有 ICMP 協議的數據包 http # 顯示所有 HTTP 協議的數據包
-
IP 地址過濾:指定源或目的 IP 地址。
復制
ip.addr == 192.168.1.1 # 顯示源或目的 IP 為 192.168.1.1 的數據包 ip.src == 192.168.1.1 # 顯示源 IP 為 192.168.1.1 的數據包 ip.dst == 192.168.1.1 # 顯示目的 IP 為 192.168.1.1 的數據包
-
端口過濾:指定源或目的端口。
復制
tcp.port == 80 # 顯示 TCP 協議的 80 端口的數據包 udp.port == 53 # 顯示 UDP 協議的 53 端口的數據包 tcp.srcport == 8080 # 顯示 TCP 協議的源端口為 8080 的數據包 tcp.dstport == 8080 # 顯示 TCP 協議的目的端口為 8080 的數據包
邏輯運算符
-
與(AND):同時滿足多個條件。
tcp && ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
-
或(OR):滿足任一條件。
tcp || udp
-
非(NOT):不滿足某個條件。
!icmp
高級語法
-
IP 地址范圍:指定 IP 地址范圍。
ip.addr == 192.168.1.1-192.168.1.10 # 顯示 IP 地址在 192.168.1.1 到 192.168.1.10 之間的數據包
-
端口范圍:指定端口范圍。
tcp.port >= 80 && tcp.port <= 90 # 顯示 TCP 協議的 80 到 90 端口之間的數據包
-
協議和端口組合:組合協議和端口條件。
tcp.port == 80 || udp.port == 53 # 顯示 TCP 協議的 80 端口或 UDP 協議的 53 端口的數據包
-
MAC 地址過濾:指定源或目的 MAC 地址。
復制
ethernet.src == 00:11:22:33:44:55 # 顯示源 MAC 地址為 00:11:22:33:44:55 的數據包 ethernet.dst == 00:11:22:33:44:55 # 顯示目的 MAC 地址為 00:11:22:33:44:55 的數據包
使用示例
-
顯示所有 ICMP 數據包:
icmp
-
顯示源 IP 為 192.168.1.1 且目的端口為 80 的 TCP 數據包:
tcp && ip.src == 192.168.1.1 && tcp.dstport == 80
-
顯示源 MAC 為 00:11:22:33:44:55 且目的 IP 為 192.168.1.1 的數據包:
ethernet.src == 00:11:22:33:44:55 && ip.dst == 192.168.1.1
-
顯示除了 ICMP 之外的所有數據包:
!icmp
-
顯示特定協議類型為 1 的數據包(例如 ICMP):
ip.proto == 1
-
顯示長度小于等于 100 字節的數據包:
frame.len <= 100
-
顯示 TCP 數據包中具有 PSH 標志的數據包:
tcp.flags.psh == 1
-
顯示 TCP SYN 數據包:
tcp.flags.syn == 1
-
顯示 VLAN 中源 IP 為 192.168.1.1 的數據包:
vlan && ip.src == 192.168.1.1
-
顯示源或目的 IP 在 192.168.1.0 到 192.168.1.255 范圍內的數據包:
ip.addr == 192.168.1.0/24
-
顯示源 IP 在 10.0.0.0 到 10.255.255.255 范圍內的數據包:
ip.src == 10.0.0.0/8