Desbloquear o arquivo de imagem de DISCO criptografado do Android do cartão SD no desktop Linux

3

Eu consigo desbloquear com sucesso um cartão SD criptografado com Android corrompido no desktop Linux 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 um compromisso, decidi começar fazendo um arquivo de imagem de disco a partir da partição criptografada para que eu possa verificar a integridade do cartão SD e reutilizá-lo e recuperar os dados do arquivo de imagem mais tarde.

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

Agora a pergunta é: "como desbloqueio o arquivo de imagem de disco?" Sabendo que o arquivo de imagem do disco deve ser idêntico à partição original, tentei ajustar o comando original para conectar o tamanho do dispositivo de bloco e a localização do arquivo de imagem do disco.

# blockdev --getsize /dev/mmcblk0p2

Resultado:

250048479

Conecte isso em:

# 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

Eu não vejo o que deu errado. Gostaria de confirmar que esta imagem de disco pode ser desbloqueada antes de passar para limpar e testar o cartão SD.

    
por StarCrashr 13.04.2017 / 15:24

1 resposta

0

Eu imagino que você precisa converter seu arquivo de imagem em um dispositivo de bloco antes que dmcrypt possa manipulá-lo. Aqui usamos o dispositivo loop , que nos permite apresentar uma interface de bloco para o 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 essa configuração, você pode substituir sua constante 250048479 por 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"
    
por 15.04.2017 / 00:28