¿Cómo encriptas tu dispositivo con CyanogenMod 12.1?

Respuestas:

6

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):

  1. Arranca tu teléfono normalmente (la recuperación ya no funciona o me encontré con un problema diferente).
  2. Asegúrese de que el modo de depuración USB (adb) y el acceso raíz para ADB estén habilitados.
  3. Ingrese un shell de raíz con adb rootseguido de adb shell.
  4. Opcional: mire los registros invocando adb logcaten otro shell.
  5. 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"')
    
  6. Si todo va bien, su dispositivo establecerá las claves y se reiniciará para completar el cifrado.

El vdccomando anterior ("Volume Daemon Client") comunicado con vold(Volume Daemon) tiene algunos subcomandos como cryptfsencriptación. El enablecryptosubcomando tiene dos modos: wipe(borrar /datacompletamente) y inplace(supuestamente aplicando cifrado mientras copia el original /datadentro del contenedor).

Luego, hay cuatro opciones disponibles a partir de Android 5.0, una de ellas es la passwordque acepta una única secuencia hexadecimal como clave. Por lo tanto, si su contraseña es foo, entonces la representación hexadecimal es 666f6f( festá 66en hexadecimal, oes 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 encryptableconfigurado el indicador seguido de la ruta a una partición o la cadena especial footer. Una línea (abreviada) de mi /fstab.hammerheadarchivo:

/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
Lekensteyn
fuente
Wow @Lekensteyn gracias por tomarse el tiempo para escribir esto. Tendré que pasar un tiempo este fin de semana tratando de configurar esto. En caso de derrame, puedo borrar todo de TWRP e intentarlo de nuevo, ¿verdad?
Zlatty
1
Sí, es solo la partición de datos. Deliberadamente limpié el mío varias veces cuando estaba experimentando.
Lekensteyn
2
LPT: a partir de 6.0 (Marshmallow) vdc utiliza una contraseña no codificada ascii como parámetro (= texto sin cifrar). Fue bastante agradable practicar con la tabla ASCII una vez que descubrí esto, solo unos minutos después de que me pidieran que ingresara mi contraseña en el arranque. Tuve que poner mi contraseña en ASCII por mi culpa jajaja
Denys Vitali
4

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 datapara 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 /systempartición para poder obtenerla resize2fs. 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 con env LD_LIBRARY_PATH=/system/lib64.

Frederick Nord
fuente
Para el sistema de archivos F2FS: android.stackexchange.com/questions/146081/…
Marc.2377
2

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:

  1. raíz adb
  2. adb shell
  3. setenforce 0
  4. mount -oremount, rw / system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto wipe contraseña 666f6f
Arte
fuente
2

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í de 666f6fnofoo

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.

George Davey
fuente
¿Qué tan confiable ha sido el sistema con el cifrado del teléfono AES256 en CM13? Abrí un hilo sobre la cosa aquí android.stackexchange.com/q/134981/9897
Léo Léopold Hertz 준영
2

Al tener un Moto X 2013 con Cyanogenmod 12.1, tampoco pude cifrarlo. Finalmente, tuve éxito con estos pasos:

  1. Habilite la raíz en la Configuración del desarrollador en el teléfono y abra un shell (la aplicación Terminal, también se puede habilitar en la Configuración del desarrollador)
  2. Entrar su y confirme el acceso de root
  3. Entrar setenforce 0
  4. Ahora abra Configuración , vaya a Seguridad y seleccione Cifrar teléfono . Android se reiniciará y comenzará a cifrar el teléfono.

Llegué a esta solución combinando la respuesta de Art y este hilo del foro .

Beto
fuente
No funciono para mi. Por cierto, ¿puedes volver a establecer el estado de SELinux en 1 después de esto?
Marc.2377
1

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:

  1. Encendí la depuración de Android y el acceso raíz a ADB solo en las Opciones de desarrollador .

  2. En el símbolo del sistema ADB utilicé el comando adb rooty adb shell. Después de eso abrí otro símbolo del sistema ADB y usé el adb logcatcomando.

  3. En el primer shell ADB, seguí adelante setenforce 0y después de eso vdc 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 /systemcomando. 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:

  1. Hold Vol Up & Home & Power presionado hasta que se inicie el TWRP. Le pedirá su contraseña de cifrado.
  2. Haga la instalación de CyanogenMod parte de con las aplicaciones de Google adicionales (la segunda parte de la guía).
  3. Una vez hecho esto, reinicie el dispositivo. Cuando se inicia, tardará un tiempo. Primero iniciará el teléfono, luego le pedirá la contraseña de cifrado y luego tomará un tiempo hasta que se inicie.

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.

Andrei Viitel
fuente
1

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:

  • El cifrado eliminó todos mis datos y aplicaciones (incluidos los archivos en la SD interna), ¡ así que primero haga una copia de seguridad !
  • Después del cifrado, solo me quedaban 2 GB de espacio interno (normalmente 11 GB). Tuve que hacer un borrado completo (también eliminando Cyanogenmod), reinstalar Cyanogenmod y otro intento de cifrado para recuperar mi espacio.
  • También debe reactivar la raíz, utilicé BETA-SuperSU-v2.68-20160228150503 para eso (flash con twrp).
hinneLinks
fuente