1

我的笔记本电脑有一个加密磁盘。几个小时后apt upgrade,强制关闭我的密码不再解密我的磁盘。

我从一个 debian live usb 棒启动并尝试了几件事:

  1. 我可以使用实时操作系统中的密码解密分区吗? 在此处输入图像描述 回答:没有。
  2. 是键盘布局有问题吗? 在此处输入图像描述 回答:没有。
  3. 分区仍然是加密的吗? 在此处输入图像描述 答:是的,而且还有一个键槽。
  4. 查看 hexdump 输出时是否可见问题? 在此处输入图像描述 回答:没有。
  5. 查看 hexdump 配置输出时是否存在问题? 在此处输入图像描述 答:除了一些博客文章说超过 1000 的所有内容都应该是随机字符之外:不。

我没有备份我的 LUKS 标头。我的密码使用了一年多。如何访问或挽救我的数据?

在此先感谢,卢克

4

3 回答 3

0

自从您提出问题以来,也许已经过去了太多时间,但是:

apt 升级和几个小时后强制关闭后,我的密码不再解密我的磁盘。

这应该不是问题。我不得不在不同的设备上做很多事情。是的,这可能会损坏某些东西的可能性仍然很小,但 LUKS 非常强大。

  1. 我可以使用实时操作系统中的密码解密分区吗?

是的,这绝对是可能的!自己做了好几次。

  1. 是键盘布局有问题吗?

可能的。在终端窗口中输入您的密码以检查它是否是您的密码,然后使用cryptsetup命令。并重新考虑使用另一种布局加密驱动器的可能性。试着记住你是如何加密它的——在全新的系统安装过程中;通过终端在您的工作系统上;用工具;ETC。 。

PASSPHRASE CHARACTER SET:有些人在升级发行版时遇到了困难。强烈建议仅使用 ASCII 表的前 128 个字符中的 95 个可打印字符,因为它们始终具有相同的二进制表示。其他字符可能具有不同的编码,具体取决于系统配置,并且您的密码短语不适用于不同的编码。

这句话来自Gitlab cryptsetup

  1. 分区仍然是加密的吗?

是的。确保您使用带有 luks version2的最新 live cd 。

我没有备份我的 LUKS 标头。

看起来您不需要备份 LUKS 标头。

编辑:一些额外的想法:你是如何进行加密的?它是像/home这样的特殊分区吗?

  • 如果分区是您的/home并且您在系统安装期间进行了加密设置,那么您通常通过您的用户密码打开您的分区。但这不是该分区的真正密码,因为将有一个用于打开分区的密钥文件。该文件在 /etc/crypttab 中定义。
  • 如果您能够打开您的分区或设置一个新分区,请确保您
    • 不仅设置一个密码!在另一个密钥槽中添加另一个密码或密钥文件。

如果您确定您输入的密码是正确的,则相应的密钥槽可能已损坏。没有办法恢复损坏的密钥槽,除了从头备份......

这句话也来自Gitlab cryptsetup。也许你会在那里找到更多需要的信息。

  • 完成密码短语后,请执行 HEADER-BACKUP!这很简单。备份很小,大多数时候你不需要它——我在过去的 10 年里不需要它,还有很多硬盘、USB 棒等!
    • 不要将标头备份存储在加密的硬盘/分区中!
于 2021-05-26T07:20:50.347 回答
0

您可以尝试master key为您的 luks 容器创建一个新的

## Requires vim-common

cryptsetup luksAddKey /dev/sda3 --master-key-file <(dmsetup table --showkey /dev/mapper/foobar | awk '{print$5}' | xxd -r -p)

这将创建一个用于解锁 luks 容器的新密码,如果可行,那么您可以删除以前的密码并继续使用它。

于 2021-06-07T16:05:08.607 回答
0

很可能您输入了错误的密码,因为我也遇到了类似的问题并归咎于升级。

您可以转储标题并尝试粗暴地强制它。

以下步骤可以提供帮助。

  1. 确认您拥有正确的设备:

    sudo cryptsetup isLuks /dev/sda3 -v
    
  2. 验证标题:

    sudo cryptsetup luksDump /dev/sda3
    
  3. 尝试最初的几个密码(考虑添加--debug更多输出):

    sudo cryptsetup luksOpen --test-passphrase /dev/sda3
    

    或:tcryptDump,但不应该有任何区别。

  4. 考虑备份标头:

    sudo cryptsetup luksHeaderBackup /dev/sda3 --header-backup-file luksHeader.bin
    

    或者运行(将计数替换为在标头转储中找到的有效负载偏移量):

     dd if=/dev/sda3 of=luksHeader.bin bs=512 count=4096
    

    您还可以考虑使用dd.

  5. 使用头文件尝试不同的密码:(比使用实际设备更快)

    sudo cryptsetup luksOpen --test-passphrase luksHeader.bin
    

蛮力

有一个小的头文件(按照上面的步骤),你可以尝试粗暴地强制它。

假设您知道您的原始密码,请创建您的潜在密码列表及其排列passes.txt(使列表唯一sort -ou passes.txt)。

在 shell 中,您可以使用以下脚本来尝试这些组合:

set -x
while read pass; do
  printf $pass | cryptsetup luksOpen --test-passphrase luksHeader.bin $@ && echo Success && break;
done < passes.txt

笔记:

  • 由于文件很小,您可以将其扩展到多台机器。
  • 考虑添加--key-slot 0更快的检查。
  • 您可以尝试覆盖--pbkdf-force-iterations(检查标头转储中有多少),但很可能无济于事。

现场CD

如果您认为这是由于升级而发生的,请使用不同的Ubuntu Live CD 来使用上述命令(Ubuntu 16、18、20 等)。

从 USB/CD 启动,或安装VM VirtualBox(创建 Ubuntu VM,然后加载 ISO 以从它启动)。

要将物理设备附加到VM VirtualBox(不推荐):

  • 在新创建的 Ubuntu VM 中,附加 Ubuntu 的 Live CD.iso文件。
  • 使用VBoxManage internalcommands createrawvmdk命令创建.vmdk指向真实设备的文件。将这些附加.vmdk到 VM 中(在启动之前)。
  • 如果您的用户在运行期间无法访问这些特殊设备,请VirtualBoxVM以 root 身份运行(也不推荐)。

最后一步,复制头文件,然后使用旧版本的cryptsetup( cryptsetup --version) 测试密码。

安装

成功后,使用以下命令挂载文件系统:

sudo cryptsetup isLuks /dev/sdb5 -v
sudo cryptsetup luksOpen /dev/sdb5 newhd
sudo lvscan # Check if LVs are active.
sudo vgchange -ay # Activate LVs if not active.
sudo lvdisplay # List logical volumes (note the LV Path).
sudo mount /dev/ubuntu-vg/root /mnt
mount # List mounted filesystems.
xdg-open /mnt # Open in file explorer
于 2021-11-20T23:48:51.430 回答