Wie gehe ich mit einem verlorenen KeyStore-Passwort in Android um?


Answers

Ich bin gerade auf dieses Problem gestoßen - glücklicherweise konnte ich das Passwort in einer temporären Datei von Gradle finden. Für den Fall, dass jemand hier landet, suchen Sie nach

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

Es war dort im Klartext. Wenn Sie sich zumindest einen Teil Ihres Passworts merken, versuchen Sie im Allgemeinen nach einer Datei zu suchen, die diesen Teilstring enthält, und hoffentlich werden Sie etwas herausfischen.

Wollte es hier rauswerfen, vielleicht wird es jemandem irgendwann helfen.

Question

Ich habe mein Keystore-Passwort vergessen und weiß nicht mehr, was ich tun soll (ich kann oder will keine Entschuldigung dafür geben). Ich möchte meine App aktualisieren, weil ich gerade einen Fehler behoben habe, aber es ist nicht mehr möglich. Was passiert, wenn ich denselben Keystore verwende, aber einen neuen Schlüssel erstelle? Kann ich die App weiterhin aktualisieren, und wenn es nicht möglich ist, wie kann ich Informationen über die aktualisierte Version an die Benutzer weitergeben?

Wenn jemand ein solches Problem hatte oder auf Schwierigkeiten gestoßen ist, welchen Ratschlag können Sie dann geben, um Abhilfe zu schaffen? Zum Glück ist es eine kostenlose App.




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

Versuchen Sie zuerst, einen neuen Keystore zu erstellen .... öffnen Sie dann taskArtifacts.bin mit Notepad und suchen Sie nach dem Passwort, das Sie gerade gegeben haben .... Sie werden in der Lage sein, Wörter in der Nähe des Passworts herauszufinden, die Sie gerade gegeben haben Ihr Passwort in der gleichen Datei .... Sie werden in der Lage sein, das Passwort herauszufinden ..... :)




Das keystore password verlieren ist kein Problem.
Sie können einen neuen Keystore erstellen und ein neues Passwort dafür mit dem folgenden keytool-Befehl festlegen. Sie benötigen kein originelles Keystore-Passwort dafür:

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

Wenn Sie dazu aufgefordert werden, erstellen Sie ein Passwort für Ihren new.keystore und für das Quell-Keystore-Passwort (das Sie verloren haben) new.keystore Sie einfach die Eingabetaste .
Sie werden gewarnt, dass die Integrität nicht überprüft wurde, und Sie erhalten Ihren neuen.keystore mit dem neu festgelegten Passwort identisch mit dem Original.

Der Grund, warum dies funktioniert, ist keystore password wird nur verwendet, um die Integrität des private key password zu gewährleisten, es verschlüsselt nicht Daten mit ihm, im Gegensatz zu private key password , die tatsächlich Ihren privaten Schlüssel verschlüsselt hält.

Bitte beachten Sie, dass Sie Ihr private key password für den private key password kennen müssen, um Ihre Apps zu signieren. Nun, wenn es dasselbe wie vergessenes keystore password dann kannst du wie in Artur's Antwort auf Bruteforce zurückgreifen.

Dieser Ansatz hat immer für mich funktioniert.




Android brute force funktioniert nicht, wenn Ihre beiden Passwörter unterschiedlich sind, so dass die beste Option sein könnte, die Datei mit dem Namen as zu finden

log.idea

in deinem C: / users / deinem named account findest du dann, dass dort im android ordner diese datei lpg.idea im notepad öffnet und danach sucht

alias

Wenn Sie die Option "Suchen" im Editor verwenden, werden Sie feststellen, dass dort das Passwort und der Alias ​​und Passwortsalias angezeigt wurden




Nachdem Sie fast einen Tag damit verbracht haben, die möglichen Optionen zum Wiederherstellen des verlorenen Keystore-Kennworts in Android Studio zu untersuchen. Ich habe die folgenden 4 Möglichkeiten gefunden, dies zu tun:

  1. Verwenden Sie AndroidKeystoreBrute , um Ihr Passwort abzurufen. Diese Methode ist sehr nützlich, wenn Sie Ihr Passwort teilweise vergessen haben, was bedeutet, dass Sie immer noch ein paar Hinweise auf Ihr Passwort haben.

  2. Sie können sie auch über Android Studio-Protokolldateien abrufen, wenn Sie die App (für die Sie das Schlüsselspeicherkennwort finden) zuvor auf demselben Computer veröffentlicht haben. Siehe das folgende Verzeichnis:

    Mac OS X

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

    Linux (Möglicher Ort)

    / home / benutzername / AndroidStudio / system / log

    Windows (Möglicher Ort)

    C: \ Benutzer \ Benutzername \ AndroidStudio \ System \ log

    und suchen Sie nach Pandroid.injected.signing.key.password in der Datei. Sie sehen das Passwort, wenn Sie die App bereits mit derselben Android Studio-Version signiert haben, in der Sie gerade suchen.

  3. Sie können das Kennwort auch über das Hauptverzeichnis Ihres Projekts abrufen. Suchen Sie nach dem folgenden Pfad

    Projektverzeichnis / .gradle / 2.4 / taskArtifacts / taskArtifacts.bin.

    Hinweis: Dies scheint bei neueren Versionen von Gradle (2.10 und höher) nicht zu funktionieren.

  4. Wenn keine der oben genannten Lösungen funktioniert, können Sie diese ausprobieren, aber Sie müssen auch über die Android Studio IDE-App oder die Einstellungen verfügen, in denen Ihr Projekt-Keystore-Passwort zuvor gespeichert wurde (Verwenden Sie die Option Passwort merken zum Zeitpunkt des Signierens) App). Sie können die IDE-Einstellungen vom folgenden Pfad abrufen:

    Mac OS X

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

    Linux (Möglicher Ort)

    / home / benutzername / AndroidStudio

    Windows (Möglicher Ort)

    c: \ Benutzer \ Benutzername \ .AndroidStudio

    Verwenden Sie einfach die ältere Android Studio-IDE, wenn Sie die Einstellungen der alten IDE in die neue IDE importieren oder importieren, und legen Sie die Keystore-Datei im selben Pfad wie zuvor beim Signieren an und speichern Sie das Passwort beim letzten Mal.

    Auf diese Weise öffnen Sie nach dem Öffnen des Projekts das Build-> Generated Signed APK und wählen die Keystore-Datei vom älteren Speicherort aus. Es wird automatisch das Passwort abrufen und weiterhin das signierte APK zur Veröffentlichung generieren.

    Sobald das Release-APK erfolgreich erstellt wurde, können Sie die zuvor erwähnte Option 2 verwenden, um Ihr Passwort in Ihrer Log-Datei für das kürzlich generierte Release-APK zu überprüfen.




In meinem Fall hatte ich mein Android Studio von 2.3 auf 3.0.1 aktualisiert, als ich versuchte, eine signierte Apk für ein neues Update zu generieren, bekam ich "Keystore wurde manipuliert, oder das Passwort war falsch" -Fehler. Ich hatte meinen vorherigen Keystore und ich war mir absolut sicher, dass ich das Passwort verwenden musste. Ich hatte die App vor einiger Zeit aktualisiert. Nach langem Suchen funktionierte keine Lösung für mich. Hier ist was ich getan habe.

  • Eröffnet ein anderes Projekt.
  • Importierte mein Projekt mit Datei / Neu / Projekt importieren
  • Sobald Gradle erstellt wurde, versuchte ich eine signierte Apk zu generieren. Erstellen / Generieren signierte APK
  • Klicken Sie auf "Choose Existing" und den Pfad zu meinem Keystore.
  • hat mein Schlüsselspeicher-Passwort eingegeben
  • hat den Schlüsselalias ausgewählt
  • habe mein Schlüsselpasswort eingegeben (In meinem Fall sind sowohl das Schlüsselspeicherpasswort als auch das Schlüsselpasswort identisch)
  • Als nächstes klickten und Pfad für den neuen Apk und beide Kontrollkästchen aktiviert.
  • Neues APK wurde erfolgreich generiert.

Hoffe das hilft jedem.




Zusammenfassend gibt es 3 Antworten auf diese Frage (und die Lösung ist nicht durch die angenommene Antwort gegeben):

  1. Wenn Sie Ihre Logs intakt haben, können Sie das Passwort in den Logdateien von Android Studio nach Georgi Koemdzhievs Antwort finden.

  2. Sie können das Passwort aus der Datei 'taskArtifacts.bin' in Ihrem .digle-Verzeichnis nach den obigen Antworten von ElDoRado1239 und Gueorgui Obregon abrufen . Dies scheint bei neueren Versionen von Gradle (2.10 und höher) nicht zu funktionieren.

  3. Verwenden Sie AndroidKeystoreBrute, um Ihr Passwort gemäß der obigen Antwort von Srinivas Keerthiprakasam zu erraten oder zu erzwingen .

All diese 3 Lösungen werden unter diesem Link ausführlich behandelt.




Nun, um nach verlorenem Keystore-Passwort zu suchen, können Sie das versuchen. Für mich funktionierte die folgende Lösung ziemlich gut.

Finden Sie die Idee Protokolldateien in ~/Library/Logs/AndroidStudio2.0 . Sie können diese auch finden, indem Sie in Studio Manager-> Hilfe-> Protokoll im Dateimanager anzeigen öffnen.

Öffnen Sie die Datei idea.log . Hinweis: Es kann mehrere Dateien mit dem Namen idea.log.1 , idea.log.2 usw. geben. Schauen Sie sich die einzelnen Dateien durch, bis Sie das Passwort gefunden haben.

Suchen Sie nach “Pandroid.injected.signing.key.password” und Sie können das Schlüsselpasswort sehen.

Ich hoffe es hilft...




Für alle anderen, die darüber hinwegkommen könnten, wollte ich eine Antwort teilen, die für Sie oder für andere, die diesen Artikel durchblättern (wie ich), sein könnte.

Ich benutze Eclipse und habe meinen Keystore für meine Version 1.0 erstellt. Vorspulen 3 Monate und ich wollte es auf 1.1 aktualisieren. Als ich in Eclipse "Exportieren" wählte und diesen Schlüsselspeicher auswählte, funktionierte keines meiner Kennwörter, an die ich mich erinnern konnte. Jedes Mal, wenn "Keystore manipuliert oder Passwort falsch" angezeigt wird. Es kam zu einem Punkt, an dem ich mich darauf vorbereitete, ein Brute-Force-Programm so lange zu machen, wie ich (eine Woche oder so) stehen konnte, um es zur Arbeit zu bringen.

Glücklicherweise signiere ich meine nicht signierte .apk-Datei außerhalb von Eclipse. Voila - es hat funktioniert! Mein Passwort war die ganze Zeit korrekt! Ich bin mir nicht sicher, warum, aber das Signieren in Eclipse über das Export-Menü meldete einen Fehler, selbst wenn mein Passwort korrekt war.

Also, wenn Sie diesen Fehler bekommen, hier sind meine Schritte (aus der Android-Dokumentation ), um Ihnen zu helfen, Ihre apk für den Markt bereit zu machen.

HINWEIS: So erhalten Sie unsignierte APK aus Eclipse: Klicken Sie mit der rechten Maustaste auf Projekt> Android-Tools> Nicht signierte Anwendung exportieren

  1. Melden Sie unsignierte APK-Dateien mit Keystore an

    ein. Öffne die Administrator-cmd-Eingabeaufforderung und gehe zu "c: \ Programme \ Java \ jdk1.6.0_25 \ bin" oder einer anderen Java-Version (wo du die unsignierte apk-Datei und deinen Keystore kopiert hast)

    b. Geben Sie an der Eingabeaufforderung cmd mit der Keystore-Datei und der nicht signierten apk-Datei im selben Verzeichnis den folgenden Befehl ein: jarsigner -keystore mykeystorename.keystore -verbose unsigned.apk myaliasnamefromkeystore

    c. es wird sagen: "Geben Sie Passphrase für Keystore:". Geben Sie es ein und drücken Sie die Eingabetaste.

    d. ===> Erfolg sieht so aus:

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

    e. Die unsignierte Version wird an der richtigen Stelle überschrieben. Ihre unterzeichnete apk-Datei hat jetzt denselben Dateinamen wie die unsignierte

  2. Verwenden Sie ZipAlign, um die signierte APK-Datei für die Verteilung auf dem Markt zu komprimieren

    ein. Öffnen Sie die Admin-Eingabeaufforderung und wechseln Sie zu "c: \ AndroidSDK \ tools" oder wo auch immer Sie das Android SDK installiert haben

    b. Geben Sie folgenden Befehl ein: zipalign -v 4 signed.apk signalignedigned.apk

    c. ===> Erfolg sieht so aus:

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

    d. Die signierte und ausgerichtete Datei ist signiertaligned.apk (der Dateiname, den Sie im vorherigen Befehl angegeben haben)

========> BEREIT ZUM MARKETPLACE SENDEN




Endlich fand ich die Lösung nach zwei Tagen ...

Folge diesen Schritten:

  1. Gehe zum Projekt
  2. In.gradle finden Sie Ihren Gradel Version Ordner in meinem Fall war es 4.1 (Siehe Bild)
  3. Erweitern Sie den 4.1-Ordner und dann im taskHistory-Ordner finden Sie taskHistory.bin-Datei.
  4. Öffnen Sie die Datei taskHistory.bin im Android Studio selbst.
  5. Suchen Sie nach ".storePassword". Das ist es, Sie haben Ihr Keystore-Passwort.

Das hat mir wirklich gut getan.

Probieren Sie dies und eine gute Kodierung !!!




Zach Klippenstein auf Google+ hatte das gleiche Problem wie Sie. Sie können dem Thread hier folgen.