LUKS 分区恢复

LUKS 分区恢复

一个有 2 个分区的驱动器 - 第一个分区是纯 ext4,第二个分区是加密的 LUKS。分区表已被覆盖。我找到了需要恢复的第二个分区的开头,如下所示:

#hexdump -s 400000m -C /dev/sdc | grep LUKS
61d3dec850 79 c8 81 6d e5 4c 55 4b 53 40 49 aa 29 df de d7 |y..m.LUKS@I.)...|

然后:

#losetup -o 0x61d3dec850 -r -f /dev/sdc
#losetup -a
/dev/loop0: [0005]:477209 (/dev/sdc), offset 420166420560

到目前为止还不错,然后出现了这个问题:

#cryptsetup luksOpen /dev/loop0 luksrecover
Device /dev/loop0 is not a valid LUKS device.

请指教如何继续。偏移量错误吗?我是否应该按照此处的建议寻找标识 ext4 的魔法数字 0xEF53https://unix.stackexchange.com/questions/103919/how-do-i-find-the-offset-of-an-ext4-filesystem

请注意,这是一个 1TB 的驱动器,因此我需要一个建议,如果可能的话,不要强制再次扫描整个驱动器(数小时和数小时),例如 testdisk 似乎没有选项从指定的偏移量开始以节省扫描时间。

PS:虽然很接近,但还不完全正确:https://unix.stackexchange.com/questions/177070/lvm-encrypted-partition-without-partition-table

答案1

第一个明显的问题是你找错了地方。那不是 LUKS 标头。

LUKS 分区头以六个字节开头,定义为LUKS,后跟 0xBA、0xBE。您可以清楚地看到,这六个字节中有两个不存在。

您正在寻找的内容非常明显:

00000000  4c 55 4b 53 ba be 00 01  61 65 73 00 00 00 00 00  |LUKS....aes.....|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  78 74 73 2d 70 6c 61 69  |........xts-plai|
00000030  6e 36 34 00 00 00 00 00  00 00 00 00 00 00 00 00  |n64.............|
00000040  00 00 00 00 00 00 00 00  73 68 61 31 00 00 00 00  |........sha1....|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00  00 00 10 00 00 00 00 20  |............... |

您需要查看磁盘上的其他位置。也许您需要后退一点?或者前进。或者让 testdisk 自行处理;如果磁盘上的任何地方都有有效的 LUKS 标头,它最终应该会找到它。

相关内容