デスクトップ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実際、この設定では定数をコールバックに置き換えることができます(やはりbackticksの代わりにblockdevもっと現代的なものを使用しています)。$(...)`...`

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

関連情報