Wireshark(前身 Ethereal)是一個網絡包分析工具。該工具主要是用來捕獲網絡數據包,並自動解析數據包,為用戶顯示數據包的詳細信息,供用戶對數據包進行分析。
它可以運行在 Windows 和 Linux 操作系統上。由於后面章節會使用該工具捕獲並分析各類協議數據包,本節將講解該工具的安裝及基本使用方法。
下載及安裝
Kali Linux 系統自帶 Wireshark 工具,而 Windows 系統中默認沒有安裝該工具。因此,本節講解如何在 Windows 系統中安裝 Wireshark 工具。
1.安裝方法如下:
- 打開網址 http://www.wireshark.org,進入 Wireshark 官網,如圖所示。

- 單擊圖中的下載圖標進入下載頁面,如圖所示。

在 Stable Release 部分可以看到目前 Wireshark 的最新版本是 2.6.5,並提供了 Windows(32 位和 64 位)、Mac OS 和源碼包的下載地址。用戶可以根據自己的操作系統下載相應的軟件包。
-
這里下載 Windows 64 位的安裝包。單擊 Windows Installer(64-bit) 鏈接,進行下載。下載后的文件名為 Wireshark-win64-2.6.5.exe。
-
雙擊下載的軟件包進行安裝。安裝比較簡單,只要使用默認值,單擊 Next 按鈕,即可安裝成功。
-
安裝好以后,在 Windows 的“開始”菜單中會出現 Wireshark 圖標,如圖所示。

2.實施抓包
安裝好 Wireshark 以后,就可以運行它來捕獲數據包了。方法如下:
- 在 Windows 的“開始”菜單中,單擊 Wireshark 菜單,啟動 Wireshark,如圖所示。

該圖為 Wireshark 的主界面,界面中顯示了當前可使用的接口,例如,本地連接 5、本地連接 10 等。要想捕獲數據包,必須選擇一個接口,表示捕獲該接口上的數據包。
在上圖中,選擇捕獲“本地連接”接口上的數據包。選擇“本地連接”選項,然后單擊左上角的“開始捕獲分組”按鈕,將進行捕獲網絡數據,如下如所示。
圖中沒有任何信息,表示沒有捕獲到任何數據包。這是因為目前“本地連接”上沒有任何數據。只有在本地計算機上進行一些操作后才會產生一些數據,如瀏覽網站。

- 當本地計算機瀏覽網站時,“本地連接”接口的數據將會被 Wireshark 捕獲到。捕獲的數據包如圖所示。圖中方框中顯示了成功捕獲到“本地連接”接口上的數據包。

- Wireshark 將一直捕獲“本地連接”上的數據。如果不需要再捕獲,可以單擊左上角的“停止捕獲分組”按鈕,停止捕獲。
使用顯示過濾器
默認情況下,Wireshark 會捕獲指定接口上的所有數據,並全部顯示,這樣會導致在分析這些數據包時,很難找到想要分析的那部分數據包。這時可以借助顯示過濾器快速查找數據包。
顯示過濾器是基於協議、應用程序、字段名或特有值的過濾器,可以幫助用戶在眾多的數據包中快速地查找數據包,可以大大減少查找數據包時所需的時間。
使用顯示過濾器,需要在 Wireshark 的數據包界面中輸入顯示過濾器並執行,如圖所示。

圖中方框標注的部分為顯示過濾器區域。用戶可以在里面輸入顯示過濾器,進行數據查找,也可以根據協議過濾數據包。
顯示過濾器及其作用
| 顯示過濾器 | 作用 |
|---|---|
| arp | 顯示所有 ARP 數據包 |
| bootp | 顯示所有 BOOTP 數據包 |
| dns | 顯示所有 DNS 數據包 |
| ftp | 顯示所有 FTP 數據包 |
| http | 顯示所有 HTTP 數據包 |
| icmp | 顯示所有 ICMP 數據包 |
| ip | 顯示所有 IPv4 數據包 |
| ipv6 | 顯示所有 IPv6 數據包 |
| tcp | 顯示所有基於 TCP 的數據包 |
| tftp | 顯示所有 TFTP(簡單文件傳輸協議)數據包 |
例如,要從捕獲到的所有數據包中,過濾出 DNS 協議的數據包,這里使用 dns 顯示過濾器,過濾結果如圖所示。圖中顯示的所有數據包的協議都是 DNS 協議。

分析數據包層次結構
任何捕獲的數據包都有它自己的層次結構,Wireshark 會自動解析這些數據包,將數據包的層次結構顯示出來,供用戶進行分析。這些數據包及數據包對應的層次結構分布在 Wireshark 界面中的不同面板中。
3.數據包的層次結構。
- 使用 Wireshark 捕獲數據包,界面如圖所示。

上圖中所顯示的信息從上到下分布在 3 個面板中,每個面板包含的信息含義如下:
Packet List 面板:上面部分,顯示 Wireshark 捕獲到的所有數據包,這些數據包從 1 進行順序編號。
Packet Details 面板:中間部分,顯示一個數據包的詳細內容信息,並且以層次結構進行顯示。這些層次結構默認是折疊起來的,用戶可以展開查看詳細的內容信息。
Packet Bytes 面板:下面部分,顯示一個數據包未經處理的原始樣子,數據是以十六進制和 ASCII 格式進行顯示。
- 以 HTTP 協議數據包為例,了解該數據包的層次結構。在 Packet List 面板中找到一個 HTTP 協議數據包,如圖所示。

其中,編號 21 的數據包是一個 HTTP 協議數據包。此時在 Packet Details 面板上顯示的信息就是該數據包的層次結構信息。
這里顯示了 5 個層次,每個層次的含義如下:
Frame:該數據包物理層的數據幀概況。
Ethernet II:數據鏈路層以太網幀頭部信息。
Internet Protocol Version 4:網際層 IP 包頭部信息。
Transmission Control Protocol:傳輸層的數據段頭部信息。
Hypertext Transfer Protocol:應用層的信息,此處是 HTTP 協議。
由此可見,Wireshark 對 HTTP 協議數據包進行解析,顯示了 HTTP 協議的層次結構。
- 用戶對數據包分析就是為了查看包的信息,展開每一層,可以查看對應的信息。例如,查看數據鏈路層信息,展開 Ethernet II 層,顯示信息如下:
Ethernet II, Src: Tp-LinkT_46:70:ba (ec:17:2f:46:70:ba), Dst: Giga-Byt_17:cf:21 (50:e5:49:17:cf:21)
Destination: Giga-Byt_17:cf:21 (50:e5:49:17:cf:21) #目標MAC地址
Source: Tp-LinkT_46:70:ba (ec:17:2f:46:70:ba) #源MAC地址
Type: IPv4 (0x0800)
顯示的信息包括了該數據包的發送者和接收者的 MAC 地址(物理地址)。
