Desbloqueie o DISK IMAGE FILE criptografado do Android do cartão SD no desktop Linux

Desbloqueie o DISK IMAGE FILE criptografado do Android do cartão SD no desktop Linux

Consigo desbloquear com sucesso um cartão SD criptografado Android corrompido no Linux desktop usando instruções da Internet.

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

A recuperação diretamente do cartão SD usando o Photorec estava demorando um tempo inaceitável. Como compromisso, decidi começar criando um arquivo de imagem de disco a partir da partição criptografada para poder verificar a integridade do cartão SD, reutilizá-lo e recuperar os dados do arquivo de imagem posteriormente.

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

Agora a questão é: "como faço para desbloquear o arquivo de imagem de disco?" Sabendo que o arquivo de imagem de disco deveria ser idêntico à partição original, tentei ajustar o comando original para inserir o tamanho do dispositivo de bloco e a localização do arquivo de imagem de disco.

# blockdev --getsize /dev/mmcblk0p2

Resultado:

250048479

Conecte isso:

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

Isso falha com o seguinte erro:

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

Não vejo o que deu errado. Gostaria de confirmar se esta imagem de disco pode ser desbloqueada antes de prosseguir com a limpeza e teste do cartão SD.

Responder1

Eu imagino que você precise converter seu arquivo de imagem em um dispositivo de bloco antes de dmcryptpoder lidar com isso. Aqui usamos o loopdispositivo, que nos permite apresentar uma interface de bloco ao arquivo nomeado:

# 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"

Na verdade, usando esta configuração você poderia substituir sua constante 250048479por uma chamada de retorno para blockdev(observe que também estou usando o mais moderno $(...)em vez de backticks `...`):

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

informação relacionada