Skip to content

Instantly share code, notes, and snippets.

@patw0929
Last active February 10, 2025 06:28
Show Gist options
  • Save patw0929/794d7f220dcf5f48af308a9e7e7ee5ae to your computer and use it in GitHub Desktop.
Save patw0929/794d7f220dcf5f48af308a9e7e7ee5ae to your computer and use it in GitHub Desktop.
匯出 Authy 2FA 的方式

需求

有鑑於 Authy 近日停止了它們的 desktop 支援,導致使用上的不便利,所以想遷移到其他 2FA authenticator 中,不過 Authy 本身也未提供匯出功能,因此我們要想辦法解決。

在網上搜尋發現不少人有這個需求,也有人提供相關的 solution,例如這篇:https://gist.github.com/gboudreau/94bb0c11a6209c82418d01a59d958c93

我自己最後是借了一台 iPhone 15 來操作這個步驟,成功轉換,順便把步驟翻譯為中文版。

credits 皆屬原 gist thread 中的原作者們所有。

我的環境

  1. Mac 一台
  2. iPhone 一台
  3. 一些命令列與程式的基礎

步驟要點

  1. 偵聽 iPhone 登錄 Authy 後取回設定的 TOTP 項目資訊
  2. 解密取回的 TOTPs 資訊
  3. 生成 QRCode 列表網頁,方便使用其他 2FA authenticator 掃描匯入;或是透過原串中其他大大寫的 import 程式,匯入到相應的 2FA authenticator app 中

詳細步驟

  1. 安裝 mitmproxy brew install mitmproxy
  2. 啟動 mitm 偵聽 web UI mitmweb --allow-hosts "api.authy.com"
  3. 設定 iPhone 網路代理
    • 設定 > WiFi > 點 (i) > 最下方的 設定代理伺服器 > 手動
    • 按照電腦本機上的 IP 填入,例如 192.168.1.123,連接埠為 8080
    • 儲存
  4. iPhone Safari 打開 mitm.it,找到 iOS,下載 mitmproxy-ca-cert.pem (若沒有連線,可能是代理並未設定成功,請重做以上步驟)
  5. 設定 > 一般 > VPN 與裝置管理 > 設定描述檔,找到 mitmproxy 安裝它
  6. 設定 > 一般 > 最下方的 憑證信任設定 > mitmproxy > 打開
  7. 如果 iPhone 之前有安裝過 Authy,請移除並重新下載
  8. 打開新安裝的 Authy,登入,應該可以看到列表自動抓回了之前設定過的 TOTPs,如果沒有請進 Authy 的設定再退出之類的可能就會出現了
  9. 回到 mitmweb 的 UI,觀察 Flow List 頁籤,試著搜尋 authenticator_tokens,某個 request 的 response 裡頭應該要有 authenticator_tokens 的 key 與陣列的值,其中應該會有 digits, encrypted_seed 等 keys,如果沒有可能找錯 request,或是 Authy 沒有同步回來,試著重做上述步驟。
  10. 找到正確的 request 後,按 Flow tab 中,上方工具列的 Download 圖示,將加密過的這個 response 下載回本機,重新命名為 authenticator_tokens.json
  11. 透過 這篇 gist comment 中的 python code,將這個 json 解密重新產生為 decrypted_tokens.json
  12. 接著可以透過 這篇 gist comment 中的 html + js code,將 json 輸出成 QRCode 列表,以便重新掃描匯入其他 2FA authenticator app 中。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment