从 Authy 迁移到 Ente Authenticator:四种导出方案与导入实操完全指南

发布时间:2026/9/26 1:29:03
从 Authy 迁移到 Ente Authenticator:四种导出方案与导入实操完全指南
从 Authy 迁移到 Ente Authenticator四种导出方案与导入实操完全指南【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente本文基于 ente 仓库中的 Authy 迁移指南 整理扩充。Authy 已停止支持其桌面应用无法再从 App 内直接导出 2FA 验证码本文覆盖当前仍可用的四种导出路径终端导出工具、社区脚本、root 安卓设备、iOS 中间人抓包并结合 ente 移动端源码 逐条讲解如何将导出的明文/JSON 文件安全导入 Ente Authenticator。从 Authy 迁移到新的一次性密码2FA验证器最麻烦的一点在于 Authy 客户端本身不提供“导出全部验证码”的功能——这意味着如果你不借助外部手段就不得不为每一个账户重新配置 2FA。不过社区已经有多种成熟方案可以从 Authy 中导出你的 TOTP 密钥再批量导入 Ente Authenticator。本文按操作难度从低到高介绍四种常用方法并给出对应的 Ente 侧导入步骤以及迁移完成后的安全清理建议。[!CAUTION]安全警告务必先读无论使用哪种方法导出的 JSON 与 TXT 文件都包含你所有账户的未加密 TOTP 密钥严禁在任何渠道分享这些文件这些方法不保证能导出你 Authy 账户中的全部验证码。在确认所有账户都成功导入 Ente Authenticator 之前不要删除 Authy 中的任何验证码。迁移完成后建议删除本地生成的明文 JSON/TXT 导出文件见文末“迁移后的安全清理”。背景为什么 Authy 无法直接导出以及现阶段的方案格局Authy 长期以来只允许用户在应用内逐条查看验证码并不提供批量导出明文 TOTP 密钥的入口。以前社区有两种广为人知的导出方式基于 Authy 桌面客户端数据但Authy 已停止维护桌面应用这两种方式现已失效[!WARNING]Authy 已放弃对其桌面应用的全部支持。本文的方法 1、方法 2 已无法再用于导出数据。当前可用的路径是方法 3拥有一台root 过的安卓手机Android 6 及以上且通过 Play Integrity 校验方法 4拥有一台iOS 设备与一台电脑配合抓包/中间人解密流程。也就是说现在的选择本质上是root 安卓手机或iOS 设备 电脑二选一。下面两种方法分别面向这两类环境你可以按自己的设备条件挑选。方法 1使用 Neeraj 的 Authy 导出工具自动化程度最高适用人群希望跳过繁琐技术步骤、直接进入导入环节的普通用户。社区开发者 ua741 维护了一个开源的authy-export命令行工具可以自动完成 Authy 数据的解密与导出输出 Ente Authenticator 可直接识别的明文格式。操作步骤从该工具的 Release 页面下载适配你操作系统的二进制文件支持 macOS、Linux、Windows。在终端中执行假设二进制文件名未修改、且终端当前目录就是二进制所在目录./binary-name path_to_export_file各系统对应的完整命令示例# macOS注意Apple Silicon 设备可能需要先安装 Rosetta 2 才能运行 ./authy-export-darwin-amd64 authy_codes.txt # Linux ./authy-export-linux-amd64 authy_codes.txt # Windows ./authy-export-windows-amd64.exe authy_codes.txt[!NOTE]在 Apple SiliconM1/M2 等设备上运行该工具时Rosetta 2 可能是必需的请提前在系统设置中安装。命令执行完成后会在当前目录生成一个名为authy_codes.txt的文本文件其中包含你的 Authy 验证码格式即为 Ente 的明文导出格式。接下来直接跳转到下文「导入到 Ente Authenticator方法 1 / 2.1 / 4」一节完成导入。方法 2使用 gboudreau 的社区导出指南Bitwarden JSON 格式适用人群有一定动手能力、希望采用社区公认成熟方案的进阶用户。GitHub 用户 gboudreau 编写了一份从 Authy 导出验证码的详细指南由 morpheus 在 Discord 中发现并分享给作者。按该指南操作后会生成一个名为authy-to-bitwarden-export.json的 JSON 文件其结构为Bitwarden 导出格式Ente Authenticator 原生支持直接导入。请先完成该指南中的导出步骤再根据你的结果走下面的分支若导出成功且导入也成功直接进入下文「导入到 Ente Authenticator方法 2」。若导出成功但导入失败见下文「方法 2.1」。若导出本身失败说明该方法已因 Authy 限制而失效请改用方法 1若可用或方法 3 / 方法 4。方法 2.1导出成功但导入失败时的兜底转换Python 脚本[!NOTE]本节仅适用于「用方法 2 成功导出了验证码但导入 Ente Authenticator 失败」的用户。如果导入已成功或尚未尝试导入请忽略本节。正常情况下Bitwarden 格式的导出可以直接导入 Ente Authenticator。若因某些原因导入失败可以先用下面这个 Python 小程序把 JSON 文件转换成 Ente 能识别的 TXT 明文文件再改用「明文导入」import json import os totp [] accounts json.load(open(authy-to-bitwarden-export.json,r,encodingutf-8)) for account in accounts[items]: totp.append(account[login][totp]\n) writer open(auth_codes.txt,w,encodingutf-8) writer.writelines(totp) writer.close() print(Saved to os.getcwd() /auth_codes.txt)运行前提与注意事项电脑上需要安装Python 3。运行前务必保证Python 脚本与authy-to-bitwarden-export.json位于同一目录否则程序无法读取文件。运行方式二选一直接在 IDE 中打开脚本并运行或在终端执行macOS / Linux 及任何使用 bash 的系统python3 authy_to_ente.pyWindowspy -3 authy_to_ente.py运行成功后会在当前目录生成auth_codes.txt接下来按「导入到 Ente Authenticator方法 1 / 2.1 / 4」的明文导入流程操作即可。方法 3在 root 安卓设备上导出Android OTP Extractor / Aegis适用人群拥有root 权限、且系统为Android 6 或更新版本、能通过Play Integrity校验的进阶用户。该方法需要一台已 root 的安卓手机通过读取 Authy 在本机存储的加密数据来导出验证码。下面提供两条路线任选其一。路线 A使用 Android OTP Extractorpuddly 开发的 Android OTP Extractor 可以直接从已安装的应用中提取 TOTP 密钥并以二维码 / otpauth URL 的形式输出。准备电脑环境安装 Python 3并从 Android 官方平台工具页下载 adbAndroid Debug Bridge二进制。将 adb 加入系统 PATH以 Windows 为例搜索并打开“编辑系统环境变量”点击“环境变量”在顶部“用户变量”中找到Path变量并点击“编辑”点击“新建”填入你解压 Platform Tools 的路径。在手机上开启 USB 调试打开“设置” → 进入“关于手机”平板设备可能显示为“关于平板”若已开启开发者选项可跳过下列两步连续点击“版本号”7 次或更多返回设置主页面 → 进入“系统设置” → “开发者选项”打开“USB 调试”开关在电脑上运行adb devices确认设备已被识别手机上可能会弹出“允许”提示需要点击允许以授权电脑访问。用 pip 安装 Android OTP Extractorpip install githttps://github.com/puddly/android-otp-extractor从 Play 商店安装 Authy 并登录你的账户。运行以下命令导出 TOTP以二维码与 URL 形式输出python -m android_otp_extractor --prepend-issuer --include authy导出结果会在浏览器中以二维码 otpauth URL 的形式展示方便下一步在 Ente Authenticator 中逐个扫描导入见「导入到 Ente Authenticator方法 3」。路线 B使用 Aegis Authenticatorbeemdevelopment 开发的 Aegis Authenticator 内置了“从 Authy 导入”的能力可借助 root 权限直接完成迁移再导出为 JSON / TXT。在已 root 的手机上安装 Authy 并登录。从 Google Play 商店安装 Aegis Authenticator。打开 Aegis点击右上角三个点菜单 →导入与导出。选择“从其他应用导入”然后选择Authy。应用会请求 root 权限授权后自动从 Authy 导入全部验证码。回到“导入与导出”菜单使用“导出到文件”将验证码导出为json或txt文件。导出的文件格式与 Ente Authenticator 的导入选项对应JSON 走 Bitwarden 式导入TXT 走明文导入。可按下文对应流程操作。方法 4Authy-iOS-MiTMiOS 设备 电脑适用人群技术型 iOS 用户且因方法 1 / 2 已被修补无法使用、也没有 root 安卓设备方法 3 不可用的情况。该方法的核心原理是在 Authy 应用首次登录时拦截其接收到的网络数据其中包含你账户的加密验证器令牌encrypted authenticator tokens。拿到加密令牌后再使用你的**备份密码backup password**进行解密最后转换成 Ente 可识别的令牌文件。流程分为两步获取并解密加密令牌参考社区维护的 Authy-iOS-MiTM 指南更新版本或 原始版指南。转换为 Ente 可识别的格式原始指南会生成decrypted_tokens.json使用对应的 Python 脚本将其转换为ente_auth_import.plain文件然后将该文件传输到装有 Ente Authenticator 的设备上按下方「导入到 Ente Authenticator方法 1 / 2.1 / 4」的明文导入流程操作。导入到 Ente Authenticator按导出格式选择导入入口导出工作完成后你会得到以下三种产物之一Ente 的导入入口相应有两种导出方法产物格式导入入口方法 1 / 方法 2.1 / 方法 4TXT 明文或.plainPlain text明文导入方法 2Bitwarden JSONBitwarden方法 3JSON / TXT / 二维码按文件类型选择对应入口或扫描二维码导入到 Ente Authenticator方法 1 / 2.1 / 4 —— 明文 TXT 导入将 TXT 文件复制到装有 Ente Authenticator 的设备上。登录你的账户如果尚未登录或点击“不备份使用 / Use without backups”。打开左上角导航菜单汉堡按钮进入Data数据→Import codes导入验证码。选择Plain text明文选项。选择之前生成的 TXT 文件。明文格式说明来自 Ente 移动端导入页明文文件中的每一行应为一条otpauth://格式的 URI例如otpauth://totp/provider.com:youemail.com?secretYOUR_SECRET从源码看明文导入解析器 会先判断内容是否以otpauth://开头是则按otpauth://逐行或按逗号分隔解析为验证码否则尝试按 JSON 对象解析读取其中的items数组。因此若你的 TXT 内容实际为 JSON 结构如方法 2.1 转换产物之外的 JSON解析器也能兼容处理。单条记录解析失败不会中断整体导入合法的条目仍会被保留。导入到 Ente Authenticator方法 2 —— Bitwarden JSON 导入将 JSON 文件复制到装有 Ente Authenticator 的设备上。登录你的账户如果尚未登录或点击“不备份使用 / Use without backups”。打开左上角导航菜单汉堡按钮进入Data数据→Import codes导入验证码。选择Bitwarden选项。选择之前生成的 JSON 文件。如果这一步失败请回到方法 2.1改用明文导入。导入到 Ente Authenticator方法 3 —— 扫描二维码打开手机上的 Ente Authenticator。登录你的账户如果尚未登录或点击“不备份使用 / Use without backups”。点击应用右下角的添加按钮。选择“扫描二维码 / Scan a QR code”扫描浏览器或 Android OTP Extractor 输出中的二维码。附录Ente Authenticator 的导入机制与源码印证为了让你对导入过程更放心这里结合 ente 仓库的移动端源码说明一下 Ente 侧到底做了什么导入入口Ente Authenticator 的“导入验证码”入口位于设置页面的 Data 区域。在 data_settings_page.dart 中「导入验证码」与「导出验证码」「重复验证码」并列展示。点击后进入 import_page.dart其ImportType枚举与importOptions列表列出了全部支持的导入来源包括plainText明文、bitwardenBitwarden、aegisAegis、twoFas2FAS、andOTP、googleAuthenticator、proton、ravio、lastpass、otpAuth、encryptedEnte 加密格式——你在 App 里看到的每个导入选项都有对应的实现文件。导入分发import_service.dart 中的ImportService.initiateImport()按类型把操作分发给对应的导入模块例如 Bitwarden 对应 bitwarden_import.dart明文对应 plain_text_import.dart。Bitwarden JSON 的解析bitwarden_import.dart 会读取 JSON 中的items数组逐条判断login.totp字段若 TOTP 是otpauth://URL 则按 URL 解析若是steam://前缀则按 Steam 类型解析否则以name作为 issuer、login.username作为 account、login.totp作为密钥构造 TOTP 验证码。同时还会尝试把folderId映射为标签tags附加到验证码上从而保留你在 Bitwarden/Authy 侧的分组信息。保存与同步所有导入模块最终都会调用 import_flow.dart 中的saveImportedCodes()先将解析出的验证码逐条写入本地的CodeStore暂不同步随后触发一次AuthenticatorService.onlineSync()把新导入的验证码同步到云端——因此导入完成后你的其他设备也会自动获得这些验证码前提是已登录同一账户。验证码模型code.dart 中的Code.fromOTPAuthUrl()code.dart负责把otpauth://URI 解析为Code对象支持从 URI 中提取 issuer、account、digits、period、algorithm、counter 等参数并会处理账户名中未转义的#字符等边界情况。fromExportJson()code.dart则用于从 Ente 自己的导出 JSON 恢复验证码。如果你后续想从 Ente 再导出例如备份data_settings_page.dart 中同样提供了「导出验证码」入口。迁移后的安全清理迁移完成后你的 TOTP 密钥已安全存储在 Ente Authenticator 中本地加密存储 可选云端端到端加密同步。出于安全考虑强烈建议删除迁移过程中产生的所有未加密 JSON 与 TXT 文件例如authy_codes.txt、authy-to-bitwarden-export.json、auth_codes.txt、ente_auth_import.plain因为这些文件一旦泄露等同于你的所有 2FA 密钥一并泄露。同时请记住本指南开头的提醒在确认所有账户均已成功导入 Ente Authenticator 之前不要从 Authy 中删除任何验证码——迁移这件事稳妥比速度更重要。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考