一个驱动器有 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 后面应该出现 \xba\xbe,但在你的十六进制转储中却不是这样。
尝试使用 LC_ALL=C grep -a -b -P 'LUKS\xba\xbe' /dev/sdc 搜索磁盘
如果分区数据仍然存在,则输出将是:offset:LUKS.... 您应该使用正确的偏移量(十进制)。
答案2
您的偏移量是错误的;它应该是0x61d3dec856
,偏移量到LUKS
;0x61d3dec850
是到行首的偏移量。