Desbloquee el ARCHIVO DE IMAGEN DE DISCO cifrado de Android de la tarjeta SD en el escritorio Linux

Desbloquee el ARCHIVO DE IMAGEN DE DISCO cifrado de Android de la tarjeta SD en el escritorio Linux

Puedo desbloquear con éxito una tarjeta SD cifrada de Android corrupta en un escritorio Linux siguiendo instrucciones de Internet.

# dmsetup create crypt5 --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 /dev/mmcblk0p2 0"

La recuperación directamente desde la tarjeta SD usando Photorec estaba tomando una cantidad de tiempo inaceptable. Como compromiso, decidí comenzar creando un archivo de imagen de disco a partir de la partición cifrada para poder verificar la integridad de la tarjeta SD y reutilizarla y luego recuperar los datos del archivo de imagen más adelante.

# dd if=/dev/mmcblk0p2 of=/home/crash/Documents/128gb.img iflag=direct oflag=dsync

Ahora la pregunta es: "¿Cómo desbloqueo el archivo de imagen del disco?" Sabiendo que se supone que el archivo de imagen del disco es idéntico a la partición original, intenté modificar el comando original para introducir el tamaño del dispositivo de bloque y la ubicación del archivo de imagen del disco.

# blockdev --getsize /dev/mmcblk0p2

Resultado:

250048479

Conecte eso:

# dmsetup create crypt6 --table "0 250048479 crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 /home/crash/Documents/128gb.img 0"

Esto falla con el siguiente error:

device-mapper: reload ioctl on crypt6 failed: Invalid argument
Command failed

No veo qué salió mal. Me gustaría confirmar que esta imagen de disco se puede desbloquear antes de pasar a limpiar y probar la tarjeta SD.

Respuesta1

Me imagino que necesitas convertir tu archivo de imagen a un dispositivo de bloque antes de dmcryptpoder manejarlo. Aquí utilizamos el loopdispositivo que nos permite presentar una interfaz de bloque al archivo nombrado:

# Create a loop device and capture its name
lodev=$(losetup --show --find /home/crash/Documents/128gb.img)
echo "Using device $lodev for the image" >&2

# Map the crypto layer on to the loop block device
dmsetup create crypt6 --table "0 250048479 crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 $lodev 0"

...
# Delete the loop device when we have finished with it
losetup -d "$lodev"

En realidad, usando esta configuración podrías reemplazar tu constante 250048479con una llamada de regreso a blockdev(observa que también estoy usando las comillas más modernas $(...)en lugar de las comillas invertidas `...`):

dmsetup create crypt6 --table "0 $(blockdev --getsize "$lodev") crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 $lodev 0"

información relacionada