在我的 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 文件系统不是更好吗?