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

deyfvvtc  于 2023-05-27  发布在  Android
关注(0)|答案(8)|浏览(666)

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

EDIT我正在查找别名密码,而不是密钥库密码

gg58donl

gg58donl1#

您可以在Android Studio生成的idea.log文件中找到这一点:
搜索“Pandroid.injected.signing.key.password”,就可以看到密钥密码。
日志示例:
2015-11-13 10:22:48,844 [ 709463] INFO - a.gradle.invoker.GradleInvoker - Build命令行选项:[--configure-on-demand,-Pandroid.注射援引。从。ide=true,-Pandroid。注射签名存储矿石file=/Users/varun/Projects/myapp/mykey。jks,-Pandroid.注射签名商店。password=mykeystorepassword,-Pandroid.注射签名key.alias=myalias,-Pandroid.注射签名key.password=mykeypassword,-Pandroid.注射apk.location=/Users/varun/code/android/workspace/myapp,--init-script,/private/var/folders/vk/z504 nlhd 6v 30 p7 zvtgjp 5sjm 0000 gn/T/asLocalRepo0.gradle]
注1:在OSX上,idea.log文件可以在~/Library/Logs/AndroidStudio2.0中找到
注2:如果您在idea.log中没有找到密码,请查看名为idea.log.1、idea.log.2等的文件。
Source

6ojccjat

6ojccjat2#

在macOS上,最新版本的Android Studio(在3.2上测试)将密钥库/密钥密码存储在密钥链中的以下项目下:

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

前者存储密钥库本身的密码,后者存储密钥的密码。
您可以使用系统Keychain Access应用程序访问它们。找到相应的条目并双击它。Account字段应包含密钥存储库的路径或密钥存储库中密钥别名的路径,格式如下:KEY_STORE_PASSWORD__/Users/username/keystorenameKEY_STORE_PASSWORD__/Users/username/keystorename__alias
单击Show password并在需要时输入macOS密码。就是这样!

qq24tv8q

qq24tv8q3#

方法一:从Gradle构建运行时读取

第一步:将下面的代码添加到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")}"
    }
}

第二步:从菜单Build -> Generate Signed apk/bundle开始构建。
第三步:打开位于Android Studio底部的Build窗口,查找密钥存储信息

方法二:从Idea持久存储读取

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

第一步:从download link下载jar文件
第二步:将插件安装到Android Studio


然后重新启动Android Studio(如果需要)

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

pcrecxhr

pcrecxhr4#

对于任何尝试在较新版本的Android Studio和Ubuntu上恢复密钥库密码的人来说,似乎大多数记录的从日志,gradle等恢复密码的建议不再起作用。Corneliu优秀的暴力破解脚本非常棒-除非你选择了一个16个字符的密码,其中没有字典单词,并且希望在本月的某个时候得到结果:)据我所知,使用Intellij security.xml解决方案也不再可用于从Android Studio中检索保存的密码。
然而,经过一番研究,Android Studio 3.1似乎使用了Ubuntu 18.04中的操作系统密钥链,因此检索已保存的密钥库密码就像下面这样简单:
1.打开“密码和密钥”(使用超级密钥并搜索“密码”)
1.按'android'筛选结果
1.查看每个条目,它们将类似于org.jetbrains.android... KeyPasswordRequestor,然后依次打开每个条目
1.展开密码下拉菜单并选择“显示密码”,它将看起来像这样:KEY_STORE_PASSWORD__/home/pathto/keystore/keystore-name.jks@mycoolpassword
找到您要查找的密钥库,@之后的位是您丢失的密码。希望这对外面的人有帮助!

pzfprimi

pzfprimi5#

Gradle将它们存储在项目目录中的二进制文件中。你可以像这样(从项目目录中)获取它们:
strings .gradle/GRADLE_VERSION/taskArtifacts/taskArtifacts.bin | grep storePassword -A1
(感谢https://stackoverflow.com/a/33624636/1982087提供的taskArtifacts.bin指针)

mrfwxfqh

mrfwxfqh6#

寻找日志文件从你签署了你的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\

klsxnrf1

klsxnrf17#

我也有同样的问题!
它让我疯狂,但我发现了一个小脚本,它救了我:https://github.com/corneliudascalu/intellij-decrypt
我觉得这能帮到你。好看

disho6za

disho6za8#

如果你有很容易提取的源代码,一个简单的方法是修改应用程序build.gradle.kts,添加如下内容:

task("helpMeOutHere") {
    doLast {
        println("Executing helpMeOutHere")
        if (project.hasProperty("android.injected.signing.store.password")) {
            println("helpMeOutHere - StorePas: ${project.property("android.injected.signing.store.password")}")
        }
        if (project.hasProperty("android.injected.signing.key.password")) {
            println("helpMeOutHere - Password: ${project.property("android.injected.signing.key.password")}")
        }
    }
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>() {
    dependsOn.add("helpMeOutHere")
}

而不是执行Android Studio生成签名的APK并在构建日志中查找“helpMeOutHere”
一定要删除上述剪下一旦你恢复你的密码

相关问题