Hay comandos de bajo nivel (er) que se pueden usar en un shell para cifrar su partición de datos de usuario. Descargo de responsabilidad / Advertencia: las siguientes instrucciones borrarán sus datos , asegúrese de hacer una copia de seguridad si es necesario.
Siguiendo estos pasos, debería poder borrar su partición de datos y cifrarla después (similar a un restablecimiento de fábrica):
- Arranca tu teléfono normalmente (la recuperación ya no funciona o me encontré con un problema diferente).
- Asegúrese de que el modo de depuración USB (adb) y el acceso raíz para ADB estén habilitados.
- Ingrese un shell de raíz con
adb root
seguido de adb shell
.
- Opcional: mire los registros invocando
adb logcat
en otro shell.
Ingrese este comando, escriba su contraseña y presione Entrar. Esto realmente establecerá su contraseña. Este comando lee una línea de entrada ( head -1
), elimina la nueva línea final de Enter ( tr -d '\n'
) y la convierte en una representación hexadecimal ( hexdump ...
). Si parece aterrador o si no está seguro de lo que hace este comando, consulte a continuación.
vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
- Si todo va bien, su dispositivo establecerá las claves y se reiniciará para completar el cifrado.
El vdc
comando anterior ("Volume Daemon Client") comunicado con vold
(Volume Daemon) tiene algunos subcomandos como cryptfs
encriptación. El enablecrypto
subcomando tiene dos modos: wipe
(borrar /data
completamente) y inplace
(supuestamente aplicando cifrado mientras copia el original /data
dentro del contenedor).
Luego, hay cuatro opciones disponibles a partir de Android 5.0, una de ellas es la password
que acepta una única secuencia hexadecimal como clave. Por lo tanto, si su contraseña es foo
, entonces la representación hexadecimal es 666f6f
( f
está 66
en hexadecimal, o
es 6f
, consulte http://www.asciitable.com/ ). El comando para esto es:
vdc cryptfs enablecrypto wipe password 666f6f
Esto se probó en un Nexus 5 (nombre en clave hammerhead, que ejecuta cm-12.1-20150814) que tiene una partición separada para almacenar metadatos. Es importante que la partición de datos de usuario tenga encryptable
configurado el indicador seguido de la ruta a una partición o la cadena especial footer
. Una línea (abreviada) de mi /fstab.hammerhead
archivo:
/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 ..., check, encryptable = /dev/block/platform/msm_sdcc.1/by-name/metadata
Cuando la cadena especial footer
( encryptable=footer
) está presente, se utilizan 16 KiB al final de la partición de datos para almacenar metadatos de cifrado.
Para leer más, ver:
Apéndice: extracto de logcat desde el momento en que ejecuté el comando de cifrado hasta que finaliza y se reinicia (omitiendo los mensajes gráficos no relacionados al final). Tenga en cuenta que este Nexus 5 tiene cripto acelerado por hardware (QSEECom).
--------- 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
Para mí, la respuesta original no funcionó como se esperaba. Parecía que se había cifrado correctamente, pero la IU volvió muy rápidamente y la configuración de "Cifrado" no mostró que los dispositivos estaban cifrados. Luego apliqué los comandos dados en la actualización , pero todavía no funcionó. Luego reduje el tamaño de la partición de datos y se cifró con éxito. Es decir
mount | grep data
para encontrar el dispositivo de bloque real de la partición de datos. Asumamos que es así/dev/block/mmcblk0p26
.umount /data
para que las herramientas ext funcionen.e2fsck -f -p /dev/block/mmcblk0p26
no tener problemas para el próximo cambio de tamaño.tune2fs -l /dev/block/mmcblk0p26
para obtener el conteo de bloque. Asumamos que es así3057395
.resize2fs /dev/block/mmcblk0p26 3057375
, es decir, restar una cantidad suficiente como 20 del recuento de bloques original.e2fsck -f -p /dev/block/mmcblk0p26
Encontré un inodo mal colocado para mí.También necesitaba montar la
/system
partición para poder obtenerlaresize2fs
. En mi sistema, ese binario estaba vinculado a una versión de 64 bits de libc, pero el TWRP que utilicé no parecía proporcionar eso. Entonces necesitaba prefijar los comandos conenv LD_LIBRARY_PATH=/system/lib64
.fuente
A partir de CM12.1 2015-10-15, la respuesta de Lekensteyn ya no funciona.
Aparentemente, el mkfs.f2fs que se necesita para crear el sistema de archivos, se ha movido de
/system/bin/
a/sbin/
También tenemos que lidiar con SELINUX. Esto significa que necesitamos hacer varios pasos adicionales:
fuente
Otra actualización: CM13 del 9 de enero de 2016 , con Nubia Z7 Max, teléfono NX505J
Este comando (
ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
) ya no es necesario ya que el archivo vive aquí nuevamente. No es necesario crear un enlace simbólico.Este comando ya no necesita estar en HEX y si ingresas hexadecimal, tu PW será hexadecimal.
cryptfs enablecrypto wipe password 666f6f
- Esto literalmente creó una contraseña para mí de666f6f
nofoo
Todavía estoy investigando este problema porque superé los bloques adicionales necesarios para los metadatos. Ahora necesito superar el hecho de que la GUI y los comandos manuales para cifrar ambos dan como resultado un cifrado que solo es viable a través de un ciclo de arranque. Informaré cuando tenga un cifrado exitoso.
En este momento cifro y funciona bien y arranco la primera vez y dice que el teléfono está cifrado. Usando TWRP puedo confirmar / los datos están encriptados pero las contraseñas HEX y ASCI que intento en TWRP no funcionan. En el próximo reinicio, el sistema operativo Android no puede iniciar CM13 por completo. Confirma que tengo la contraseña de cifrado correcta y luego solo obtengo 1 arranque cifrado. Después del primer inicio cifrado exitoso, se bloquea en la etapa de animación del ciclo de arranque a partir de entonces. Las mejores prácticas de seguridad ahora recomiendan el cifrado del teléfono AES256.
fuente
Al tener un Moto X 2013 con Cyanogenmod 12.1, tampoco pude cifrarlo. Finalmente, tuve éxito con estos pasos:
su
y confirme el acceso de rootsetenforce 0
Llegué a esta solución combinando la respuesta de Art y este hilo del foro .
fuente
Después de 6 horas de dolor mental y sudor, podría haber encontrado una solución que me funcionó. Y también fue un accidente. Lo hice para el Samsung S4 Mini con CyanogenMod 13.0 y Android 6.0.1. El factor clave importante aquí es que lo comencé desde un teléfono limpio (firmware nuevo y sin raíz), porque cuando el teléfono estaba rooteado previamente, entonces el teléfono no quería funcionar en absoluto.
Usé la solución del problema del Señor del Fuego y Lekensteyn, pero logré olvidar una línea de los comandos.
Así es como lo hice:
Encendí la depuración de Android y el acceso raíz a ADB solo en las Opciones de desarrollador .
En el símbolo del sistema ADB utilicé el comando
adb root
yadb shell
. Después de eso abrí otro símbolo del sistema ADB y usé eladb logcat
comando.En el primer shell ADB, seguí adelante
setenforce 0
y después de esovdc cryptfs enablecrypto wipe password YOUR-PASSWORD
.AVISO IMPORTANTE: El comando de contraseña puede variar de la versión de Android que está utilizando. Si está utilizando Android 5.X , debe usar el sistema hexadecimal (en la línea Chr está el símbolo en su contraseña, el valor hexadecimal está en la línea Hx). Si está utilizando Android 6.X , entonces SU CONTRASEÑA será la contraseña que ingresó allí.
Como notan, olvidé usar el
mount -oremount,rw /system
comando. Después de eso, la pantalla se volverá negra. Cuando vi que el shell ADB con el registro se detuvo y terminó, reinicié el teléfono. Pero en cuanto a todos, el problema es que CyanogenMod no se cargará. Y logré arreglarlo con bastante facilidad:Ahí tienes, debería funcionar. Al principio, cuando aparece la configuración del teléfono, luego déjalo por un minuto. Puede haber un pequeño bloqueo para el Asistente de configuración si lo apresura demasiado rápido, pero se reiniciará automáticamente cuando se bloquee.
En mi muy pequeño conocimiento de cómo funcionan CyanogenMod y Android Encryption, creo que durante el formato elimina algunos archivos importantes de Cyanogen o Android, lo que impide que se inicie.
fuente
El cifrado no funcionó en mi teléfono (SGS5; CM13, TWRP 3.0.2-2): siempre tengo una pantalla negra.
No quería usar comandos de shell, así que encontré otra forma:
Tenía instalado SuperSU, lo desinstalé en la aplicación y luego actualicé el SU-Remover .
Después de eso, pude usar el cifrado desde el menú.
Advertencia:
fuente