我不小心在 LUKS 分区上创建了一个新的物理卷;没有发生其他事情。LUKS 分区包含 LVM 设置和根分区(此设置最初由 debian 安装程序创建)。
我可以看到 LUKS 分区基本完好:
00000200: 4c41 4245 4c4f 4e45 0100 0000 0000 0000 LABELONE........
00000210: 0ccb b873 2000 0000 4c56 4d32 2030 3031 ...s ...LVM2 001
00000220: 4b48 5047 5667 6465 477a 7831 306a 6649 KHPGVgdeGzx10jfI
00000230: 7635 4432 4637 6966 446a 7172 3339 4863 v5D2F7ifDjqr39Hc
00000240: 0000 40a2 e800 0000 0000 1000 0000 0000 ..@.............
....
00005000: 7b22 6b65 7973 6c6f 7473 223a 7b22 3022 {"keyslots":{"0"
00005010: 3a7b 2274 7970 6522 3a22 6c75 6b73 3222 :{"type":"luks2"
00005020: 2c22 6b65 795f 7369 7a65 223a 3634 2c22 ,"key_size":64,"
00005030: 6166 223a 7b22 7479 7065 223a 226c 756b af":{"type":"luk
00005040: 7331 222c 2273 7472 6970 6573 223a 3430 s1","stripes":40
00005050: 3030 2c22 6861 7368 223a 2273 6861 3235 00,"hash":"sha25
00005060: 3622 7d2c 2261 7265 6122 3a7b 2274 7970 6"},"area":{"typ
00005070: 6522 3a22 7261 7722 2c22 6f66 6673 6574 e":"raw","offset
00005080: 223a 2233 3237 3638 222c 2273 697a 6522 ":"32768","size"
00005090: 3a22 3235 3830 3438 222c 2265 6e63 7279 :"258048","encry
000050a0: 7074 696f 6e22 3a22 6165 732d 7874 732d ption":"aes-xts-
000050b0: 706c 6169 6e36 3422 2c22 6b65 795f 7369 plain64","key_si
000050c0: 7a65 223a 3634 7d2c 226b 6466 223a 7b22 ze":64},"kdf":{"
000050d0: 7479 7065 223a 2261 7267 6f6e 3269 222c type":"argon2i",
Run Code Online (Sandbox Code Playgroud)
然而,缺少特征“LUKS”。
有没有办法访问LUKS分区来检索数据?我尝试了 testdisk,但没有成功。
更新,因为我最初没有包含此内容:这是 LUKS 标头备份 @ 0x4000:
00004000: 0000 0000 0000 0002 0000 0000 0000 4000 ..............@.
00004010: 0000 0000 0000 0005 0000 0000 0000 0000 ................
00004020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004040: 0000 0000 0000 0000 7368 6132 3536 0000 ........sha256..
00004050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004060: 0000 0000 0000 0000 735b 6f53 2466 e2bb ........s[oS$f..
00004070: abcf fb4a d5ea d395 70ab f4e8 1f99 a173 ...J....p......s
00004080: 2303 93a0 7582 eb4a 77fe 28f8 3e01 b246 #...u..Jw.(.>..F
00004090: e9eb cd58 8a7a afd5 4e45 319a c007 906b ...X.z..NE1....k
000040a0: b22a c393 1918 981c 6636 6333 6461 3534 .*......f6c3da54
000040b0: 2d63 6435 362d 3433 3036 2d38 6330 312d -cd56-4306-8c01-
000040c0: 3534 3334 3366 6265 6564 3236 0000 0000 54343fbeed26....
000040d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000040e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000040f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004100: 0000 0000 0000 4000 0000 0000 0000 0000 ......@.........
00004110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00004170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
Run Code Online (Sandbox Code Playgroud)
fro*_*utz 37
cryptsetup repair
, 第一部分 \xe2\x80\x94 魔字节恢复这看起来像是直接用 LVM 元数据覆盖的 LUKS 2 标头。所以LUKS设备就变成了LVM物理卷。所以这是一个损坏的LUKS头恢复问题。根据损坏程度,可能无法恢复。
\n对于 LUKS1,通常游戏结束,但 LUKS2 在偏移 0x4000 处有一个辅助标头。不方便的是,您没有在输出中包含该偏移范围,但偏移 0x5000 处的 LUKS2 JSON 数据仍然存在。
\n那么你可以尝试下面的实验:
\n复制设备的前 16 MiB(LUKS 2 标头):
\n# head -c 16M /dev/yourdevice > luksheaderdamage.img\n
Run Code Online (Sandbox Code Playgroud)\n恢复 LUKS 2 标头魔术字节签名(被 LVM 擦除):
\n--- Primary: 0x0000 \xc2\xbb LUKS\\xba\\xbe\\x00\\x02 ---\n# printf \'LUKS\\272\\276\\0\\2\' | \n dd bs=1 count=8 conv=notrunc of=luksheaderdamage.img\n\n--- Secondary: 0x4000 \xc2\xbb SKUL\\xba\\xbe\\x00\\x02 ---\n# printf \'SKUL\\272\\276\\0\\2\' | \n dd bs=1 count=8 seek="$((0x4000))" conv=notrunc of=luksheaderdamage.img\n
Run Code Online (Sandbox Code Playgroud)\n尝试修复 LUKS 2 标头:
\n# cryptsetup repair luksheaderdamage.img\nWARNING: Device luksheaderdamage.img already contains a \'LVM2_member\' superblock signature.\n\nWARNING!\n========\nReally try to repair LUKS device header?\n\nAre you sure? (Type \'yes\' in capital letters): YES\n
Run Code Online (Sandbox Code Playgroud)\n检查结果:
\n# cryptsetup luksDump luksheaderdamage.img\n
Run Code Online (Sandbox Code Playgroud)\n如果成功,打开设备:
\n# cryptsetup open --readonly --header=luksheaderdamage.img /dev/yourdevice cryptyourdevice\n
Run Code Online (Sandbox Code Playgroud)\n然后看看能找到什么...
\n# file -s /dev/mapper/cryptyourdevice\n
Run Code Online (Sandbox Code Playgroud)\n如果这些步骤中的任何一个失败,您可能就没有太大希望了......
\n(使用所有这些命令进行跳环只是必要的,因为cryptsetup repair
它不灵活并且拒绝修复 LUKS 2 标头,即使损坏仅限于魔术字节。因此,魔术字节签名的恢复是一个手动过程。)