擷取 Wi-Fi 封包可讓您查看詳細資料和互動內容,這些內容在傳送至裝置上執行的軟體前會遭到遮蔽,因此擷取這些內容是處理某些類型錯誤的重要工具。
主要步驟如下:
- 找出要嗅探的正確管道。
- 擷取流量。
- 請提供 WLAN 密碼的擷取畫面和雜湊。
1. 判斷正確的頻道和寬度
WLAN 網路可運作於:
- 管道,通常以編號表示。1-13 是用於2.4 GHz 頻道,36-200 是用於5 GHz 頻道
- 使用特定頻寬 (20 MHz、40 MHz、80 MHz 或 160 MHz)
網路中的每個存取點 (例如路由器、網狀節點) 通常都有一個獨特的 2.4 GHz 頻道和 5 GHz 頻道,你需要找出裝置連線的頻道。下列幾個選項供您參考:
使用路由器的控制台
如果您使用 Nest WiFi,請略過這個選項,因為系統不會公開這項資訊。
大多數路由器都會列出已連結的裝置,以及裝置使用的頻道和頻寬。
- 請參閱這份指南,找出路由器的 IP 位址。
- 在網路瀏覽器中前往路由器的位址,例如 http://192.168.1.1。
- 登入即可忘記密碼了嗎?請在路由器上尋找標籤,或使用路由器密碼。
找出名稱為「客戶端」或「已連結裝置」的頁面。例如 Netgear 路由器頁面可能會像以下畫面,或Eero 裝置。
您可能需要在其他設定中查看,才能將步驟 4 中的資訊對應至特定管道和頻寬。例如 Netgear 路由器:
使用 Mac (如果已連線至相同的頻道)
按住鍵盤上的 Option 鍵,然後按一下 Mac 狀態列右上角的 WLAN 圖示。您應該會看到一般 WLAN 選單,其中包含更多選項和資訊。請查看無法使用的選單項目,並找出提及「頻道」的項目:
`Channel 60 (DFS, 5GHz, 40MHz)`
找不到管道和寬度
如果其他方法無法解決問題,請嘗試以下做法:
列出 AP 使用的所有頻道 (每個 AP 或 Mesh 點通常為 2 個)。
a. 建議:如果使用 Android 手機,可以使用 Wifiman 或 Aruba Utilities 等應用程式。
a. 在 Mac 上,您可以使用
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport-s
列出選項。按照下列說明,在每個管道上執行短時間 (15 秒就足夠) 擷取作業
安裝 Wireshark (如需協助,請參閱「安裝 Wireshark」)。
使用 Wireshark 開啟每個擷取畫面,套用
wlan.addr == YOUR_DEVICE'S_MAC
的顯示篩選器,然後查看是否有任何封包顯示。
2. 開始拍攝
重要事項:擷取 4 向握手程序
如果已為 Wi-Fi 開啟安全性功能,您必須知道加密金鑰才能解密擷取的封包。加密金鑰源自裝置連上網路時發生的 4 方握手,且為裝置與 AP 之間的每個連線所獨有。
因此,您必須擷取 4 方握手,才能解密 Wi-Fi 酬載。如果裝置在您開始擷取時已連上網路,請在嗅探開始後中斷裝置連線,然後重新連線 (或重新啟動裝置)。
在 Mac 上擷取
按住鍵盤上的選項鍵,然後點選 WLAN 圖示,再選取「Open Wireless Diagnostics…」:
在無線診斷工具選單列中,依序選取「Window」>「Sniffer」:
將頻道和頻寬設為先前擷取的值 (螢幕截圖範例為頻道 60 和頻寬 40 MHz):
按下 Start
並輸入密碼。請嘗試重現問題。請務必按照「擷取 4 方握手」一文所述,從連線擷取 4 方握手。
完成後,請按下 Stop
。您可以在 /var/tmp
中找到新的 *.pcap
檔案,其中包含所有流量。檔案名稱範例:(null)_ch100_2018-11-06_10.52.01.pcap
。
在 Linux 上擷取
關閉 Wi-Fi。方法如下:
- 使用 GUI (建議做法)
- 使用 Network Manager CLI 告知 Network Manager 停止管理 WLAN 介面:
sudo nmcli dev set <wlan-ifname> managed on
- 如果使用其他網路管理工具,請視情況調整。
儲存這個指令碼。請將
<wlan-ifname>
替換為 Wi-Fi 介面的名稱。本文件假設指令碼名稱為setup-wifi-capture
。#!/usr/bin/env bash sudo ifconfig <wlan-ifname> down sudo rfkill unblock wifi sudo iwconfig <wlan-ifname> mode monitor sudo ifconfig <wlan-ifname> up sudo iw dev <wlan-ifname> set channel $@
執行上述指令碼,並將頻道和最高頻寬傳遞至嗅探,例如頻道 153 和 80 MHz 頻寬:
./setup-wifi-capture chan 153 80 MHz
開啟 Wireshark,現在應該可以在 wlan 介面上擷取封包。
3. 分享擷取畫面
使用 WPA PSK (原始金鑰) 產生器產生密碼的雜湊值。這樣一來,您就能在不瞭解明文密碼的情況下,解密擷取內容。
您也必須分享產生的 PSK,讓其他人解密擷取畫面。
附錄
安裝 Wireshark
您可以在 Linux 上使用 apt install wireshark 安裝 Wireshark,或從 Wireshark 網站線上下載。
設定 Wireshark 解密流量
您不必分享擷取檔案,只有在您想自行在 Wireshark 中檢查已解密的流量時,才需要這麼做。
在 Wi-Fi 上使用 WPA2 安全性時,WPA2-PSK 不會直接用於流量的加密和解密作業。這項資訊會用於4 方握手程序,您需要擷取這項資訊才能解密封包。不過,如果您要擷取的資料僅是 Wi-Fi 連線問題或連線中斷問題 (可從 Wi-Fi 管理幀中擷取),則不必擷取 4 方握手動作。無論是哪種情況,擷取螢幕畫面都不會造成任何損害。
開啟 Wireshark,然後開啟「偏好設定」頁面 (依序點選「Wireshark 選單」>「偏好設定」或按下 **Cmd + , **)。
在「通訊協定」類別中找到「IEEE 802.11」部分,並確認已勾選「啟用解密」:
按一下「解密金鑰」標籤旁的「編輯」按鈕。
按一下左下角的「+」按鈕,然後選取「wpa-pwd」選項。
按一下新建立資料列的金鑰欄 (位於 wpa-pwd 字串旁邊),然後以
<password>:<ssid>
格式輸入 WPA2 PSK 和 SSID。舉例來說,如果網路名稱為MyHomeNetwork
,而 WPA2 PSK 為myp4ssword
,請輸入myp4ssword:MyHomeNetwork
。按一下「確定」確認
如需更多資訊,請參閱 Wireshark 官方指南 (內含螢幕截圖),請參閱「如何解密 802.11」。
如果使用 tshark
,請傳遞下列引數:
tshark -o wlan.enable_decryption:TRUE -o 'uat:80211_keys:"wpa-pwd","<psk>:<ssid>"'
為 Wireshark 802.11 資料上色
在 metageek.com 上有一個方便的 802.11 色彩設定檔:Wireshark 設定檔。