Verwenden von ADB zum Ändern der Bildschirmsperre

Ich suche nach einer Möglichkeit, den Bildschirmsperrtyp von Folie auf Passwort zu ändern und das Passwort über die ADB-Befehlszeile festzulegen. Ich habe ein Gerät mit der gewünschten Einrichtung und eines mit Schiebesperre. Ich bin mir ziemlich sicher, dass dies über sqlite3 "Kopieren und Einfügen" einiger Felder erreicht werden kann, bin mir aber nicht sicher, welche Felder und wie es geht. Ich bin offen für so ziemlich alle Ideen, außer der Verwendung von adb shell inputBefehlen, um dies zu erreichen. Bedeutung - Ich kann / weiß, wie / verwende derzeit input swipe input text input tapBefehle, um die Swipe-Entsperrung in die Kennwortentsperrung zu ändern.

edit1: geklärt adb shell input, und ja, mein Telefon ist gerootet.

edit2: relevante Links:
So ändern Sie den Sperrbildschirmtyp
Pass-Verschlüsselung auf Android

Laut dem Beitrag im ersten Link sollte es einfach sein, den Sperrbildschirmtyp zu ändern. Das einzige Problem ist, dass ich das Feld lockscreen.password_type nicht in der Datenbank finden kann sie beziehen sich auf. Hat es sich in 4.3 verschoben? Nachdem ich den Artikel im zweiten Link gelesen hatte, kam mir die Idee, die in der Datenbank gespeicherte Salt-Nummer zu verwenden, um ein neues Passwort mit dem gerätespezifischen Salt zu ermitteln und das vorhandene (falls vorhanden) Passwort zu überschreiben. Ich versuche immer noch herauszufinden, wie das geht.

Bist du verwurzelt?
außer der Verwendung von adb shell inputBefehlen, und ja, mein Gerät ist gerootet

Antworten (2)

Seit Android 8.0 Oreo können Sie den Sperrbildschirm mit den folgenden adb-Befehlen ändern

adb shell

athene_f:/ $ locksettings
usage: locksettings set-pattern [--old OLD_CREDENTIAL] NEW_PATTERN

   locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN
   locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD
   locksettings clear [--old OLD_CREDENTIAL]
   locksettings verify [--old OLD_CREDENTIAL]
   locksettings set-disabled DISABLED
   locksettings get-disabled

flags:
   --user USER_ID: specify the user, default value is current user
  1. locksettings set-pin: setzt eine PIN
  2. locksettings set-password: setzt ein Passwort
  3. locksettings clear: löscht die Anmeldeinformationen zum Entsperren
  4. locksettings verify: überprüft die Anmeldeinformationen und entsperrt den Benutzer
  5. locksettings set-disabled: Legt fest, ob der Sperrbildschirm deaktiviert werden soll
  6. locksettings get-disabled: Ruft ab, ob der Sperrbildschirm deaktiviert ist

Und wenn Sie das Passwort entfernen möchten, verwenden Sie einfach den folgenden Code:

$ locksettings clear --old old_password_put_here

Hier ist der Referenzlink: The Android Soul – How to change or remove lock screen pattern, PIN or password via ADB on Android 8.0 Oreo

Ich habe auf einem Android Oreo-Gerät getestet. Es funktioniert gut.

Antwort erhalten als Request Throttled. Was bedeutet das?

Es gibt keine integrierte Funktion zum Festlegen des Kennworts über die Befehlszeile, weder von einer Shell auf dem Gerät noch von adb. Sie können dies nicht einmal erreichen, indem Sie das gespeicherte Passwort von einem anderen Gerät in die sichere Einstellungsdatei einfügen. Das Passwort wird nicht als Klartext gespeichert, sondern es wird ein kryptografischer Hash des Passworts gespeichert. Dieser Hash wird aus dem Passwort und einem Salt -Wert generiert: eine Zufallszahl, die einmalig auf dem Gerät generiert wird.

Das Hashen des Passworts verhindert, dass jemand Ihr Telefon stiehlt und das Passwort findet. Dies ist nicht nur wichtig, um das Passwort selbst zu schützen (falls Sie dasselbe Passwort für andere Dinge verwenden), sondern auch, weil das Passwort zum Verschlüsseln des Schlüsselspeichers des Geräts und als Teil der Funktion zur vollständigen Geräteverschlüsselung verwendet wird. Durch das Salten des Passworts mit einem gerätespezifischen Salt wird sichergestellt, dass ein Angreifer keine Regenbogentabelle verwenden kann , um das Passwort zu ermitteln. (Eine Regenbogentabelle ist eine Liste aller möglichen gehashten Passwörter, die abgefragt werden, um das ursprüngliche Passwort bei gegebenem gehashten Passwort zu finden. Die Technik ermöglicht es, naive Passwortimplementierungen wie die von Windows 95 in weniger als einer Sekunde mit einem normalen Desktop-Computer zu knacken. )

Darüber hinaus hat der Code, der das gespeicherte Passwort aktualisiert, wenn Sie es über die GUI ändern, andere Nebeneffekte. Wie ich bereits erwähnt habe, wird das Passwort verwendet, um den Schlüsselspeicher des Geräts zu verschlüsseln, der von allen Apps auf dem Gerät verwendet werden kann, um Anmeldeinformationen sicher zu speichern. Das Ändern des gespeicherten Kennworts ohne Aktualisierung des Schlüsselspeichers würde dazu führen, dass die gespeicherten Anmeldeinformationen verloren gehen. Wenn eine vollständige Geräteverschlüsselung verwendet wird, würde das Ändern des gespeicherten Kennworts ohne Aktualisierung des Geräteverschlüsselungsschlüssels außerdem dazu führen, dass der gesamte Speicher unzugänglich wird.

Um die gewünschte Funktionalität zu erreichen, wäre es am einfachsten, ein benutzerdefiniertes ROM zu patchen, um die Funktionalität zu exportieren, die die Einstellungs-App zum Ändern des Passworts verwendet, und ein Befehlszeilenprogramm hinzuzufügen, das das Passwort auf die gleiche Weise ändern kann. Es könnte sogar möglich sein, eine App zu hacken, die dies mithilfe von Reflektion tun kann, um Zugriff auf die nicht exportierten Funktionen zu erhalten, aber die App würde immer noch root benötigen und wäre spezifisch für das ROM (und vielleicht sogar die Version der ROM) auf dem Gerät.

Der entsprechende Code ist hier, wenn Sie interessiert sind.

Nun, die Sache ist, dass ich diesen Artikel gelesen habe: [ forensics.spreitzenbarth.de/2012/02/28/… und er sagt Ihnen im Wesentlichen, wie Sie ein Passwort mit der Datei password.key (das ist das verschlüsselte Passwort?) Aufbrechen und settings.db (speichert das Salz?), um das Passwort irgendwie mit Brute-Force-Angriffen anzugreifen (ich weiß nicht genug über Verschlüsselung, um diesen Artikel vollständig zu verstehen). Basierend auf diesem Artikel kam ich dann auf die Idee, möglicherweise das gerätespezifische Salt zu verwenden, um einen neuen Pass zu verschlüsseln und password.key zu überschreiben. Fehlerhafte Logik oder möglich?