擷取 Wi-Fi 封包可讓您查看詳細資料和互動,這些資料和互動在傳送至裝置上執行的軟體前會經過遮蓋,因此擷取封包是某些類型錯誤的重要工具。
主要步驟如下:
- 找出要監聽的正確頻道。
- 擷取流量。
- 分享擷取內容和 WLAN 密碼的雜湊值。
1. 判斷合適的管道和寬度
WLAN 網路的運作頻率如下:
- 頻道,通常以數字表示。1 到 13 適用於 2.4 GHz 頻道,36 到 200 適用於 5 GHz 頻道
- 特定寬度 (20Mhz、40Mhz、80Mhz、160MHz)
網路中的每個存取點 (例如路由器、網狀節點) 通常都有專屬的 2.4 GHz 頻道和 5 GHz 頻道,你需要找出裝置連線的頻道。下列幾個選項供您參考:
使用路由器的控制面板
如果使用 Nest WiFi,請略過這個選項,因為系統不會公開這項資訊。
大多數路由器都會列出連線裝置,以及使用的頻道和頻寬。
- 請參閱這份指南,找出路由器的 IP 位址。
- 在網路瀏覽器中前往路由器的位址,例如 http://192.168.1.1。
- 登入即可忘記密碼嗎?查看路由器上的標籤,或使用「路由器密碼」。
尋找名為「用戶端」或「已連線裝置」的頁面。舉例來說,Netgear 路由器的頁面可能如下所示,或如Eero 裝置所示。
您可能必須在設定中的其他位置,將步驟 4 的資訊對應至特定頻道和頻寬。例如 Netgear 路由器:
如果 Mac 已連線至相同頻道,請使用 Mac
按住鍵盤上的「Option」鍵,然後按一下 Mac 狀態列右上角的 WLAN 圖示。畫面上應該會顯示一般 WLAN 選單,以及一些額外的選項和資訊。查看無法使用的選單項目,找出提及「頻道」的項目:
`Channel 60 (DFS, 5GHz, 40MHz)`
找不到通道和頻寬
如果其他方法無法解決問題,請嘗試:
列出 AP 使用的所有頻道 (通常每個 AP 或網狀存取點有 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. 開始擷取
重要事項:擷取四向交握
如果 Wi-Fi 已啟用安全性,您必須知道加密金鑰,才能解密擷取的封包。加密金鑰衍生自裝置連上網路時發生的四向交握,且每個裝置與 AP 之間的連線都有專屬金鑰。
因此,您必須擷取四向握手,才能解密 Wi-Fi 酬載。如果裝置在開始擷取時已連上網路,請在開始封包側錄後中斷連線並重新連線 (或重新啟動裝置)。
在 Mac 上擷取
按住鍵盤上的 Option 鍵,然後按一下 WLAN 圖示,並選取「開啟無線診斷…」:
在「無線診斷」選單列中,依序選取「視窗」>「封包嗅探器」:
將頻道和頻寬設為先前擷取的值 (螢幕截圖範例為頻道 60 和頻寬 40 MHz):
按下 Start
並輸入密碼。現在請嘗試重現問題。
請務必如「擷取四向交握」一文所述,從連線擷取四向交握。
完成後,請按 Stop
鍵。/var/tmp
中會出現新的 *.pcap
檔案,內含所有流量。檔案名稱範例如下:
(null)_ch100_2018-11-06_10.52.01.pcap
。
在 Linux 上擷取
關閉 Wi-Fi。您可以採取下列任一做法:
- 使用 GUI (建議)
- 使用 Network Manager CLI 停止管理 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 $@
執行上述指令碼,並傳遞要偵測的頻道和最高頻寬,例如頻寬為 80 MHz 的頻道 153:
./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 不會直接用於加密和解密流量。這項金鑰用於四向交握,您必須擷取這項金鑰才能解密封包。不過,如果您只想擷取 Wi-Fi 連線問題或連線中斷問題,這類問題可從 Wi-Fi 管理框架中得知,則不需要擷取 4 向交握。無論如何,擷取這類資訊都不會造成負面影響。
開啟 Wireshark,然後開啟「偏好設定」頁面 (依序點選「Wireshark」選單 >「偏好設定」或按 **Cmd + , **)。
在「通訊協定」類別中找到「IEEE 802.11」部分,並確認已勾選「啟用解密」:
按一下「解密金鑰」標籤旁的「編輯」按鈕。
按一下左下角的「+」按鈕,然後選取「wpa-pwd」選項。
按一下新建立資料列的「key」欄 (緊鄰 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 設定檔。