如何从安卓手机中恢复Google Authenticator的密钥

如何从安卓手机中恢复Google Authenticator的密钥

从Android设备恢复Google身份验证器密钥以进行备份 (github.com)

获取数据库并导出

装有 Google 身份验证器的设备必须具有 root。

计算机需要 Android 开发者工具和 SQLite 3。

以USB调试模式连接设备。

$ cd /tmp

$ adb root

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

$ sqlite3 ./databases “select * from accounts” > /Volumes/TRUECRYPT_ENCRYPTED_VOLUME/google_authenticator_backup.txt

如果查看该文件,您会看到一个以竖线分隔的文件,其条目如下所示。

1|Google:me@gmail.com|xxxxxxxxxxxxxxxxxxxxxxxxxxxx|0|0|0||

2|Google:me@domain.org|xxxxxxxxxxxxxxxxxxxxxxxxxxxx|0|0|0|谷歌|Google:me@domain.org

3|Dropbox:me@gmail.com|xxxxxxxxxxxxxxxxxxxxxxxxxxxx|0|0|0|Dropbox|Dropbox:me@gmail.com

要恢复密钥,您可以在 Google 身份验证器中手动输入它们:

菜单 -> 设置帐户 -> 输入提供的密钥。

输入与显示完全相同的密钥,区分大小写,然后选择“基于时间”。

需要解密的情况

解决方案基于Google Authenticator 5.10之前版本的数据库,该数据库不加密。不确定这个网址能不能实现解密,我的App版本比较老,不需要解密。

其他方法是,如果是同品牌的手机,App+App数据应该可以无缝迁移的。

GoogleAuthenticator.dev

生成二维码,更方便

python脚本解决的,genqrcodes.py:

导入 pyqrcode

导入 sqlite3 conn = sqlite3.connect('/home/user/databases') c =

conn.cursor()

对于 idx,(email, secret, issuer) in enumerate(c.execute(“SELECT email,secret,issuer FROM accounts”).fetchall()):

if issuer==None:

if len(email.split(" "))>0:

issuer=email.split(" ")[0]

else:

issuer=email

if len(issuer.split(":"))>0:

issuer=issuer.split(":")[0]

#print ("If the following issuer looks wrong, enter a new value. If it's OK, just press ENTER.")

#newIssuer=input(issuer)

#if len(newIssuer)>0:

# issuer=newIssuer

url = 'otpauth://totp/{}?secret={}&issuer={}'.format(email, secret, issuer)

im = pyqrcode.create(url)

#print (url)

#print(im.terminal(quiet_zone=1))

big_code = pyqrcode.create(url, error='L', version=27, mode='binary')

big_code.png(issuer+'.png', scale=6, module_color=[0, 0, 0, 128], background=[0xff, 0xff, 0xcc])

big_code.show()

相关创意