인터넷에서 찾은 지침을 사용하여 데스크톱 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"