Linux - 意外在 LUKS 加密驱动器上使用 dd,有没有办法恢复?

Linux - 意外在 LUKS 加密驱动器上使用 dd,有没有办法恢复?

dd bs=4M if=image.iso of=/dev/sda oflag=sync在创建可启动驱动器而不是以 USB 记忆棒为目标时意外运行了该程序。

我相当确定大多数文件都没问题 - iso 只有~330mb,而驱动器有 500gb。

问题是,/dev/sda在安装 manjaro 时已加密,因此诸如photorec之类的工具无法访问这些文件。我也不确定被加密的驱动器会如何影响被 覆盖的数据dd

lsblk的输出显示了新的分区表:

sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0   336M  0 part 
└─sda2   8:2    0   2.4M  0 part

fdisk -l显示同样的事情:

Device     Boot Start    End Sectors  Size Id Type
/dev/sda1  *        0 688127  688128  336M  0 Empty
/dev/sda2        3820   8747    4928  2.4M ef EFI (FAT-12/16/32)

/dev/mapper/其中只有controlluks 分区,没有它的迹象:

lubuntu@lubuntu:/dev/mapper$ ls 
control

不幸的是,我不确定旧的分区表是什么。我知道我在驱动器末尾有 12gb 的交换空间,我只使用了一个分区,/没有手动分离任何其他东西,/dev/sda3/挂载到/,而且我有些默认情况下,它们/boot是分开的,但这就是我所知道的全部。

我尝试过使用TestDisk,但深度搜索的输出似乎与我所拥有的不一致,而且我不想让事情变得更糟:

Disk /dev/sda - 500 GB / 465 GiB - CHS 60801 255 63
     Partition               Start        End    Size in sectors
>* FAT12                    0  60 41     0 138 54       4928 [NO NAME]
 D Linux                   38 127 26 60801  15 14  976150528
 D Linux Swap           59317 172 56 60801  80 15   23834624

的输出head -c 1G /dev/sda | hexdump -C | grep LUKS是:

# head -c 1G /dev/sda | hexdump -C | grep LUKS
00011110  0a 4c 55 4b 53 2e 4d 4f  44 3b 31 00 50 58 24 01  |.LUKS.MOD;1.PX$.|
004346a0  64 65 6e 69 65 64 00 4c  55 4b 53 ba be 00 25 73  |denied.LUKS...%s|
00b394a0  64 65 6e 69 65 64 00 4c  55 4b 53 ba be 00 25 73  |denied.LUKS...%s|

还有希望恢复数据吗?

答案1

如果没有 LUKS 头备份,就无法恢复 LUKS 容器。

坦率地说,答案包含在第一句话中,但我可以提供更多信息来解释这种情况。LUKS 加密的解释只是按以下方式工作:分区的一些初始 MB(实际大小取决于 LUKS 版本和配置)分配给 LUKS 标头,其余分区用于数据(根分区或主分区等)。LUKS 标头“包含”用于加密数据的“主”密码。此主密码由 LUKS 在第一次加密分区时生成(“大”和“强”)。主密码受“密钥槽密码”的“保护” - 用户实际输入该密码来解密驱动器。简而言之,LUKS 标头包含受“用户”密码保护的主密码。因此,如果 LUKS 标头消失,主密码也会消失,因此无法解密数据 - 即使您仍然知道“用户”密码。

LUKS.mod关于 grep 的 'LUKS.mod' 输出 - 这看起来像是存储在 EFI 分区的 FAT 表中的grub 模块的名称。此输出显示启动分区(通常未加密)恰好位于您使用命令查询的磁盘的前 1G 中head -c 1G /dev/sda | hexdump -C | grep LUKS。此信息无助于解决问题。

相关内容