Module Contents#



XVA reader.


XVA stream.


class dissect.hypervisor.backup.xva.XVA(fh)#

XVA reader.

XenCenter export format. Basically a tar file with “blocks” of 1MB.

property ova#
open(ref, verify=False)#
class dissect.hypervisor.backup.xva.XVAStream(xva, ref, size, verify=False)#

Bases: dissect.util.stream.AlignedStream

XVA stream.

XenServer usually just streams an XVA file right into an output file, so our use-case requires a bit more trickery. We generally don’t stream directly into an output file, but try to create a file-like object for other code to use.

The numbers for the block files (weirdly) don’t represent offsets. It’s possible for a block file to be 0 sized, in which case you should “add” that block to the stream, and continue on to the next. The next block might have a number + 1 of what your current offset is, but it will still contain the data for that current offset. For this reason we build a lookup list with offsets.