인터넷의 지침을 사용하여 데스크톱 Linux에서 손상된 Android 암호화 SD 카드를 성공적으로 잠금 해제할 수 있습니다.
# dmsetup create crypt5 --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 /dev/mmcblk0p2 0"
photorec을 사용하여 SD 카드에서 직접 복구하는 데 너무 많은 시간이 걸렸습니다. 절충안으로 암호화된 파티션에서 디스크 이미지 파일을 만드는 것부터 시작하여 SD 카드의 무결성을 확인하고 재사용한 다음 나중에 이미지 파일에서 데이터를 복구하기로 결정했습니다.
# dd if=/dev/mmcblk0p2 of=/home/crash/Documents/128gb.img iflag=direct oflag=dsync
이제 질문은 "디스크 이미지 파일의 잠금을 어떻게 해제합니까?"입니다. 디스크 이미지 파일이 원래 파티션과 동일해야 한다는 것을 알고 원래 명령을 조정하여 블록 장치의 크기와 디스크 이미지 파일의 위치를 연결해 보았습니다.
# blockdev --getsize /dev/mmcblk0p2
결과:
250048479
연결하세요:
# dmsetup create crypt6 --table "0 250048479 crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 /home/crash/Documents/128gb.img 0"
다음 오류로 인해 실패합니다.
device-mapper: reload ioctl on crypt6 failed: Invalid argument
Command failed
무엇이 잘못되었는지 알 수 없습니다. SD 카드를 지우고 테스트하기 전에 이 디스크 이미지의 잠금을 해제할 수 있는지 확인하고 싶습니다.
답변1
dmcrypt
이미지 파일을 처리하기 전에 블록 장치로 변환해야 한다고 생각합니다 . 여기서는 loop
명명된 파일에 블록 인터페이스를 제공할 수 있는 장치를 사용합니다.
# 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"
실제로 이 구성을 사용하면 상수를 250048479
콜백으로 바꿀 수 있습니다(역시 backticks 대신 blockdev
더 현대적인 것을 사용하고 있음에 유의하세요 ).$(...)
`...`
dmsetup create crypt6 --table "0 $(blockdev --getsize "$lodev") crypt aes-cbc-essiv:sha256 HEXIDECIMALPASSPHRASEHERE 0 $lodev 0"