Windows 如何优雅地从 Authy 提桶跑路
拟定跑路计划
这意味着 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 的方法来实现这个目的:
可以总结为以下几个步骤:
- 在启动 Authy Desktop 时注入调试参数
- 访问 Authy 调试页面
- 执行 TOTP 密钥提取脚本
- 成功导出 TOTP 密钥,跑路成功 🎉
教程开始
以下操作需要一定计算机操作技能,并且可能违反 Authy 的使用协议,仅供研究用途,请勿用于非法用途。
不过都到跑路这一步了,你说法制我都觉得好笑.jpg
先决条件
- 安装旧版 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
打开命令行
这里将调试端口设置为了 9222
,你也可以使用其他端口,不影响后续操作。
步骤 2:进入 Authy 调试页面
打开浏览器,访问 http://localhost:9222
,你将看到类似下面的页面:
点击第一个 Twilio Authy
超链接,你将看到类似下面的页面:
步骤 3:执行提取脚本
当进行到这一步的时候,你可以断开网络连接,因为提取脚本将会输出所有的 TOTP 密钥,这可能会导致泄露。
记得输入 master password 解密 TOTP 密钥后再断开网络连接。
跟着以下图例打开 DevTools,点击 Sources
选项卡,随后点击 Snippets
,新建一个 Snippet,将提取脚本粘贴进去:
提取脚本如下(代码块右上角有复制按钮),您可以根据需要选择不同的提取脚本:
- 可导出为纯文本的最简单的提取脚本:
- 可导入至 Aegis / KeePassXC 密码管理器的 JSON 提取脚本:
- 可导出带有
otpauth://
二维码的 JSON 提取脚本:
跑路成功
不出意外的话,你将会看到类似下面的输出:
脚本执行完毕后,会尝试通过 Authy Desktop 主程序 弹窗保存 一个类似 authy-tokens.json
的文件,其中包含了你的 TOTP 密钥信息,请妥善保存。
您可以使用这个文件来导入到其他密码管理器中,或者直接使用其中的信息来配置你的 TOTP 客户端。
感谢
LinusU/base32-encode 用于将二进制数据转换为 Base32 编码
adriancooney/console.image 用于在控制台输出图片
QRious 用于生成二维码
@gboudreau 提供的导出思路