我现在开始将Google Authenticator用于越来越多的事情,但是我刚刚意识到,如果我丢失了手机,或者需要擦除并还原它以安装新的固件,将会丢失所有代码。

请问有备份吗?还是某种后备方式,意味着我可以将其还原到新设备上?

感谢

评论

我不明白...密码只能使用一次,它们不会存储在手机上的任何位置,如果您需要在网站上输入密码,即使您已经在使用密码,也必须使用新密码不久前将一个放在此网站上。

谢谢,但是据我了解,如果我现在丢了手机,我什至无法登录该网站,更不用说设置新的Google身份验证器代码了

如果手机丢失时需要登录密码,则可以使用一种备份方法(SMS,呼叫,打印的密码...)。强烈建议设置至少一种替代方法来克服这种情况:)

我一直想叉Google Authenticator添加此功能。我希望有人在我有时间之前就做。

@Shywim Google Authenticator不仅适用于Google帐户。还有许多其他服务没有备份代码和SMS等。

#1 楼

以下方法仅适用于根植的Android设备。

Linux:

adb pull /data/data/com.google.android.apps.authenticator2/databases/databases /AFolderOnPC

Windows:

adb pull /data/data/com.google.android.apps.authenticator2/databases/databases C:\AFolderOnPC

请注意,PC上的文件夹必须已经存在。

这会将带有主密钥的身份验证器数据库文件复制到PC上,从而生成一次密码。然后可以将该文件还原到Android设备上的相同位置,或使用sqlite数据库查看器读取以提取密钥。

评论


复制到新设备时,请确保数据库文件夹和数据库文件均具有755权限。我尝试了700,而GA一直崩溃。有点担心,它需要完全的权限。也许这就是国家安全局的要求。

–eduncan911
15年6月22日在23:40

在执行此操作之前,您需要adb root,否则您将获得远程对象'/data/data/com.google.android.apps.authenticator2/databases'不存在

–西蒙·伍德赛德
16 Sep 15'2:27

请注意,如果启用了SELinux,即使使用正确的权限位,Authenticator应用程序也可能崩溃。要解决此问题,请在放回数据库文件后运行restorecon -F /data/data/com.google.android.apps.authenticator2/databases/databases。 (资源)

–张海
17年7月24日在7:13



@ eduncan911 660为我工作

–deed02392
17年11月20日在22:08

扎根设备会降低其安全性。如果您使用的是2FA,则大概需要更高的安全性。对于风险:owasp.org/index.php/Projects/…

–西蒙·伍德赛德
17年5月5日在17:36

#2 楼

您无需备份Google Authenticator应用程序/数据,因为您可以在无需配置两步身份验证的同一页面上创建身份验证代码的情况下创建“备份代码”列表即可登录。


为什么打印或下载备用密码?移动应用程序。

建议:您应打印或下载备份代码


将其保存在安全的地方(或打印出来),如果丢失手机您可以使用以下代码之一登录您的帐户并通过Authenticator应用设置新设备。

虽然这适用于Google的两步验证,但您配置为使用的其他任何网站Google身份验证器应用程序应该提供类似的选项或另一种接收代码的方式(例如,Facebook支持Google身份验证器,他们自己的应用程序和短信,例如我接受代码)。

评论


对于不提供密码的网站,我想说的唯一选择是使用没有两步身份验证的强唯一密码。出于兴趣,哪些网站不提供备份选项? Dropbox,Facebook,LastPass,Wordpress都可以(这些是我使用两步身份验证的其他站点)。

–bmdixon
2014年2月11日在11:38

@尼克:保存Google或其他网站提供的QR码,然后将其重新添加到另一台设备上的Authenticator中是可行的。我自己做了几次。但是,您应该确保时间正确且在两个设备上都保持最新(如果您打算继续使用它们),否则身份验证可能会失败。

–安德里斯
2014年2月11日在12:57



两因素身份验证“一次性”密码由两件事生成:当前时间,以及初始化期间服务器和应用程序之间共享的机密。在您的情况下,秘密就是QR码。只要身份验证器应用程序的另一个实例共享相同的秘密和相同的时间(相同的30秒帧),两个应用程序将生成相同的密码。

– Marc Plano-Lesay
2014年2月11日15:55

当您要重置手机时,您可能仍要备份它,因此您不必花一个小时去使用身份验证器的每个站点,输入备份代码并重置身份验证器设置。

– pupeno
2014年8月7日在8:22

这仅适用于Google的两步验证。 Google身份验证器可与许多其他站点配合使用,有些站点无法创建备份代码列表。有些使用SMS,有些给您一次性使用的备份代码,有些根本没有任何备份选项。即使每个站点都有备份选项,在购买新手机时也必须还原所有许多密钥,这是一个巨大的麻烦。

–劳伦斯·贡萨尔维斯(Laurence Gonsalves)
17年6月13日在16:56

#3 楼

我遇到了完全相同的问题。

原来的令牌(通常以qrcode表示给用户)存储在/data/data/com.google.android.apps.authenticator2内的sqlite数据库中/ databases文件夹,并且可以从设备中提取该文件。

我在此处自动化并说明了恢复过程:https://github.com/dchapkine/extract-google-authenticator-credentials

该项目提取原始令牌,然后生成带有qrcode的网页,您可以在新设备上重新扫描。

评论


这只是节省了我登录所有2FA帐户并手动切换电话的时间。非常感谢!

–耶和华
16年6月21日在5:41

这正是我想要的。重新扫描所有QR码的快速简便方法。

–哈维
17年11月27日在18:08

谢谢你,但是我的设备没有被植根。我是否正确理解我手上存在“ Catch 22”情况,使设备生根可以将其擦干净?

– urig
17年12月28日在20:07

简直太棒了。但是在Windows 10 Bash上不起作用。

–神经递质
18年2月1日在20:19

@urig,不,某些手机的生根不一定会擦除应用程序数据。

–神经递质
18年2月1日在21:47

#4 楼

Titanium Backup(链接到Google Play商店)将备份所有Android应用,包括Google Authenticator。但是,您必须将手机植根才能使其成为可行的选择。

我也建议您打印Google备份代码。这并不是完全备份Google Authenticator应用程序,但是如果需要,它们可以让您重置身份验证器。不过,这只会帮助重新获得对您Google帐户的访问权限。我认为,使用Titanium Backup备份应用程序是最完整的选择。它在很多场合为我节省了。

评论


必须解决这个问题,因为我无法adb提取数据库目录,无法复制到/ sdcard并接受它-chmod 777什么也没做。

– Lauri Elias
17年8月30日在9:39

“从Google Authenticator导入”-出售!非常重要的迁移功能。

–... Adambean
17年8月31日在7:18

值得一提的是,为了不重新植根新手机。备份后,单击备份/还原选项卡->选择Authenticator应用程序->特殊功能选项卡向右滑动->选择浏览->在[数据库]下选择帐户。那么您将以.csv文件的形式获取应用中的所有帐户。使用“秘密”列将帐户还原到新手机。

–颜
19年1月21日在10:44



#5 楼

解决此问题的最简单方法是,每当您为网站设置新的身份验证器并将其保存在加密的位置时,都要拍摄QR码的屏幕快照。

如果您需要重新安装或添加身份验证器以用于将该站点转移到另一部手机上,只需通过扫描屏幕快照中的QR码在身份验证器中添加帐户,就好像您要建立一个新站点一样。这样,您就可以在多个设备上使用相同的Authenticator。

评论


我想解释一下为什么这样做有效,网站和您的设备都将共享一个简单的字符串,即QR码中设置的“代码”,并且他们将根据该代码不断地使用它来创建新的6位数代码当前日期和时间。因此,您只需要使用此代码即可生成新代码。该网站无法检查谁或谁创建了6位数字的密码,只需要正确无误即可。

–阿里
17年8月3日14:18



更好的主意:只使用更好的OTP应用。有些确实允许导出机密。

– Jiggunjer
19/12/3在10:59

#6 楼

尝试使用Authenticator Plus,它支持备份/恢复功能,并且可以跨设备同步,如果您拥有手机/平板电脑,此应用程序可以完美同步它们之间的所有帐户,甚至还支持Android Wear。

它具有徽标支持太

评论


或者,您可以使用免费的Authy(authy.com)。

–盖
14年7月26日在1:56

Authy看起来很棒!比起Google,它不是开源的,它要好得多。我可以忍受。

– Cregox
2014年11月29日在18:58

这听起来不是个坏主意吗?基于时间的一次性密码协议(TOTP aka rfc6238,这是authy / google身份验证器等的实现)的全部重点是您和您只有自己才能生成代码。如果您让某些第三方存储这些代码,它们将成为攻击的巨大目标,不必担心必须信任适用于此服务的每个人以及他们如何实现它。

–antiduh
2015年4月28日在18:19



@antiduh当然是安全性与可用性的问题,如果您更关心安全性,它对您而言并不理想,那么您实际上应该远离软件解决方案,而使用诸如yubikey之类的硬件解决方案

–里亚兹·穆罕默德·易卜拉欣
2015年5月7日在6:07

#7 楼

设置或续订2FA时,可以保存QR码。您可以通过截屏保存QR。或者使用上下文菜单“将图像另存为”,但这并不总是可用。 (确保为图像指定一个相应的名称,并在安全的位置备份该帐户)。要恢复,只需重新扫描Google Authenticator中的QR码即可。

#8 楼

作为序言,这是一种用于提前配置MFA的方法,以便始终对其进行备份,而不是恢复或备份现有代码。

我只是在Nexus 6P停止连接后进行了此过程数据,我不得不在Pixel上再次设置所有MFA。我意识到,如果我丢失了手机或重置了出厂数据,我会感到很无聊。基于本身的设置(大多数身份验证器应用程序中的“手动”选项)。到目前为止,我使用的每项服务都允许您选择基于令牌的设置,而不是QR。

不用费力地拍摄QR码的屏幕快照,而是对其进行适当的标签,然后由GPG对其进行加密并将其安全地存储在某个地方,我只是将令牌存储在加密的保管库中,然后手动设置我的MFA 。

我验证了您可以在同时运行的独立设备上使用同一密钥来设置身份验证器的克隆。因此,只要您安全地控制令牌,就可以在任何设备上配置MFA。

我对这个结果感到满意,因为除了重新配置MFA(我在任何情况下都必须这样做)之外,我只需要做所有事情,只需将所有令牌添加到lastpass中即可。现在,我可以解决电话丢失的情况,并且可以根据需要配置其他设备。

#9 楼

对于植根电话有很多建议。但是,如果您不想使设备易受攻击,则不建议您将其植根。两因素身份验证提供了附加的保护层,并且通过扎根将其变为零,因为不同的病毒可以访问受保护的内存区域。

只有少数服务提供备份代码(尤其是Google)。对于这些服务,您应该保存备份代码。

最好的解决方案是在令牌注册时保存QR码(或密钥)并将其保存在安全的地方。然后,如果您丢失了手机,则可以在新设备上的Google Authenticator中恢复令牌。

还可以使用硬件令牌。它们可以采用密钥卡或信用卡的形式。
在Protectimus博客(我工作的公司)上查看此文章,以获取有关如何备份Google Authenticator的更多信息:如何备份Google Authenticator或将其转移到新手机。

*披露:我在上面链接的网站上工作。

评论


欢迎使用Android爱好者。我们注意到您隶属于上述链接。即使您在个人资料中声明了从属关系,也请在您的回答中予以披露。进一步阅读:如何成为垃圾邮件发送者。

–安德鲁·T。♦
18年1月25日在16:11

@AndrewT。做完了

– iBug
18年1月25日在16:36

#10 楼

以下方法仅适用于具有根权限的Android设备。此方法对于不那么精通技术的人或像我这样的人>不想浪费时间从头开始安装Android SDK + JDK只是为了运行adb命令更有用。

所以在这里是:


从Google Play商店下载并安装任何“ Root Explorer”应用。我使用流行且免费的FX文件浏览器及其免费的FX根目录访问插件。您也可以使用其他人。这个应用程序使我们能够以root用户身份访问Android系统。
在系统根目录中打开文件资源管理器后>单击“数据”文件夹>单击“数据”文件夹(在另一个数据文件夹内)>复制名为com.google.android.apps.authenticator2的文件夹>退出系统根文件夹>打开常规主存储/ SD存储空间并在此处粘贴文件夹。
将您的android设备连接到PC,然后将文件夹备份到安全的USB /外部HDD。

就这样。现在,每当您需要重新安装固件/购买新手机时,只需按照上述步骤操作,然后在安装Google身份验证器应用程序后将该文件夹复制到完全相同的目录即可。

或者,您可以使用免费的开源SQLite GUI编辑器(例如“ SQLite数据库浏览器可移植”)打开“ com.google.android.apps.authenticator2”文件夹中的“数据库”文件。在“浏览数据”标签中,您可以看到密钥和与该密钥相对应的名称,以便可以将密钥手动输入到Google Authenticator应用中。

评论


@Izzy编辑了主观部分,并感谢您的帮助:)该方法看起来很大,但对于那些不是android开发人员的普通人来说,这是最省时的方法。在我自己找到解决方案之前,我实际上查看了此线程。备用码-不适用于大多数服务(仅适用于Google)。 Authenticator Plus是一款付费应用。 Titanium备份可能存在兼容性问题。 ADB pull命令需要您安装Android SDK + JDK。我的方法就像复制粘贴文件夹一样“简单”。

–帕文·约瑟夫
2014年12月31日9:45



感谢您的编辑,Pavin!关于您的评论,我必须部分不同意:我从未安装过SDK + JDK,但仍然使用了许多ADB功能(尤其是使用我自己的工具“ Adebar”获取设备文档,备份/还原脚本等) )。在Linux上,我只需要adb可执行文件(在Windows上,另外需要两个.dll文件)。有关详细信息,请参阅是否有ADB的最小安装?

– Izzy♦
2014年12月31日12:11在

PS:曾经有任何许可问题吗?手动将应用程序的数据目录复制到另一台设备可能会出现这种情况。请记住,要正确访问文件,权限和所有权必须匹配。在安装时,每个应用程序都分配有唯一的UID / GID对。文件权限具有所有者/组/其他人的标志。通常,应用程序数据的最大数量为-rw-rw-(所有者和组的读/写权限,其他什么都没有)。因此,如果所有权不匹配,您可能会遇到麻烦(并且该应用可能行为不当)。

– Izzy♦
2014年12月31日12:17

是的,它在大多数时间都有效。但是,如果没有,您可以使用任何SQLite编辑器打开并查看数据库文件中的密钥;然后使用键在Google Authenticator中添加帐户。

–帕文·约瑟夫
2014年12月31日在18:36

啊。更好的解决方案:如果它不起作用,请检查并调整权限。在覆盖/data/data/com.google.android.apps.authenticator2之前,请对其执行ls -l并检查所有权/权限。复制后,使用chown和chmod将其修复。

– Izzy♦
2014年12月31日20:21在

#11 楼

在有根电话上,您可以使用“ Amaze”文件管理器(https://play.google.com/store/apps/details?id=com.amaze.filemanager&hl=zh-CN)。转到根目录/data/data/com.google.android.apps.authenticator2/database。打开数据库文件作为数据库。选择帐户。您将有3列_id,电子邮件和机密。复制“秘密”值。当需要恢复时,只需添加,请选择“输入提供的密钥”,为其命名并粘贴值。

#12 楼

正如我在一段时间之前经历过的一样。当您登录自己的帐户时,您将获得用于输入6位数字代码的密钥页面。如果您已经验证过任何号码,则可以在此位置更改第二个键并获取电话号码。为了获得更多备份,您可以选择其他计算机作为信任计算机。因此,他们不会在这些计算机上询问第二步代码。

#13 楼

这是我网站上简单Python脚本的链接:http://usefree.com.ua/google-authenticator-backup/

您只需粘贴代码并在Python环境中运行它们即可。

工作原理:

在使用Google身份验证器设置和配置两因素身份验证期间,不仅可以扫描QR码,而且可以获得代码,例如,对于Google Mail,我们得到:csnji4rfndisoh323fdsioah3u2iodso
要在使用Python IDLE的计算机上生成TOTP,您可以定义以下功能:

def totpgen ():
    import time
    import hmac
    import hashlib
    import base64

    ### TOTP-key for Google
    #secret = base64.b32decode("csnji4rfndisoh323fdsioah3u2iodso", True)
    #totp for btc-e
    #secret = base64.b32decode("DHSJHDW89E8DFUS98RIO23J390EFU234IR90WEUIF903DMSKAKDS====")
    ### Calc counter from UNIX time (see RFC6238) 
    counter = long(time.time() / 30)

    ### Use counter as 8 byte array
    bytes=bytearray()
    for i in reversed(range(0, 8)):
      bytes.insert(0, counter & 0xff)
      counter >>= 8

    ### Calculate HMAC-SHA1(secret, counter)
    hs = bytearray(hmac.new(secret, bytes, hashlib.sha1).digest())

    ### Truncate result (see RFC4226)
    n = hs[-1] & 0xF
    result = (hs[n] << 24 | hs[n+1] << 16 | hs[n+2] << 8 | hs[n+3]) & 0x7fffffff

    ### Print last 6 digits
    return str(result)[-6:]


插入行

secret = base64.b32decode("csnji4rfndisoh323fdsioah3u2iodso", True)


您的代码而不是"csnji4rfndisoh323fdsioah3u2iodso"

取消注释行,并调用IDLE

totpgen ()



您将获得TOTP!)
对于btc-e服务,请尝试使用线路

secret = base64.b32decode("DHSJHDW89E8DFUS98RIO23J390EFU234IR90WEUIF903DMSKAKDS====")


对于其他服务-如上述。

评论


您能否包括相关代码并解释如何使用它? (例如,此代码的作用是什么?粘贴“什么”代码以及从何处粘贴?并不是每个人都懂俄语)。不建议使用仅链接的答案,因为如果链接腐烂,那么将没有任何用处。 (此外,如果您打算推广您的博客,则需要进行披露。否则,可能会被认为纯粹是推广的垃圾邮件)。

–安德鲁·T。♦
2015年4月14日在1:21



请不要成为垃圾邮件发送者,并在链接本身旁边清楚,明显地提及它是您的网站。

–莫妮卡基金的诉讼
17年9月11日17:11