Windows 如何优雅地从 Authy 提桶跑路

1 个月前(已编辑)
/ ,
64
3
摘要
"Authy Desktop,适用于 Windows、MacOS 和 Linux,将于 2024 年 3 月 19 日结束生命周期。Authy 将停止开发基于 Electron 的跨平台客户端,用户将无法使用 Authy Desktop 与移动端同步和查看 TOTP 密钥。因此,用户需要考虑迁移到其他的 2FA 管理工具。此文章提供了一种方法来导出 TOTP 密钥,包括在启动 Authy Desktop 时注入调试参数,访问 Authy 调试页面,执行 TOTP 密钥提取脚本,成功导出 TOTP 密钥。"

拟定跑路计划

适用于 Windows 和 MacOS 以及 Linux 的 Authy Desktop,将于 2024 年 3 月 19 日达到生命周期终点 (EOL) 官方公告

这意味着 Authy 将彻底放弃开发基于 Electron 的跨平台客户端,我们将不再能够使用 Authy Desktop 方便地与移动端同步和查看 TOTP 密钥。

此情此景不得不引用一句名言: 和 Electron 这群虫豸在一起,怎么能搞好 Desktop 呢?不能再犹豫了,一定要出重拳!

当初选用 Authy Desktop 的原因是因为它可以很轻松地支持跨平台和多设备同步,但现在不得不考虑迁移到其他的 2FA 管理工具。

跑路计划受阻

当初享受了多少便利,现在就要付出多少代价。

Authy 官方以 “维护用户的密钥安全” 为由不允许从客户端直接导入或者导出 TOTP 密钥: 原文链接

In order to maintain security for our users, the Authy application does not allow importing or exporting 2FA account tokens.

另辟蹊径

虽然 Authy 官方不允许直接导出 TOTP 密钥,但是我们可以用比较 dirty 的方法来实现这个目的:

Mermaid Loading...

可以总结为以下几个步骤:

  1. 在启动 Authy Desktop 时注入调试参数
  2. 访问 Authy 调试页面
  3. 执行 TOTP 密钥提取脚本
  4. 成功导出 TOTP 密钥,跑路成功 🎉

教程开始

以下操作需要一定计算机操作技能,并且可能违反 Authy 的使用协议,仅供研究用途,请勿用于非法用途。

不过都到跑路这一步了,你说法制我都觉得好笑.jpg

先决条件

以下操作需要使用到 Authy Desktop 的旧版本,如果你已经升级到了最新版本,可以先卸载当前版本,然后安装旧版本。
  • 安装旧版 Authy Desktop,最后支持远程调试的版本为 2.2.3

可以通过以下链接下载旧版 Authy Desktop:

32位 安装程序 MD5:d66d63abb482523ad27dfe676e249fff
64位 安装程序 MD5:efd176d89b280809b9f84fda9ba50840

Win + R 输入 %LOCALAPPDATA%\authy 回车后来到 Authy 的安装目录,删除 Update.exe 文件。

随后再安装旧版 Authy Desktop,安装完成后关闭自动打开的 Authy Desktop 窗口,继续下面的操作。

步骤 1:注入调试参数

在启动 Authy Desktop 时,我们可以通过追加命令行参数 --remote-debugging-port 以启用调试模式:

  • Win + R 打开运行窗口,输入 powershell 或者 cmd 打开命令行
# Windows PowerShell 命令行
Start-Process -FilePath "$env:LOCALAPPDATA\authy\app-2.2.3\Authy Desktop.exe" -ArgumentList "--remote-debugging-port=9222"
:: Windows CMD 命令行
start "" "%LOCALAPPDATA%\authy\app-2.2.3\Authy Desktop.exe" --remote-debugging-port=9222

这里将调试端口设置为了 9222,你也可以使用其他端口,不影响后续操作。

步骤 2:进入 Authy 调试页面

打开浏览器,访问 http://localhost:9222,你将看到类似下面的页面:

Authy 调试页面

Authy 调试页面

点击第一个 Twilio Authy 超链接,你将看到类似下面的页面:

Authy Inspect

Authy Inspect

步骤 3:执行提取脚本

当进行到这一步的时候,你可以断开网络连接,因为提取脚本将会输出所有的 TOTP 密钥,这可能会导致泄露。
记得输入 master password 解密 TOTP 密钥后再断开网络连接。

跟着以下图例打开 DevTools,点击 Sources 选项卡,随后点击 Snippets,新建一个 Snippet,将提取脚本粘贴进去:

DevTools Snippet

DevTools Snippet

提取脚本如下(代码块右上角有复制按钮),您可以根据需要选择不同的提取脚本:

  • 可导出为纯文本的最简单的提取脚本:
  • 可导入至 Aegis / KeePassXC 密码管理器的 JSON 提取脚本:
  • 可导出带有 otpauth:// 二维码的 JSON 提取脚本:

跑路成功

不出意外的话,你将会看到类似下面的输出:

Console Output

Console Output

脚本执行完毕后,会尝试通过 Authy Desktop 主程序 弹窗保存 一个类似 authy-tokens.json 的文件,其中包含了你的 TOTP 密钥信息,请妥善保存。

您可以使用这个文件来导入到其他密码管理器中,或者直接使用其中的信息来配置你的 TOTP 客户端。

感谢

  • Loading...
  • Loading...
  • Loading...
  • Loading...