On Thu, Dec 12, 2024 at 11:31:43AM +0000, Daniel P. Berrangé wrote:
> On Thu, Dec 12, 2024 at 11:27:35AM +0000, Richard W.M. Jones wrote:
> > On Thu, Dec 12, 2024 at 03:10:15PM +0400, Denys Ostapenko wrote:
> > > >>I found it's surprisingly hard to access VeraCrypt partition inside
> > > >>VHD file.
> > > >
> > > >I'm not sure what VeraCrypt is, but I don't think we have support for
> > > >it in libguestfs, which is going to be a problem.  Unless kernel /
> > > >cryptsetup knows about it somehow.
> > > 
> > > VeraCrypt is a TrueCrypt fork (disk-encryption software),
> > > open-source and cross-platform.
> > > 
> > > >On Thu, Dec 12, 2024 at 02:45:48AM +0400, Denys Ostapenko wrote:
> > > >>Is it possible to expose raw partition from libguestfs (and
> > > >>guestfish) as a mapper device? Like cryptsetup-open <partition>
> > > >><mapper>, but without password and decryption at all.
> > > >
> > > >I'm not sure what you mean by this.  Do you mean, expose the encrypted
> > > >device as a block device on the host?  (ie. guestmount)
> > > 
> > > I have file.vhd and /dev/sda1 partition (VeraCrypt encrypted)
> > > inside. This partition is raw; guestfish can not recognize it,
> > > because without password VeraCrypt partition is indistinguishable
> > > from random. In Windows, out-of-the-box VHD mount tool creates
> > > device like \Device\Harddisk2\Partition1, so I can mount it in
> > > VeraCrypt. I have not found a way to ask guestfish/libguestfs to
> > > expose such raw partition from inside VHD as host block device.
> > 
> > Doesn't doing this work?
> > 
> >   $ guestmount [--ro] -a guest.img -m /dev/sda1 /var/tmp/some_mountpoint
> > 
> > It's not a host block device, but near enough.  It'll also be quite
> > slow because it's using FUSE.
> > 
> > If VeraCrypt can be taught how to access an NBD endpoint instead of
> > needing POSIX APIs, then you could do something with qemu-nbd &
> > nbdkit, although it's a little clunky because of the nested partition
> > and because qemu-nbd removed support for the '-P' option.
> 
> Can you just combine qemu-nbd with kpartx to setup devmapper
> nodes for each partition:
> 
>   qemu-nbd  -c /dev/nbd0 guest.img
>   kpartx -a /dev/nbd0
> 
> will give you /dev/mapper/nbd0p1  which you can then access
> with whatever you need for  VeraCrypt on a host blockdev

I suspected that Denys wanted to do all this as non-root, but
that certainly works for root.

For non-root you can put nbdkit-partition-filter in front of
nbdkit-nbd-plugin in front of qemu-nbd, but it's all starting to get
very clunky at that point (plus you still have to teach VeraCrypt to
use NBD).

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
_______________________________________________
Libguestfs mailing list -- guestfs@lists.libguestfs.org
To unsubscribe send an email to guestfs-le...@lists.libguestfs.org

Reply via email to