Как обрабатывать потерянный пароль KeyStore в Android?

Я забыл свой пароль к хранилищу ключей, и я не знаю, что делать дальше (я не могу или не буду давать никаких оправданий). Я хочу обновить свое приложение, потому что я просто исправил ошибку, но ее больше не удалось. Что произойдет, если я использую одно и то же хранилище ключей, но создаю новый ключ? Могу ли я по-прежнему обновлять приложение, и если это невозможно, как я могу предоставить информацию пользователям об обновленной версии?

Если у кого-то была такая проблема или возникли проблемы, какой совет вы можете дать, чтобы помочь исправить ситуацию? К счастью, это бесплатное приложение.

Ответ 1

Смотрите эту ссылку

Это печально, но когда вы теряете хранилище ключей или пароль в хранилище ключей, ваше приложение становится сиротой. Единственное, что вы можете сделать, это повторно отправить свое приложение на рынок под новым ключом.

ВСЕГДА создайте резервную копию своего хранилища ключей и напишите пароли в безопасном месте.

Ответ 2

Я сам столкнулся с этой проблемой - к счастью, мне удалось найти пароль во временном файле Gradle. На всякий случай, если кто-нибудь приземлится здесь:

попробуйте найти этот файл

..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin

or

.gradle/3.5/taskHistory/taskHistory.bin
.gradle/5.1.1/executionHistory/executionHistory.bin
.gradle/caches/5.1.1/executionHistory/executionHistory.bin

и найдите

.storePassword

Это было в открытом виде. В общем, если вы помните хотя бы часть своего пароля, попробуйте найти файл, содержащий эту подстроку, и, надеюсь, вы что-нибудь найдете.

Хотел выкинуть это сюда, может быть, это в конечном итоге кому-нибудь поможет.


Изменить: Добавлено новое понимание комментариев, чтобы быть более заметным.

Спасибо Вивеку Бансалу, Амару Илиндре и Узбекджону за это.

Ответ 3

В случае появления неверного пароля, даже один раз, он продолжает говорить о следующих попытках:

Неправильный пароль или неверный пароль.

Даже когда вы предоставляете правильный. Я пробовал это несколько раз, возможно, это какая-то защита.
Закройте мастер экспорта и запустите его снова с правильным паролем, теперь он работает:)

Ответ 4

Брут - лучший выбор!

Вот script, который помог мне:

https://code.google.com/p/android-keystore-password-recover/wiki/HowTo

Вы можете указать ему список слов, которые может содержать пароль может для быстрого восстановления (для меня он работал в < 1 с)

Ответ 5

В утилите консоли запуска MAC и прокручивается до ~/Library/Logs → AndroidStudio → idea.log.1 (или любой старый номер журнала) Затем я искал "хранилище ключей" и должен появляться где-то в журналах.

Оригинальный вопрос: ссылка

Ответ 6

Go to taskHistory

Наконец я нашел решение, проведя два дня...

Следуй этим шагам:

  1. Перейти к проекту
  2. В .gradle найдите папку с версиями Gradle, в моем случае это была 4.1 (см. Рис.)
  3. разверните папку 4.1, а затем в папке taskHistory вы найдете файл taskHistory.bin.
  4. Откройте файл taskHistory.bin в самой студии android.
  5. Ищите ".storePassword".. Чтобы вы получили пароль хранилища ключей.

Это действительно сработало для меня.

Попробуйте это и счастливое кодирование !!!

Ответ 7

На самом деле, потеря keystore password не является проблемой.
Вы можете создать новое хранилище ключей и установить для него новый пароль с помощью команды keytool ниже. Вам не нужен оригинальный пароль хранилища ключей:

keytool -importkeystore -srckeystore path/to/keystore/with/forgotten/pw \
-destkeystore path/to/my/new.keystore

При появлении запроса создайте пароль для вашего new.keystore хранилища ключей и для пароля хранилища ключей источника (который вы потеряли), просто нажмите Enter.
Вы получите предупреждение о том, что целостность не проверена, и вы получите новый .keystore, идентичный оригинальному с новым паролем.

Причина, по которой это работает, заключается в том, что keystore password используется только для обеспечения целостности keystore, он не шифрует с ним данные, в отличие от private key password, который фактически сохраняет ваш закрытый ключ в зашифрованном виде.

Обратите внимание, что для подписи приложений вы должны знать private key password к private key password. Что ж, если это такой же keystore password как забытый keystore password вы можете прибегнуть к грубой силе, как в ответе @Artur

Этот подход всегда работал для меня.

Ответ 8

Я чувствую, что мне нужно дать ему ответ, потому что это не может быть просто в комментариях. Как @ElDoRado1239 говорит в своем ответе (не забудьте перечесть его ответ;)

  • Иски ..Project\.gradle\2.4\taskArtifacts\taskArtifacts.bin в моем случае были в ..Project\.gradle\2.2.1\taskArtifacts\taskArtifacts.bin, потому что я использую gradle 2.2.1
  • Тогда ищите storePassword, как @Moxet Khan говорит в комментариях... в моем случае была строка signingConfig.storePassword¬í t my.forgoten.password—signingConfig.keyAlias

Надеюсь помочь кому-то еще!!!

Ответ 9

К счастью, я нашел свой потерянный пароль вместе с концом хранилища ключей и псевдоним из журналов студии Android.

если вы используете машины на основе Linux/Unix.

Перейдите в каталог библиотек журналов

cd ~/Library/Logs/

если вы помните свою версию студии Android, которую вы использовали для создания последней версии APK. Перейдите к этому каталогу

ex: cd AndroidStudio1.5/

Там вы найдете файлы журнала. в любом из файлов журнала (idea.log) вы найдете свои учетные данные хранилища ключей

Пример

-Pandroid.injected.signing.store.file=/Users/myuserid/AndroidStudioProjects/keystore/keystore.jks, 
-Pandroid.injected.signing.store.password=mystorepassword, 
-Pandroid.injected.signing.key.alias=myandroidkey, 
-Pandroid.injected.signing.key.password=mykeypassword,

Я надеюсь, что это поможет пользователям Android Studio

Ответ 10

Это может быть немного поздно, но это поможет кому-то наверняка. Вы можете найти пароль, если вы помните что-то иначе, попробуйте поискать

signingConfig.storePassword

также, если вы забыли псевдоним ключа, вы можете найти здесь что-то вроде signatureConfig.keyAlias

Project.gradle\3,3\taskArtifacts\taskArtifacts.bin

Надеюсь, это поможет кому-то

Ответ 11

РЕШЕНИЕ 2019 (Windows, Android Studio 3.3, Gradle 4.10):

Это решение работает, только если флажок "Запомнить пароль" был ранее отмечен.

Прежде всего, TaskArtifacts.bin не существует для этой версии gradle, а idea.log показывает звездочки для паролей. Это были старые решения, которые мне не помогли.

Где я нашел пароли в виде простого текста: C:\Users\{username}\AndroidStudioProjects\{project}\app\build\промежуточные файлы \signature_config\release\out\signature-config.json

Ключи: mStorePassword и mKeyPassword.

Я действительно надеюсь, что это поможет кому-то еще.

Ответ 12

Для всех, кто может столкнуться с этим, я хотел бы поделиться ответом, который может иметь место для вас или для других, просматривающих эту статью (например, я).

Я использую Eclipse и создал свое хранилище ключей для него для выпуска 1.0. Ускорьтесь на 3 месяца, и я хочу обновить его до 1.1. Когда я выбрал Export... в Eclipse и выбрал это хранилище ключей, ни один из моих паролей, который я мог запомнить, не работал. Каждый раз, когда он говорил "Keystore неправильно или неверно пароль". Это дошло до того, что я собирался запустить программу грубой силы на нем до тех пор, пока я мог стоять (неделя или около того), чтобы попытаться заставить его работать.

К счастью, я должен подписать мой неподписанный файл .apk за пределами Eclipse. Вуаля - это сработало! Мой пароль был правильным все время! Я не уверен, почему, но, подписав его в Eclipse через меню "Экспорт", сообщалось об ошибке, даже когда мой пароль был прав.

Итак, если вы получаете эту ошибку, вот мои шаги (взятые из документация по Android), чтобы помочь вам получить apk для рынок.

ПРИМЕЧАНИЕ. Чтобы получить unsigned apk из Eclipse: щелкните правой кнопкой мыши проект > Инструменты Android > Экспортировать не подписанное приложение

  • Войдите в файл unsigned apk с keystore

    а. откройте команду cmd и перейдите в раздел "c:\Program Files\Java\jdk1.6.0_25\bin" или любую другую версию java (где вы скопировали файл apk без знака и хранилище ключей)

    б. в командной строке cmd с файлом keystore и unsigned apk в том же каталоге введите следующую команду: jarsigner -keystore mykeystorename.keystore -verbose unsigned.apk myaliasnamefromkeystore

    с. он скажет: "Введите парольную фразу для хранилища ключей". Введите его и нажмите Return.

    д. === > Успех выглядит так:

    adding: META-INF/MANIFEST.MF
    ...
    signing: classes.dex
    

    е. неподписанная версия перезаписывается на месте, поэтому ваш подписанный файл apk теперь имеет то же имя файла, что и без знака

  • Используйте ZipAlign для сжатия подписанного файла apk для распространения на рынке

    а. откройте подсказку admin cmd и перейдите в "c:\AndroidSDK\tools" или где бы вы не установили Android SDK

    б. введите эту команду: zipalign -v 4 signed.apk signedaligned.apk

    с. === > Успех выглядит так:

    Verifying alignment of signedaligned.apk (4)
    50 META-INF/MANIFEST.MF (OK - compressed)
    ...
    1047129 classes.dex (OK - compressed)
    Verification succesful
    

    д. подписанный и выровненный файл находится в файле signedaligned.apk(имя файла, указанное в предыдущей команде).

======== > ГОТОВ, ЧТОБЫ ПОДАВАТЬСЯ НА МАРКЕТИЮ

Ответ 13

Проведя почти день исследования возможных вариантов восстановления потерянного пароля хранилища ключей в Android Studio. Я нашел следующие 4 возможных способа сделать это:

  • Используйте AndroidKeystoreBrute, чтобы получить ваш пароль. Этот метод весьма полезен, когда вы частично забыли свой пароль, и у вас все еще есть какие-то намеки на ваш пароль.

  • Вы также можете получить его через файлы журнала Android Studio, если ранее вы открыли приложение (для которого вы нашли пароль хранилища ключей) на том же компьютере. Обратитесь к следующему каталогу:

    Mac OSX

    ~/Library/Logs/AndroidStudio/idea.log.1

    Linux (возможное расположение)

    /дома/user_name/AndroidStudio/Система/Журнал

    Windows (возможное расположение)

    C:\Users\имя_пользователя\AndroidStudio\система\журнал

    и найдите Pandroid.injected.signing.key.password внутри файла. Вы увидите пароль, если вы ранее подписали приложение с той же версией Android Studio, в которой вы сейчас находитесь.

  • Вы также можете получить пароль через каталог .gradle вашего проекта. Найдите следующий путь

    project_directory/.gradle/2,4/taskArtifacts/taskArtifacts.bin.

    Примечание. Это не работает для более новых версий Gradle (2.10 и выше).

  • Если ни одно из вышеперечисленных решений не работает, вы можете попробовать это, но для этого вы также должны иметь приложение Android Studio IDE или параметры, в которых ранее сохранен пароль для хранилища ключей проекта (с помощью параметра "Запомнить пароль" во время подписания приложения). Вы можете получить настройки IDE по следующему пути:

    Mac OSX

    ~/Library/Logs/AndroidStudio/idea.log.1

    Linux (возможное расположение)

    /дома/user_name/AndroidStudio

    Windows (возможное расположение)

    C:\пользователь\имя пользователя \.AndroidStudio

    Просто используйте старшую среду разработки Android Studio, если у вас есть или импортируйте предпочтения старой среды IDE в новую среду IDE, а также поместите файл хранилища ключей таким же путем, где он был ранее, когда вы подписали его и сохранили пароль в прошлый раз.

    Таким образом, как только вы откроете проект и попробуйте Build- > Generate Signed APK и выберите файл хранилища ключей из более раннего местоположения. Он автоматически восстановит пароль и продолжит создание подписанного APK для выпуска.

    Как только APK выпуска будет успешно создан, вы можете выполнить описанную ранее опцию 2, чтобы проверить свой пароль из файла журнала для недавно созданного выпуска APK.

Ответ 14

Сначала загрузите AndroidKeystoreBrute_v1.05.jar, а затем следуйте приведенному изображению. введите описание изображения здесь

подготовьте один файл списка слов, например (wordlist.txt), в этом файле укажите свой подсказку как

Совет подсказок:

пользователей

Пользователи

Пароль

пароль

pa55word

Пароль

@

*

#

$

&

1

2

123

789

U получит ваш пароль.

Ответ 15

Добавив это как еще одну возможность. Ответ может быть прямо у вас под носом - в вашем файле build.gradle приложения, если вы когда-то указывали конфигурацию подписи в какой-то момент в прошлом:

signingConfigs {
    config {
        keyAlias 'My App'
        keyPassword 'password'
        storeFile file('/storefile/location')
        storePassword 'anotherpassword'
    }
}

Вы чувствуете себя счастливчиком?!

Ответ 16

У Заха Клиппенштейна в Google+ была такая же проблема, как и вы. Вы можете следить за потоком здесь.

Ответ 17

У меня была такая же проблема сразу. Несмотря на то, что с подписанием приложения в Google Play потеря хранилища ключей или его пароля не такая уж большая проблема, как раньше, тем не менее, как разработчик, мы предпочитаем сменить пароль и использовать сгенерированный файл хранилища ключей, не дожидаясь нескольких дней, пока Google справится с этим. (Для решения этой проблемы с Google используйте эту ссылку, чтобы сделать запрос) Чтобы решить эту проблему самостоятельно, сначала загрузите два файла .java по этой ссылке. Затем скомпилируйте ChangePassword.java с помощью команды javac ChangePassword.java. Тогда после того, как вы можете запустить

java ChangePassword <oldKeystoreFileName.keystore> <newKeystoreFileName.keystore>

Измените oldKeystoreFileName.keystore, указав путь/имя вашего текущего файла хранилища ключей, и newKeystoreFileName.keystore, указав путь/имя для нового сгенерированного нового файла хранилища ключей. Это поможет вам

Введите пароль хранилища ключей:

Просто введите то, что вы предпочитаете :) Не нужно быть потерянным оригинальным паролем. Затем введите новый пароль с помощью *

новый пароль хранилища ключей:

  • Вуаля, вот оно. Это не изменит контрольную сумму вашего хранилища ключей и не создаст проблем при подписывании приложения или загрузке в play.google события.

Ответ 18

Android грубой силы не будет работать, если ваши оба пароля отличаются друг от друга, поэтому лучший вариант может быть таким, чтобы попытаться найти файл с именем

log.idea

в вашем C:/users/ваша именованная учетная запись  то вы можете обнаружить, что там, в папке android, откройте этот файл lpg.idea в блокноте, а затем выполните поиск

псевдоним

используя параметр поиска в блокноте, вы обнаружите, что там были показаны пароли, псевдонимы и псевдонимы passwors.

Ответ 19

Подводя итог, есть 3 ответа на этот вопрос (и решение не дано принятым ответом):

  • Если у вас нет данных в журнале, вы можете найти пароль в файлах журнала Android Studio в соответствии с ответом Георги Коемджиева.

  • Вы можете получить пароль из файла taskArtifacts.bin в вашем каталоге .gradle в соответствии с ElDoRado1239 и Ответы Gueorgui Obregon выше. Это, похоже, не работает для более новых версий Gradle (2.10 и выше).

  • Используйте AndroidKeystoreBrute, чтобы угадать или набросать ваш пароль в соответствии с ответом Шриниваса Киртипракасама.

Все эти 3 решения подробно рассматриваются в этой ссылке.

Ответ 20

Я нашел пароль в

C:\Users\{Username}\.AndroidStudio2.2\system\log\idea.txt

Поиск

Pandroid.injected.signing.store.password

Ответ 21

Перейдите к taskhistory.bin в папке .gradle вашего поискового пароля. Прокрутите вниз, пока не найдете пароль.

Ответ 22

Откройте taskHistory.bin и найдите storePassword

Ответ 23

В моем случае я получил неправильное имя псевдонима, хотя я хранил правильный пароль. Поэтому я подумал, что это неправильный пароль (с использованием ионного пакета), поэтому я использовал эту команду, чтобы получить псевдоним

keytool -list -v -keystore

И я снова смог использовать хранилище ключей!

Ответ 24

C:\Users\Admin\AndroidStudioProjects\TrumpetTVChannel2.gradle\2.14.1\taskArtifacts\taskArtifacts.bin

Сначала попробуйте создать новое хранилище ключей... затем откройте taskArtifacts.bin с помощью блокнота и найдите пароль, который вы только что дали... вы сможете найти слова рядом с паролем, который вы только что дали, затем выполните поиск этих слова рядом с вашим паролем в том же файле.... вы сможете узнать пароль.....:)

Ответ 25

РЕШЕНИЕ 2018: Подпишите приложение с новым файлом хранилища ключей, если вам не хватает пароля или файла JKS.

1) Создайте новый файл keystore.jks с командной строкой (не в меню сборки Android Studio)

keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks

Пример Windows: "C:\Program Files\Android\Android Studio\jre\bin\keytool.exe" -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore "C:\keystore_new.jks"

2) Создайте файл .pem из нового хранилища ключей

keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

Пример Windows: "C:\Program Files\Android\Android Studio\jre\bin\keytool.exe" -export -rfc -alias upload -file "C:\upload_cert.pem" -keystore "C:\keystore_new.jks"

3) Используйте эту форму поддержки, установите "проблему с хранилищем ключей" и добавьте .pem файл с вложением: https://support.google.com/googleplay/android-developer/contact/otherbugs

4) 12-48 ч у вас новое хранилище ключей включено. Обновите ваше приложение в playstore с новым apk, подписанным с новым хранилищем ключей: D

Ответ 26

Если вы можете создать свое приложение с ПК, но вы не помните пароль, вот что вы можете сделать, чтобы восстановить пароль:

Метод 1:

В свой build.gradle добавьте println MYAPP_RELEASE_KEY_PASSWORD, как показано ниже:

signingConfigs {
    release {
        if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
            println MYAPP_RELEASE_KEY_PASSWORD
        }
    }
}

После этого запустите cd android && ./gradlew assembleRelease

Способ 2:

Запустите keytool -list -v -keystore your <.keystore file path>, например. keytool -list -v -keystore./app/my-app-key.keystore.

Вам будет предложено ввести пароль хранилища ключей: просто нажмите здесь клавишу ввода. и вы сможете найти сопоставленное имя псевдонима:

Затем запустите grep -rn "<your alias name>" . в своем терминале, и вы сможете увидеть свой файл signature.json, как показано ниже:

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

В файле будет ваш пароль в формате json с ключом "mKeyPassword": "& lt; ваш пароль>"

Ответ 27

Не нужно использовать грубую силу, простой способ - найти свой текстовый пароль.

Гото:

C:\Users\<your username>\AndroidStudioProjects\WhatsAppDP\.gradle\2.2.1\taskArtifacts

Открыть

taskArtifacts.bin 

при открытии taskArtifacts.bin может выглядеть зашифрованным, не беспокойтесь об этом поиске ".keyPassword" пару раз. Затем вы найдете свой пароль в виде обычного текста. Он может напоминать:

signingConfig.keyPassword¬í t <your password>Æù

Надеюсь, это было полезно.

Ответ 28

Ну, чтобы найти потерянный пароль кейстора, вы можете попробовать это. Для меня следующее решение работало довольно хорошо.

найти файлы журнала идей в ~/Library/Logs/AndroidStudio2.0. Вы также можете найти их, открыв Android Studio- > Help- > Show Log в Диспетчере файлов.

Откройте файл idea.log. Примечание. Может быть несколько файлов с именем idea.log.1, idea.log.2 и т.д. Просматривайте каждый из них, пока не найдете пароль.

Найдите "Pandroid.injected.signing.key.password", и вы увидите пароль ключа.

Надеюсь, что это поможет...

Ответ 29

У меня возникла такая же проблема, я попытался выполнить следующие шаги для решения проблемы: -

  • Создайте знак apk с созданием нового хранилища ключей и нового пароля.

  • Теперь создайте снова знак apk, используя свое старое хранилище ключей (хранилище ключей, используемое во время предыдущей загрузки сборки apk), но теперь используйте новый пароль хранилища ключей.

  • Теперь определенно вы успешно создадите знак apk, используя старое хранилище ключей.

    • Надеемся, что это решение поможет вам.

Ответ 30

В моем случае я модернизировал свою Android-студию с 2.3 до 3.0.1. Когда я пытаюсь создать подписанный apk для нового обновления, я получил "Ошибка в Keystore, или пароль был неправильным". У меня было мое предыдущее хранилище ключей, и я был абсолютно уверен в пароле, используя их, я пару раз обновлял приложение. После многого поиска ни один из решений не работал у меня. Вот что я сделал.

  • Открыл еще один проект.
  • Импортирован мой проект с использованием проекта File/New/Import
  • Как только gradle был создан, я попытался создать подписанный apk. Создать/сгенерировать подписанный APK
  • Нажмите "Выбрать существующий" и укажите путь к моему хранилищу ключей.
  • напечатано в моем ключевом хранилище ключей
  • выбрал псевдоним ключа
  • введите мой пароль (в моем случае оба пароля для хранения ключей и пароль ключа совпадают)
  • Щелкните по следующему и предоставленному пути для нового Apk и отметьте оба флажка.
  • Новый APK успешно сгенерирован.

Надеюсь, это поможет кому угодно.