:py:mod:`dissect.hypervisor.disk.qcow2` ======================================= .. py:module:: dissect.hypervisor.disk.qcow2 Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.hypervisor.disk.qcow2.QCow2 dissect.hypervisor.disk.qcow2.L2Table dissect.hypervisor.disk.qcow2.QCow2Snapshot Functions ~~~~~~~~~ .. autoapisummary:: :nosignatures: dissect.hypervisor.disk.qcow2.offset_into_cluster dissect.hypervisor.disk.qcow2.offset_into_subcluster dissect.hypervisor.disk.qcow2.size_to_clusters dissect.hypervisor.disk.qcow2.size_to_subclusters dissect.hypervisor.disk.qcow2.offset_to_l1_index dissect.hypervisor.disk.qcow2.offset_to_l2_index dissect.hypervisor.disk.qcow2.offset_to_sc_index dissect.hypervisor.disk.qcow2.get_cluster_type dissect.hypervisor.disk.qcow2.get_subcluster_type dissect.hypervisor.disk.qcow2.get_subcluster_range_type dissect.hypervisor.disk.qcow2.count_contiguous_subclusters Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.hypervisor.disk.qcow2.HAS_ZSTD dissect.hypervisor.disk.qcow2.ALLOW_NO_BACKING_FILE .. py:data:: HAS_ZSTD :value: True .. py:data:: ALLOW_NO_BACKING_FILE :value: 1 .. py:class:: QCow2(fh, data_file=None, backing_file=None) Bases: :py:obj:`dissect.util.stream.AlignedStream` QCOW2 virtual disk implementation. Supports both data-file and backing-file, but must be manually given as arguments. If a data-file is required, it's required to manually pass a file like object as the `data_file` argument. A backing-file can optionally be skipped if `qcow2.ALLOW_NO_BACKING_FILE` is passed as the `backing_file` argument. In this case, any reads from a backing file will result in all null bytes being read. .. py:property:: has_backing_file .. py:property:: has_data_file .. py:property:: has_subclusters .. py:method:: snapshots() .. py:method:: l1_table() .. py:method:: l2_table(l2_offset) .. py:class:: L2Table(qcow2, offset) Convenience class for accessing the L2 table. .. py:method:: entry(idx) .. py:method:: bitmap(idx) .. py:class:: QCow2Snapshot(qcow2, offset) Wrapper class for snapshot table entries. .. py:method:: open() .. py:method:: l1_table() .. py:function:: offset_into_cluster(qcow2, offset) .. py:function:: offset_into_subcluster(qcow2, offset) .. py:function:: size_to_clusters(qcow2, size) .. py:function:: size_to_subclusters(qcow2, size) .. py:function:: offset_to_l1_index(qcow2, offset) .. py:function:: offset_to_l2_index(qcow2, offset) .. py:function:: offset_to_sc_index(qcow2, offset) .. py:function:: get_cluster_type(qcow2, l2_entry) .. py:function:: get_subcluster_type(qcow2, l2_entry, l2_bitmap, sc_index) .. py:function:: get_subcluster_range_type(qcow2, l2_entry, l2_bitmap, sc_from) .. py:function:: count_contiguous_subclusters(qcow2, nb_clusters, sc_index, l2_table, l2_index)