在桌面 Linux 上解鎖 Android 加密的 SD 卡磁碟映像文件

在桌面 Linux 上解鎖 Android 加密的 SD 卡磁碟映像文件

我能夠使用網路上的說明在桌面 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實際上,使用此配置,您可以用回調替換常數blockdev(請注意,我還使用更現代的$(...)而不是反引號`...`):

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

相關內容