如何从 Android Studio 中检索已保存的密钥库密码?

Posted

技术标签:

【中文标题】如何从 Android Studio 中检索已保存的密钥库密码?【英文标题】:How can I retrieve a saved keystore password from Android Studio? 【发布时间】:2013-09-09 15:36:36 【问题描述】:

新的 android Studio 允许我们保存密钥库密码以供以后使用。这些密码存储在我的计算机上的什么位置 (OSX),有没有办法检索保存的值?

编辑 我正在寻找别名密码,而不是 Keystore 密码

【问题讨论】:

@BasicPleasureModel 的解决方案是唯一适用于 Linux 的解决方案。需要查看是否有与 OSX 和 Windows 相关的内容 @allgood OSX 的解决方案就在这里:***.com/questions/18701932/… 【参考方案1】:

你可以在Android Studio生成的idea.log文件中找到这个:

搜索“Pandroid.injected.signing.key.password”可以看到密钥密码。

示例日志:

2015-11-13 10:22:48,844 [709463] 信息- a.gradle.invoker.GradleInvoker - 构建命令行选项: [--按需配置,-Pandroid.injected.invoked.from.ide=true, -Pandroid.injected.signing.st ore.file=/Users/varun/Projects/myapp/mykey.jks, -Pandroid.injected.signing.store.password=mykeystorepassword, -Pandroid.injected.signing.key.alias=myalias, -Pandroid.injected.signing.key.password=mykeypassword , -Pandroid.injected .apk.location=/Users/varun/code/android/workspace/myapp, --init-script, /private/var/folders/vk/z504nlhd6v30p7zvtgjp5sjm0000gn/T/asLocalRepo0.gradle]

注意 1:在 OSX 上,idea.log 文件可以在 ~/Library/Logs/AndroidStudio2.0 找到

注意2:如果在idea.log中没有找到密码,那么还要查看idea.log.1、idea.log.2等文件。

Source

【讨论】:

辛苦了,我正要开始使用github.com/MaxCamillo/android-keystore-password-recover 暴力破解我的密钥库 - 你救了我的培根 密码被屏蔽但我找到了正确的密钥库位置:-) 在 OSX 上,可以在 ~/Library/Logs/AndroidStudio2.0 找到最新版本的 Android Studio(当前为 2.0)的日志文件。我在 idea.log.1 中找到了密码,因此您可能需要检查几个文件才能找到您想要的内容 非常感谢!这是一个比暴力破解更好的解决方案:D 如果有人像我一样在 OSX 上找不到日志文件:在 Studio 中:Help->Show Log in Finder->open file and search ;) 这似乎不适用于 Ubuntu 上的 AS 3.0,日志中有星号代替密码字符。【参考方案2】:

在 macOS 上,最新版本的 Android Studio(在 3.2 上测试)将 keystore/key 密码存储在 Keychain 中的以下项下:

org.jetbrains.android.exportSignedPackage.KeystoreStep$KeyStorePasswordRequestor org.jetbrains.android.exportSignedPackage.KeystoreStep$KeyPasswordRequestor

前者存储密钥库本身的密码,后者存储密钥的密码。

您可以使用系统钥匙串访问应用程序访问它们。找到相应的条目并双击它。 Account 字段应包含您的密钥库的路径或密钥库中密钥别名的路径,格式如下: KEY_STORE_PASSWORD__/Users/username/keystorenameKEY_STORE_PASSWORD__/Users/username/keystorename__alias

单击Show password 并在请求时输入您的 macOS 密码。就是这样!

【讨论】:

你是一个活生生的救星。谢谢!! 感谢 Mac 保护我的密码...感谢您,因为您显示了正确的路径 :) 你是救生员。谢谢!!【参考方案3】:

对于尝试在 Android Studio 和 Ubuntu 的更新版本上恢复密钥库密码的任何人,似乎大多数记录在案的从日志、gradle 等中恢复密码的建议不再有效。 Corneliu 出色的蛮力脚本非常棒 - 除非您选择了一个 16 字符的密码,其中没有字典单词,并且希望本月某个时候得到结果 :) 不再可以使用 Intellij security.xml 解决方案从 Android Studio 检索保存的密码或者,据我所知。

但是 - 经过一番挖掘,Android Studio 3.1 似乎使用了 Ubuntu 18.04 中的 OS 钥匙串,因此检索已保存的密钥库密码非常简单:

    打开“密码和密钥”(使用超级密钥并搜索“密码”) 按“android”过滤结果 查看每个条目,它们将是 类似 org.jetbrains.android...KeyPasswordRequestor 和 依次打开一个 展开密码下拉菜单并选择 '显示密码',它看起来像: KEY_STORE_PASSWORD__/home/pathto/keystore/keystore-name.jks@mycoolpassword

找到您要查找的密钥库,@ 后面的位是您丢失的密码。希望能帮助到那里的人!

【讨论】:

太棒了!它也适用于 OSX。在 android 上打开钥匙串访问和过滤器 @KamenDobrev 是的,对于 OSX,我在此处的答案中描述了详细信息:***.com/questions/18701932/…【参考方案4】:

Gradle 将它们存储在您的项目目录中的二进制文件中。您可以像这样(从项目目录)获取它们:

strings .gradle/GRADLE_VERSION/taskArtifacts/taskArtifacts.bin | grep storePassword -A1

(感谢https://***.com/a/33624636/1982087 提供taskArtifacts.bin 指针)

【讨论】:

如果有多个 GRADLE_VERSION 尝试所有这些 ..它在 2.2.1 上对我有用 ..对 2.4 无效 在其他方法都没有的情况下在 Windows 上为我工作,非常感谢! 请解释如何在 Windows 上实现这一点? 为我工作;你让我也去原来的问题,也赞成:)【参考方案5】:

从您签署 apk 之日起查找日志文件,您可以在那里找到您的密钥信息,如下所示。

-Pandroid.injected.signing.store.password=[store_password], 
-Pandroid.injected.signing.key.alias=[alias], 
-Pandroid.injected.signing.key.password=[key_password]

您可以在

下找到您的日志文件

C:\Users\username.AndroidStudio[versionNum]\system\log\

【讨论】:

从带有 gradle 4.1 的 android studio 3.0 开始,它们被屏蔽(密码存储为 ******) 如果它们标记为 *****,我们如何在 android studio 3.0 及更高版本中获取它们【参考方案6】:

我遇到了同样的问题!

这让我抓狂,但我找到了一个小脚本,它拯救了我:https://github.com/corneliudascalu/intellij-decrypt

我认为它可以帮助你。 好看

【讨论】:

如果您也能展示如何使用该方法会更好。【参考方案7】:

方法一:从 gradle build runtime 读取

第 1 步:将以下代码添加到 app/build.gradle

afterEvaluate 
    if (project.hasProperty("android.injected.signing.store.file")) 
        println "key store path: $project.property("android.injected.signing.store.file")"
    
    if (project.hasProperty("android.injected.signing.store.password")) 
        println "key store password: $project.property("android.injected.signing.store.password")"
    
    if (project.hasProperty("android.injected.signing.key.alias")) 
        println "key alias: $project.property("android.injected.signing.key.alias")"
    
    if (project.hasProperty("android.injected.signing.key.password")) 
        println "key password: $project.property("android.injected.signing.key.password")"
    

第 2 步:从菜单 Build -> Generate Signed apk/bundle 开始构建。

第三步:打开Android Studio底部的Build窗口,查找key store info

方法2:从Idea持久存储中读取

我写了一个 Idea 插件,命名为RestoreKeystorePlugin

第一步:从download link下载jar文件

第 2 步:将插件安装到 Android Studio

然后根据需要重新启动 Android Studio

第 3 步:选择工具 -> 恢复密钥库信息菜单,它将在对话框中显示密钥库信息

【讨论】:

【参考方案8】:

如果您使用的是 Windows,获取纯文本密码的最简单方法是从项目目录中的 signing-config.json 文件中获取。

app\build\intermediates\signing_config\release\out\signing-config.json

此文件具有键 mKeyPasswordmStorePassword。它还包含“生成签名包或 APK”框架中的所有信息。

【讨论】:

以上是关于如何从 Android Studio 中检索已保存的密钥库密码?的主要内容,如果未能解决你的问题,请参考以下文章

从 Android Studio 中的 SQLite 数据库中以字符串形式检索数据

Android Studio:保存和检索用户输入数据的最佳方法

如何在 android studio 中检索签名 APK 的密钥别名和密钥密码(从 Eclipse 迁移)

如何从列表视图中从 sqlite 检索数据单击并查看不同的活动 android studio

如何从 Android 上保存的帐户中检索 Facebook-AuthToken

如何从 Real-time Firebase 检索使用 Geofire 设置的多个位置并在 Android Studio 的地图上显示它们?