web-dev-qa-db-ja.com

画像ファイルの暗号化されたパーティションをマウントする

ハードディスクのイメージバックアップファイルがあります。これは3つのパーティションで構成されています(_Sudo fdisk -l /mnt/hdd/19_02.img_):

_Device                 Start       End   Sectors   Size Type
/mnt/hdd/19_02.img1     2048   1050623   1048576   512M EFI System
/mnt/hdd/19_02.img2  1050624  34686975  33636352    16G Linux swap
/mnt/hdd/19_02.img3 34686976 976773134 942086159 449.2G Linux filesystem
_

3番目のパーティションは、タイプ_crypto_LUKS_です。暗号化されない場合は、Sudo mount -o loop,offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img /mnt/imgを使用してマウントできます。これにより、_mount: /mnt/img: unknown filesystem type 'crypto_LUKS'._が生成されます

私が試したこと

_Sudo cryptsetup luksOpen /mnt/hdd/19_02.img3 img_結果は_Device /mnt/hdd/19_02.img3 doesn't exist or access denied._になります

Sudo cryptsetup plainOpen --offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img imgもパスフレーズを要求しますが、これも受け入れられますが、_Requested offset is beyond real size of device /mnt/hdd/19_02.img._で返されます。たぶんcryptsetupは、オフセット値にブロックサイズを乗算します。

_Sudo cryptsetup plainOpen --offset=34686976 /mnt/hdd/19_02.img img_もパスフレーズを要求しますが、これも受け入れられ、正常に返されます。しかし、_Sudo mount /dev/mapper/img /mnt/img_は_mount: /mnt/img: wrong fs type, bad option, bad superblock on /dev/mapper/img_を不平を言います。 _Sudo lsblk -f /dev/mapper/img_で分析すると、認識されているファイルシステムがないことがわかります。

_NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
img
_

暗号化されたデバイスはLUKSモードで作成されたので、plainOpenで開いても意味がありません。ただし、luksOpenには_--offset_オプションはありません。

_Sudo cryptsetup luksOpen --offset=34686976 /mnt/hdd/19_02.img img_を実行すると、_cryptsetup: Option --offset is supported only for open of plain and loopaes devices and for luksFormat_になります。 (luksFormatは試していませんが、LUKSデバイスヘッダーを設定し、マスターキーを暗号化します。)

結局のところ質問

画像ファイルのオフセットで_cryptsetup luksOpen_を行う方法は?

1
armin86er

fdiskはここでは少し馬鹿げています:パーティションのデバイス名を表示する場合、指定されたディスクデバイス全体の名前を取得し、パーティション番号(pで始まる)を追加しますディスク全体のデバイス名の最後の文字も数字の場合)。その名前のデバイスが実際に存在するかどうかをチェックせずにこれを行います。

つまり、イメージファイルの名前が/mnt/hdd/19_02.imgで、fdiskを使用して直接検査している場合、/mnt/hdd/19_02.img3のようなパーティション名は完全に架空のものであり、使用できません。

オフセットを手動で計算する代わりに、イメージファイルをループデバイスに接続して、パーティションを自動的に検出させることができます。

Sudo losetup -P /dev/loop0 /mnt/hdd/19_02.img

お使いのシステムがlosetup-Pオプションをサポートできるほど新しい場合、/dev/loop0p1/dev/loop0p2/dev/loop0p3などのパーティションデバイスが自動的に表示されます。

パーティションループデバイスをサポートしていない古いディストリビューションでは、同じ目的でkpartxコマンド(個別にパッケージ化されていない場合はdevice-mapper-multipathツールに付属している場合があります)を使用できます。その場合、2つの手順を実行する必要があり、デバイス名は少し異なります。

Sudo losetup /dev/loop0 /mnt/hdd/19_02.img
Sudo kpartx -a /dev/loop0

このようにkpartxを使用すると、パーティションデバイスは/dev/mapperの下に表示されます。 /dev/mapper/loop0p1など。

今、あなたはどちらかを行うことができるはずです

Sudo cryptsetup luksOpen /dev/loop0p3 img

または

Sudo cryptsetup luksOpen /dev/mapper/loop0p3 img

losetup -Pまたはkpartxを使用してパーティションデバイスを処理したかどうかによって異なります。


イメージへのアクセスが完了したら、パーティションデバイスにマウントされているファイルシステムをすべてマウント解除し、暗号化されたイメージをSudo cryptsetup luksCloseして、ループデバイスバインディングを元に戻します。

kpartxを使用した場合は、最初にSudo kpartx -d /dev/loop0を実行してパーティションデバイスを解放します。 losetup -Pを使用した場合、この手順は不要です。

次に、ループデバイスを解放します:Sudo losetup -d /dev/loop0

5
telcoM