Es gibt Befehle auf niedriger (er) Ebene, die in einer Shell zum Verschlüsseln Ihrer Benutzerdatenpartition verwendet werden können. Haftungsausschluss / Warnung: Die folgenden Anweisungen löschen Ihre Daten. Stellen Sie sicher, dass Sie bei Bedarf ein Backup erstellen .
Wenn Sie die folgenden Schritte ausführen, sollten Sie in der Lage sein, Ihre Datenpartition zu löschen und anschließend verschlüsseln zu lassen (ähnlich wie beim Zurücksetzen auf die Werkseinstellungen):
- Starten Sie Ihr Telefon normal (entweder funktioniert die Wiederherstellung nicht mehr oder ich bin auf ein anderes Problem gestoßen).
- Stellen Sie sicher, dass der USB-Debugging-Modus (adb) und der Root-Zugriff für ADB aktiviert sind.
- Geben Sie eine Root-Shell mit
adb root
gefolgt von ein adb shell
.
- Optional: Überwachen Sie Protokolle, indem Sie sie
adb logcat
in einer anderen Shell aufrufen .
Geben Sie diesen Befehl ein, geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste. Dadurch wird Ihr Passwort festgelegt. Dieser Befehl liest eine Zeile von input ( head -1
), entfernt die nachfolgende neue Zeile von Enter ( tr -d '\n'
) und konvertiert sie in eine hexadezimale Darstellung ( hexdump ...
). Wenn es beängstigend aussieht oder Sie nicht sicher sind, was dieser Befehl bewirkt, siehe unten.
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
- Wenn alles in Ordnung ist, setzt Ihr Gerät die Schlüssel und startet neu, um die Verschlüsselung abzuschließen.
Der obige vdc
Befehl ("Volume Daemon Client"), mit dem vold
(Volume Daemon) kommuniziert wird, enthält einige Unterbefehle wie cryptfs
für die Verschlüsselung. Der enablecrypto
Unterbefehl verfügt über zwei Modi: wipe
( /data
vollständig löschen ) und inplace
(angeblich Verschlüsselung anwenden, während Sie Ihr Original /data
in den Container kopieren ).
Ab Android 5.0 stehen dann vier Optionen zur Verfügung, von password
denen eine eine einzelne hexadezimale Sequenz als Schlüssel akzeptiert. Wenn also Ihr Passwort ist foo
, dann ist die hexadezimale Darstellung ist 666f6f
( f
ist 66
in hex, o
ist 6f
, siehe http://www.asciitable.com/ ). Der Befehl hierfür lautet:
vdc cryptfs enablecrypto wipe password 666f6f
Dies wurde auf einem Nexus 5 (Codename Hammerhead, cm-12.1-20150814) getestet, der über eine separate Partition zum Speichern von Metadaten verfügt. Es ist wichtig, dass für die Benutzerdatenpartition das encryptable
Flag gesetzt ist, gefolgt vom Pfad zu einer Partition oder der speziellen Zeichenfolge footer
. Eine (abgekürzte) Zeile aus meiner /fstab.hammerhead
Datei:
/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., check, encryptable = /dev/block/platform/msm_sdcc.1/by-name/metadata
Wenn die spezielle Zeichenfolge footer
( encryptable=footer
) vorhanden ist, werden 16 KB am Ende der Datenpartition zum Speichern von Verschlüsselungsmetadaten verwendet.
Weitere Informationen finden Sie unter:
Anhang: Logcat-Auszug von dem Moment an, in dem ich den Verschlüsselungsbefehl ausgeführt habe, bis er abgeschlossen ist und neu gestartet wird (wobei am Ende nicht verwandte Grafiknachrichten weggelassen werden). Beachten Sie, dass dieses Nexus 5 über hardwarebeschleunigte Krypto (QSEECom) verfügt.
--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager( 184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs ( 186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs ( 186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager( 184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs ( 186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs ( 186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:18.058 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs ( 186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs ( 186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:18.797 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs ( 186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: ( 186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: ( 186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs ( 186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: ( 186): QSEECom_dealloc_memory
08-16 12:57:20.796 D/QSEECOMAPI: ( 186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs ( 186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs ( 186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs ( 186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs ( 186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs( 186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs( 186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs( 186): Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs( 186): Block size: 4096
08-16 12:57:21.448 I/make_ext4fs( 186): Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs( 186): Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs( 186): Inode size: 256
08-16 12:57:21.448 I/make_ext4fs( 186): Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs( 186): Label:
08-16 12:57:21.449 I/make_ext4fs( 186): Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs( 186): Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs( 186): Block groups: 103
08-16 12:57:21.459 I/make_ext4fs( 186): Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs( 186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs( 186): Total files: 0
08-16 12:57:21.465 I/make_ext4fs( 186): Total bytes: 0
08-16 12:57:42.926 D/Cryptfs ( 186): Successfully created filesystem on /dev/block/dm-0
Für mich hat die ursprüngliche Antwort nicht wie erwartet funktioniert. Es sah so aus, als ob es erfolgreich verschlüsselt wurde, aber die Benutzeroberfläche kam sehr schnell zurück und die Einstellung "Verschlüsselung" zeigte nicht an, dass die Geräte verschlüsselt waren. Ich habe dann die im Update angegebenen Befehle angewendet , aber es hat immer noch nicht funktioniert. Ich habe dann die Größe der Datenpartition reduziert und sie erfolgreich verschlüsselt. Dh
mount | grep data
um das eigentliche Blockgerät der Datenpartition zu finden. Nehmen wir an, es ist so/dev/block/mmcblk0p26
.umount /data
damit die ext-tools funktionieren.e2fsck -f -p /dev/block/mmcblk0p26
um keine Probleme mit der bevorstehenden Größenänderung zu bekommen.tune2fs -l /dev/block/mmcblk0p26
um die Blockanzahl zu erhalten. Nehmen wir an, es ist so3057395
.resize2fs /dev/block/mmcblk0p26 3057375
dh subtrahieren Sie eine ausreichende Menge wie 20 von der ursprünglichen Blockanzahl.e2fsck -f -p /dev/block/mmcblk0p26
habe eine falsch platzierte Inode für mich gefunden.Ich musste auch die
/system
Partition mounten, um sie zu erreichenresize2fs
. Auf meinem System war diese Binärdatei mit einer 64-Bit-Version von libc verknüpft, aber das von mir verwendete TWRP schien dies nicht zu bieten. Also musste ich den Befehlen ein Präfix voranstellenenv LD_LIBRARY_PATH=/system/lib64
.quelle
Ab CM12.1 2015-10-15 funktioniert die Antwort von Lekensteyn nicht mehr.
Anscheinend wurde die mkfs.f2fs, die zum Erstellen des Dateisystems benötigt wird, von
/system/bin/
nach verschoben/sbin/
Auch müssen wir uns mit SELINUX herumschlagen. Dies bedeutet, dass wir mehrere zusätzliche Schritte ausführen müssen:
quelle
Ein weiteres Update - CM13 9. Januar 2016 Build mit Nubia Z7 Max, NX505J Telefon
Dieser Befehl (
ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
) wird nicht mehr benötigt, da die Datei wieder hier lebt. Es ist nicht erforderlich, eine symbolische Verknüpfung zu erstellen.Dieser Befehl muss nicht mehr in HEX sein und wenn Sie hex eingeben, ist Ihr PW hex.
cryptfs enablecrypto wipe password 666f6f
- Dies hat buchstäblich ein Passwort für mich von666f6f
nicht erstelltfoo
Ich recherchiere immer noch an diesem Problem, weil ich die zusätzlichen Blöcke überwunden habe, die für die Metadaten benötigt werden. Ich muss jetzt die Tatsache überwinden, dass die GUI und die manuellen Befehle zum Verschlüsseln beide zu einer Verschlüsselung führen, die nur durch einen Startzyklus möglich ist. Ich melde mich zurück, wenn ich eine erfolgreiche Verschlüsselung habe.
Im Moment verschlüssele ich und es funktioniert gut und ich starte das erste Mal und es heißt, das Telefon ist verschlüsselt. Mit TWRP kann ich bestätigen, dass / Daten verschlüsselt sind, aber die HEX- und ASCI-Passwörter, die ich in TWRP versuche, funktionieren beide nicht. Beim nächsten Neustart kann das Android-Betriebssystem CM13 nicht vollständig starten. Es bestätigt, dass ich das richtige Verschlüsselungskennwort habe und dann nur 1 verschlüsselten Start bekomme. Nach dem ersten erfolgreichen verschlüsselten Start wird die Animationsphase des anschließenden Startzyklus gesperrt. Best Practices für die Sicherheit empfehlen jetzt die AES256-Telefonverschlüsselung.
quelle
Mit einem Moto X 2013 mit Cyanogenmod 12.1 konnte ich es auch nicht verschlüsseln. Schließlich gelang es mir mit diesen Schritten:
su
und bestätigen Sie den Root-Zugriffsetenforce 0
Ich bin zu dieser Lösung gekommen, indem ich die Antwort von Art und diesen Forenthread kombiniert habe .
quelle
Nach 6 Stunden psychischen Schmerzes und Schweißes bin ich vielleicht auf eine Lösung gestoßen, die für mich funktioniert hat. Und es war auch ein Unfall. Ich habe dies für das Samsung S4 Mini mit CyanogenMod 13.0 und Android 6.0.1 getan. Ein wichtiger Schlüsselfaktor hierbei ist, dass ich es von einem sauberen Telefon aus gestartet habe (frische Firmware und nicht gerootet), denn als das Telefon zuvor gerootet war, wollte das Telefon überhaupt nicht funktionieren.
Ich habe die Lösung von Firelord und Lekensteyn für das Problem verwendet, aber es ist mir gelungen, eine Zeile aus den Befehlen zu vergessen.
So habe ich es gemacht:
Ich habe das Android-Debugging und den Root-Zugriff auf ADB nur in den Entwickleroptionen aktiviert .
In der ADB-Eingabeaufforderung habe ich den Befehl
adb root
und verwendetadb shell
. Danach öffnete ich eine weitere ADB-Eingabeaufforderung und verwendete denadb logcat
Befehl.In der ersten ADB-Shell ging ich mit
setenforce 0
und danach weitervdc cryptfs enablecrypto wipe password YOUR-PASSWORD
.WICHTIGER HINWEIS: Der Befehl password kann von der von Ihnen verwendeten Android-Version abweichen. Wenn Sie Android 5.X verwenden , müssen Sie das Hexadezimalsystem verwenden (In der Chr-Zeile befindet sich das Symbol in Ihrem Passwort, der Hexadezimalwert befindet sich in der Hx-Zeile). Wenn Sie Android 6.X verwenden , ist das IHR-PASSWORT das Passwort, das Sie dort eingegeben haben.
Wie Sie dann bemerken, habe ich vergessen, den
mount -oremount,rw /system
Befehl zu verwenden. Danach wird der Bildschirm schwarz. Als ich sah, dass die ADB-Shell mit dem Protokoll gestoppt und beendet wurde, startete ich das Telefon neu. Das Problem ist jedoch, dass CyanogenMod nicht geladen wird. Und ich habe es ganz einfach geschafft:Los geht's, es sollte funktionieren. Wenn das Telefon eingerichtet ist, lassen Sie es zunächst eine Minute lang laufen. Es kann zu einem kleinen Absturz des Setup-Assistenten kommen, wenn Sie ihn zu schnell beschleunigen. Er wird jedoch automatisch neu gestartet, wenn er abstürzt.
In meinem sehr kleinen Wissen darüber, wie das CyanogenMod und die Android-Verschlüsselung funktionieren, denke ich, dass während des Formats einige wichtige Cyanogen- oder Android-Dateien gelöscht werden, was das Booten verhindert.
quelle
Die Verschlüsselung funktionierte auf meinem Telefon nicht (SGS5; CM13, TWRP 3.0.2-2) - ich habe immer einen schwarzen Bildschirm.
Ich wollte keine Shell-Befehle verwenden, also habe ich einen anderen Weg gefunden:
Ich hatte SuperSU installiert, ich habe es in der App deinstalliert und dann den SU-Remover geflasht .
Danach konnte ich die Verschlüsselung aus dem Menü verwenden.
Warnung:
quelle