Cryptsetup

dmsetup 不適用於超過 2TB 的驅動器

  • June 14, 2019

這篇文章的原標題是關於 CryptSetup 沒有載入具有 4096 字節扇區的 Truecrypt 設備。無論如何,我設法轉儲了 Truecrypt 標頭(使用主密鑰),但是現在當我嘗試使用 dmsetup 載入它時它不起作用:

echo "0 5860533168 crypt aes-xts-plain64 <my-super-secret-64-byte-key> 256 /dev/sdh 256" | dmsetup create test
device-mapper: resume ioctl on test  failed: Invalid argument
Command failed

它似乎不支持超過 2^32 的大小數字,所以我嘗試將扇區大小:4096參數添加到表中:

echo "0 732566646 crypt aes-xts-plain64 <my-super-secret-64-byte-key> 256 /dev/sdh 256 sector_size:4096" | dmsetup create test
device-mapper: reload ioctl on test  failed: Invalid argument
Command failed

如果我將扇區數設置為低於 2TB (2^32 * 512),它會起作用,但不會超過。我試圖在純 cryptsetup 中複製相同的命令,但我不知道如何準確匹配 dmsetup 表,我無法複製它。有沒有辦法強制 dmsetup 使用超過 2TB 的設備?有沒有辦法將主密鑰直接傳遞給 cryptsetup?這是我迄今為止嘗試過的,但它使用錯誤的密鑰解密:

echo <64-byte-key> | cryptsetup open --type plain /dev/sdh test --offset 256 --cipher aes-xts-plain64 --hash plain --key-size 512

扇區總數錯誤。我必須取扇區總數並減去偏移量。為什麼 dmsetup 不只是說扇區數超過了設備而不是非常無益的:“無效參數”?這將節省幾個小時。

對於 4k 模式,您必須採用扇區總數 * 512 / 4096 - 偏移量。您還必須在表中任何額外的“可選參數”之前指定一個**計數。**在這裡,我只有 1 個,所以它是:

... /dev/sdh 256 1 sector_size:4096

引用自:https://unix.stackexchange.com/questions/524823