前言
透過網路封包擷取工具,可以擷取到 Windows、Mac、Mobile Phone 等不同裝置上的封包,自己用過 Burp Suite、Charles、Fiddler 等這幾套軟體,以自己需求來說,Charles 就夠用了,因此這篇會以這套軟體操作介紹為主。
說明
有在 macOS Ventura 13.0.1 、iOS 16.2 、Windows 10、Android 交叉測試過,確認是可以擷取到封包,由於 Windows 與 macOS 操作大同小異,以及本身是用 iPhone ,故以下說明與截圖會是 macOS 和 iPhone 為主
因目前許多網站和伺服器是以 HTTPS 來加密傳輸資料,若需要解析加密的資料,可用 Charles 內建提供的憑證來處理,就能看到加密前的資料,若有疑慮可用其它軟體以及另外準備憑證處理
開始前請先到官網下載安裝 Charles
免費版限制
雖說 Charles 是付費軟體,但可以免費使用,限制如下:
-
開啟程式時,需要等待 10 秒
-
每次僅能使用 30 分鐘,超過需要重啟程式
note: 上述限制已夠我使用,故不影響 (不確定未來政策是否會調整)
macOS 設定教學
影片版教學
圖文教學
-
安裝憑證 (Certificate)
在 Charles 的 Help → SSL Proxying
可選擇直接安裝 (Install Charles Root Certificate),或先另存憑證 (Save Charles Root Certificate),在手動匯入
這邊以手動匯入為例 -
手動匯入憑證 (直接安裝者,可略過這步驟)
在 macOS 的 應用程式 → 工具程式 → 鑰匙圈存取
將另存的憑證手動匯入,並對該憑證點滑鼠右鍵的「取得資訊」,在「信任」中,改成「永遠信任」
-
設定 Proxy
在 Charles 的 Proxy → SSL Proxying Settings → SSL Proxying
3-1. 勾選「Enable SSL Proxying」
3-2. 設定所有 Host 以及 Port 都要解析 (Empty fields match all values.)
3-3. 「macOS Proxy」也要開著
-
開始紀錄 (Start Recording)
以 Visual Studio Code 為例
iPhone 設定教學
影片版教學
有錄影,但有些資料較敏感(ex: 手機序號等),且懶得後製影片,故不放 xd
圖文教學
-
設定 HTTP Proxy Port
Proxy → Proxy Settings → Proxies → Port: 8888 → OK
-
查看電腦的區域網路 IP
在 Charles 的 Proxy → Local IP Addresses
-
Install Charles Root Certificate in iOS Simulators
-
Install Charles Root Certificate on a Mobile Device or Remote Browser
這邊會提醒手機的代理伺服器以及要連哪個網站才能下載憑證
-
需確保電腦與手機在同個區域網路
-
手機設定代理伺服器
手機的設定 → 一般 → Wi-Fi → 點「i」的 icon 圖案 → 設定代理伺服器 -
用 Safari 開啟 chls.pro/ssh,並下載憑證
-
手機安裝憑證
手機的設定 → 已下載描述檔 → 安裝 (安裝後,可在這裡查看: 設定 → 一般 → VPN 與 裝置管)
測完,可在這移除
-
手動開啟憑證 (開啟後,建議先把手機的 Wi-Fi 先關閉再開啟)
手機的設定 → 一般 → 關於本機 → 憑證信任設定 → 測試時記得開啟
-
以 GitHub App 為例
小結
會有這篇是為了解決自己的痛點,像是買的除濕機提供的 App 只能設定 7 組開關時間,但我想要每天早晚指定時間都自動開啟 1 小時,因超過 App 提供 7 組的設定上限,於是乎有了解析手機 App 封包的想法,觀察打的是哪隻 API 並用 Postman 測試,最後寫成 iPhone 的捷徑與自動化,還能用 Siri 語音控制,進而實現自動化解決這問題
其實我 3 個多月前就已經完成上述的事情,發現在寫這篇文章時,有些細節都忘了,趁還有動力時,趕緊做個紀錄,免得哪天又忘記時,也能當筆記回顧
其他類似的軟體蠻多的,像是知名的 Wireshark 等軟體,這邊就不多贅述了
medium 文章連結:https://link.medium.com/3SaxKRlRUvb
本文同步發布於 小菜的 Blog https://riverye.com/
備註:之後文章修改更新,以個人部落格為主