无需 dm_crypt 内核模块和/或 root 权限,即可从 dm_crypt 映像文件中获取原始解密文件系统映像

无需 dm_crypt 内核模块和/或 root 权限,即可从 dm_crypt 映像文件中获取原始解密文件系统映像

在我的 Linux 机器上,我有一个图像文件中的小型加密文件系统,如下例所示。这工作正常。

# Create encrypted filesystem image file
dd if=/dev/zero of=fs.img bs=1M count=100
cryptsetup -yvh sha256 -c aes-xts-plain -s 256 luksFormat fs.img
# Mount the encryptes fs image file
sudo cryptsetup luksOpen fs.img cfs
sudo mkfs.ext2 /dev/mapper/cfs
sudo mount /dev/mapper/cfs mnt/
# Unmount and close fs.img
sudo umount /dev/mapper/cfs mnt/
sudo cryptsetup luksClose cfs

现在的任务是将此文件复制到我没有 root 权限或没有 dm_crypt 内核模块的设备(例如 Windows 机顶盒或 Chromebook)并从该图像文件中获取一些数据,不知道这是否可行。

是否有可能在没有 root/dm_crypt 的情况下解密图像文件以获取原始 ext2 fs?

只是一个想法...不知道这样的事情是否有可能:

  • 从 luks 标头获取主密钥:cryptsetup luksDump --dump-master-key fs.img
  • 使用 dd 截断 luks 标头
  • 其他一些神奇的 Linux 命令,例如 gpg 或 openssl
  • openssl -some_magic_parameter -in fs.img -out raw_ext2.img

一旦我有了原始的 ext2.img,我就可以获取数据,例如使用 7z(这就是为什么我在这个例子中选择旧的 ext2 fs 的原因)

  • 7z x raw_ext2.img foo.txt

答案1

部分答案

您不太可能以通用方式完成您正在尝试的事情。

要做的就是在主机上解密容器,然后以可以在其他系统上打开的方式重新加密块设备。

cryptsetup luksOpen fs.img cfs 

创建块设备的未加密版本。您无需挂载它,只需加密 /dev/mapper/cfs 即可,这样它在其他系统上可读 - 另外,您还可以压缩它以进行传输。

我还没有尝试过,但也许你可以使用类似

cat /dev/mapper/cfs |  7z a archive.gz -pPASSWORD -tgzip cfs.img

我确实想知道 LUKS 是否是适合这项工作的工具 - 您是否考虑过使用跨平台的 Veracrypt?

另外,为什么是 ext2?使用 vfat 文件系统不是更好吗?

相关内容