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 rootseguido de adb shell.
- Opcional: mire los registros invocando
adb logcaten 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 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