dissect.hypervisor 3.20.dev1__tar.gz → 3.20.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/PKG-INFO +3 -4
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_asif.pyi +1 -2
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_qcow2.pyi +1 -2
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vhdx.py +2 -2
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/util/vmtar.py +2 -2
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/PKG-INFO +3 -4
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/pyproject.toml +25 -8
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/test_hdd.py +1 -1
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/test_qcow2.py +5 -5
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tox.ini +8 -12
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/.git-blame-ignore-revs +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/COPYRIGHT +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/LICENSE +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/MANIFEST.in +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/README.md +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/c_hyperv.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/hyperv.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/ovf.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/pvs.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/vbox.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/vmx.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/asif.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_asif.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_hdd.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_qcow2.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vdi.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vhd.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vhdx.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vmdk.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/hdd.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/qcow2.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vdi.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vhd.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vmdk.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/exceptions.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/tools/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/tools/envelope.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/tools/vmtar.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/util/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/util/envelope.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/SOURCES.txt +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/dependency_links.txt +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/entry_points.txt +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/requires.txt +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/top_level.txt +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/setup.cfg +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/descriptor/hyperv/test.VMRS +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/descriptor/hyperv/test.vmcx +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/descriptor/vmx/encrypted.vmx +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/asif/basic.asif.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/expanding.hdd/DiskDescriptor.xml +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/expanding.hdd/expanding.hdd +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/expanding.hdd/expanding.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/plain.hdd/DiskDescriptor.xml +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/plain.hdd/plain.hdd +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/plain.hdd/plain.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/DiskDescriptor.xml +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd.1.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd.2.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd.3.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd.4.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/hdd/split.hdd/split.hdd.5.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/backing-chain-1.qcow2.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/backing-chain-2.qcow2.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/backing-chain-3.qcow2.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/basic.qcow2.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/data-file.bin.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/data-file.qcow2.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/snapshot.qcow2.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhd/dynamic.vhd.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhd/fixed.vhd.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhdx/differencing.avhdx.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhdx/dynamic.vhdx.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhdx/fixed.vhdx.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vmdk/sesparse.vmdk.gz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/util/envelope/encryption.info +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/util/envelope/local.tgz.ve +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/util/vmtar/test.vgz +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_docs/Makefile +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_docs/conf.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_docs/index.rst +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/conftest.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/test_hyperv.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/test_ovf.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/test_pvs.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/test_vbox.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/test_vmx.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/test_asif.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/test_vhd.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/test_vhdx.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/disk/test_vmdk.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/util/__init__.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/util/test_envelope.py +0 -0
- {dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/util/test_vmtar.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.hypervisor
|
|
3
|
-
Version: 3.20.
|
|
3
|
+
Version: 3.20.dev2
|
|
4
4
|
Summary: A Dissect module implementing parsers for various hypervisor disk, backup and configuration files
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
|
-
License:
|
|
6
|
+
License-Expression: AGPL-3.0-or-later
|
|
7
7
|
Project-URL: homepage, https://dissect.tools
|
|
8
8
|
Project-URL: documentation, https://docs.dissect.tools/en/latest/projects/dissect.hypervisor
|
|
9
9
|
Project-URL: repository, https://github.com/fox-it/dissect.hypervisor
|
|
@@ -11,14 +11,13 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
11
11
|
Classifier: Environment :: Console
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Intended Audience :: Information Technology
|
|
14
|
-
Classifier: License :: OSI Approved
|
|
15
14
|
Classifier: Operating System :: OS Independent
|
|
16
15
|
Classifier: Programming Language :: Python :: 3
|
|
17
16
|
Classifier: Topic :: Internet :: Log Analysis
|
|
18
17
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
19
18
|
Classifier: Topic :: Security
|
|
20
19
|
Classifier: Topic :: Utilities
|
|
21
|
-
Requires-Python:
|
|
20
|
+
Requires-Python: >=3.10
|
|
22
21
|
Description-Content-Type: text/markdown
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
License-File: COPYRIGHT
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_asif.pyi
RENAMED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Generated by cstruct-stubgen
|
|
2
|
-
from typing import BinaryIO, Literal, overload
|
|
2
|
+
from typing import BinaryIO, Literal, TypeAlias, overload
|
|
3
3
|
|
|
4
4
|
import dissect.cstruct as __cs__
|
|
5
|
-
from typing_extensions import TypeAlias
|
|
6
5
|
|
|
7
6
|
class _c_asif(__cs__.cstruct):
|
|
8
7
|
ASIF_HEADER_SIGNATURE: Literal[1936221303] = ...
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_qcow2.pyi
RENAMED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Generated by cstruct-stubgen
|
|
2
|
-
from typing import BinaryIO, Literal, overload
|
|
2
|
+
from typing import BinaryIO, Literal, TypeAlias, overload
|
|
3
3
|
|
|
4
4
|
import dissect.cstruct as __cs__
|
|
5
|
-
from typing_extensions import TypeAlias
|
|
6
5
|
|
|
7
6
|
class _c_qcow2(__cs__.cstruct):
|
|
8
7
|
MIN_CLUSTER_BITS: Literal[9] = ...
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vhdx.py
RENAMED
|
@@ -7,7 +7,7 @@ import logging
|
|
|
7
7
|
import os
|
|
8
8
|
from functools import lru_cache
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import TYPE_CHECKING, Any, BinaryIO,
|
|
10
|
+
from typing import TYPE_CHECKING, Any, BinaryIO, Final
|
|
11
11
|
from uuid import UUID
|
|
12
12
|
|
|
13
13
|
from dissect.util.stream import AlignedStream
|
|
@@ -29,7 +29,7 @@ from dissect.hypervisor.disk.c_vhdx import (
|
|
|
29
29
|
from dissect.hypervisor.exceptions import InvalidSignature, InvalidVirtualDisk
|
|
30
30
|
|
|
31
31
|
if TYPE_CHECKING:
|
|
32
|
-
from collections.abc import Iterator
|
|
32
|
+
from collections.abc import Callable, Iterator
|
|
33
33
|
|
|
34
34
|
log = logging.getLogger(__name__)
|
|
35
35
|
log.setLevel(os.getenv("DISSECT_LOG_VHDX", "CRITICAL"))
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/util/vmtar.py
RENAMED
|
@@ -62,12 +62,12 @@ class VisorTarFile(tarfile.TarFile):
|
|
|
62
62
|
raise tarfile.TarError("visor currently only supports read mode")
|
|
63
63
|
|
|
64
64
|
try:
|
|
65
|
-
from gzip import GzipFile
|
|
65
|
+
from gzip import GzipFile # noqa: PLC0415
|
|
66
66
|
except ImportError:
|
|
67
67
|
raise tarfile.CompressionError("gzip module is not available") from None
|
|
68
68
|
|
|
69
69
|
try:
|
|
70
|
-
from lzma import LZMAError, LZMAFile
|
|
70
|
+
from lzma import LZMAError, LZMAFile # noqa: PLC0415
|
|
71
71
|
except ImportError:
|
|
72
72
|
raise tarfile.CompressionError("lzma module is not available") from None
|
|
73
73
|
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect.hypervisor.egg-info/PKG-INFO
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.hypervisor
|
|
3
|
-
Version: 3.20.
|
|
3
|
+
Version: 3.20.dev2
|
|
4
4
|
Summary: A Dissect module implementing parsers for various hypervisor disk, backup and configuration files
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
|
-
License:
|
|
6
|
+
License-Expression: AGPL-3.0-or-later
|
|
7
7
|
Project-URL: homepage, https://dissect.tools
|
|
8
8
|
Project-URL: documentation, https://docs.dissect.tools/en/latest/projects/dissect.hypervisor
|
|
9
9
|
Project-URL: repository, https://github.com/fox-it/dissect.hypervisor
|
|
@@ -11,14 +11,13 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
11
11
|
Classifier: Environment :: Console
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Intended Audience :: Information Technology
|
|
14
|
-
Classifier: License :: OSI Approved
|
|
15
14
|
Classifier: Operating System :: OS Independent
|
|
16
15
|
Classifier: Programming Language :: Python :: 3
|
|
17
16
|
Classifier: Topic :: Internet :: Log Analysis
|
|
18
17
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
19
18
|
Classifier: Topic :: Security
|
|
20
19
|
Classifier: Topic :: Utilities
|
|
21
|
-
Requires-Python:
|
|
20
|
+
Requires-Python: >=3.10
|
|
22
21
|
Description-Content-Type: text/markdown
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
License-File: COPYRIGHT
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=
|
|
2
|
+
requires = ["setuptools>=77.0.0", "setuptools_scm[toml]>=6.4.0"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dissect.hypervisor"
|
|
7
7
|
description = "A Dissect module implementing parsers for various hypervisor disk, backup and configuration files"
|
|
8
8
|
readme = "README.md"
|
|
9
|
-
requires-python = "
|
|
10
|
-
license
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
license = "AGPL-3.0-or-later"
|
|
11
|
+
license-files = ["LICENSE", "COPYRIGHT"]
|
|
11
12
|
authors = [
|
|
12
13
|
{name = "Dissect Team", email = "dissect@fox-it.com"}
|
|
13
14
|
]
|
|
@@ -16,7 +17,6 @@ classifiers = [
|
|
|
16
17
|
"Environment :: Console",
|
|
17
18
|
"Intended Audience :: Developers",
|
|
18
19
|
"Intended Audience :: Information Technology",
|
|
19
|
-
"License :: OSI Approved",
|
|
20
20
|
"Operating System :: OS Independent",
|
|
21
21
|
"Programming Language :: Python :: 3",
|
|
22
22
|
"Topic :: Internet :: Log Analysis",
|
|
@@ -46,13 +46,33 @@ dev = [
|
|
|
46
46
|
"dissect.util>=3.0.dev,<4.0.dev",
|
|
47
47
|
]
|
|
48
48
|
|
|
49
|
+
[dependency-groups]
|
|
50
|
+
test = [
|
|
51
|
+
"pytest",
|
|
52
|
+
]
|
|
53
|
+
lint = [
|
|
54
|
+
"ruff==0.13.1",
|
|
55
|
+
"vermin",
|
|
56
|
+
]
|
|
57
|
+
build = [
|
|
58
|
+
"build",
|
|
59
|
+
]
|
|
60
|
+
debug = [
|
|
61
|
+
"ipdb",
|
|
62
|
+
]
|
|
63
|
+
dev = [
|
|
64
|
+
{include-group = "test"},
|
|
65
|
+
{include-group = "lint"},
|
|
66
|
+
{include-group = "debug"},
|
|
67
|
+
]
|
|
68
|
+
|
|
49
69
|
[project.scripts]
|
|
50
70
|
envelope-decrypt = "dissect.hypervisor.tools.envelope:main"
|
|
51
71
|
vmtar = "dissect.hypervisor.tools.vmtar:main"
|
|
52
72
|
|
|
53
73
|
[tool.ruff]
|
|
54
74
|
line-length = 120
|
|
55
|
-
required-version = ">=0.
|
|
75
|
+
required-version = ">=0.13.1"
|
|
56
76
|
|
|
57
77
|
[tool.ruff.format]
|
|
58
78
|
docstring-code-format = true
|
|
@@ -102,9 +122,6 @@ ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM1
|
|
|
102
122
|
known-first-party = ["dissect.hypervisor"]
|
|
103
123
|
known-third-party = ["dissect"]
|
|
104
124
|
|
|
105
|
-
[tool.setuptools]
|
|
106
|
-
license-files = ["LICENSE", "COPYRIGHT"]
|
|
107
|
-
|
|
108
125
|
[tool.setuptools.packages.find]
|
|
109
126
|
include = ["dissect.*"]
|
|
110
127
|
|
|
@@ -61,7 +61,7 @@ def test_split_hdd(split_hdd: Path) -> None:
|
|
|
61
61
|
|
|
62
62
|
start = 0
|
|
63
63
|
|
|
64
|
-
for storage, split_size in zip(storages, split_sizes):
|
|
64
|
+
for storage, split_size in zip(storages, split_sizes, strict=False):
|
|
65
65
|
assert storage.start == start
|
|
66
66
|
assert storage.end == start + split_size
|
|
67
67
|
assert len(storage.images) == 1
|
|
@@ -31,7 +31,7 @@ def test_basic(basic_qcow2: BinaryIO) -> None:
|
|
|
31
31
|
def test_data_file(data_file_qcow2: Path) -> None:
|
|
32
32
|
# Test with file handle
|
|
33
33
|
with gzip.open(data_file_qcow2, "rb") as fh:
|
|
34
|
-
with pytest.raises(Error, match="data-file required but not provided
|
|
34
|
+
with pytest.raises(Error, match=r"data-file required but not provided \(image_data_file = 'data-file.bin'\)"):
|
|
35
35
|
QCow2(fh)
|
|
36
36
|
|
|
37
37
|
with gzip.open(data_file_qcow2.with_name("data-file.bin.gz"), "rb") as fh_bin:
|
|
@@ -47,7 +47,7 @@ def test_data_file(data_file_qcow2: Path) -> None:
|
|
|
47
47
|
# Test with allow_no_data_file
|
|
48
48
|
qcow2 = QCow2(fh, allow_no_data_file=True)
|
|
49
49
|
assert qcow2.data_file is None
|
|
50
|
-
with pytest.raises(Error, match="data-file required but not provided
|
|
50
|
+
with pytest.raises(Error, match=r"data-file required but not provided \(image_data_file = 'data-file.bin'\)"):
|
|
51
51
|
qcow2.open()
|
|
52
52
|
|
|
53
53
|
# Test with Path
|
|
@@ -68,12 +68,12 @@ def test_backing_file(backing_chain_qcow2: tuple[Path, Path, Path]) -> None:
|
|
|
68
68
|
# Test with file handle
|
|
69
69
|
with gzip.open(file1, "rb") as fh1, gzip.open(file2, "rb") as fh2, gzip.open(file3, "rb") as fh3:
|
|
70
70
|
with pytest.raises(
|
|
71
|
-
Error, match="backing-file required but not provided
|
|
71
|
+
Error, match=r"backing-file required but not provided \(auto_backing_file = 'backing-chain-2.qcow2'\)"
|
|
72
72
|
):
|
|
73
73
|
QCow2(fh1)
|
|
74
74
|
|
|
75
75
|
with pytest.raises(
|
|
76
|
-
Error, match="backing-file required but not provided
|
|
76
|
+
Error, match=r"backing-file required but not provided \(auto_backing_file = 'backing-chain-3.qcow2'\)"
|
|
77
77
|
):
|
|
78
78
|
QCow2(fh1, backing_file=fh2)
|
|
79
79
|
|
|
@@ -87,7 +87,7 @@ def test_backing_file(backing_chain_qcow2: tuple[Path, Path, Path]) -> None:
|
|
|
87
87
|
qcow2 = QCow2(fh1, allow_no_backing_file=True)
|
|
88
88
|
assert qcow2.backing_file is None
|
|
89
89
|
with pytest.raises(
|
|
90
|
-
Error, match="backing-file required but not provided
|
|
90
|
+
Error, match=r"backing-file required but not provided \(auto_backing_file = 'backing-chain-2.qcow2'\)"
|
|
91
91
|
):
|
|
92
92
|
qcow2.open()
|
|
93
93
|
|
|
@@ -4,7 +4,7 @@ envlist = lint, py3, pypy3
|
|
|
4
4
|
# requires if they are not available on the host system. This requires the
|
|
5
5
|
# locally installed tox to have a minimum version 3.3.0. This means the names
|
|
6
6
|
# of the configuration options are still according to the tox 3.x syntax.
|
|
7
|
-
minversion = 4.
|
|
7
|
+
minversion = 4.27.0
|
|
8
8
|
# This version of virtualenv will install setuptools version 68.2.2 and pip
|
|
9
9
|
# 23.3.1. These versions fully support python projects defined only through a
|
|
10
10
|
# pyproject.toml file (PEP-517/PEP-518/PEP-621). This pip version also support
|
|
@@ -14,9 +14,9 @@ requires = virtualenv>=20.24.6
|
|
|
14
14
|
[testenv]
|
|
15
15
|
extras = dev
|
|
16
16
|
deps =
|
|
17
|
-
pytest
|
|
18
17
|
pytest-cov
|
|
19
18
|
coverage
|
|
19
|
+
dependency_groups = test
|
|
20
20
|
commands =
|
|
21
21
|
pytest --basetemp="{envtmpdir}" {posargs:--color=yes --cov=dissect --cov-report=term-missing -v tests}
|
|
22
22
|
coverage report
|
|
@@ -24,28 +24,24 @@ commands =
|
|
|
24
24
|
|
|
25
25
|
[testenv:build]
|
|
26
26
|
package = skip
|
|
27
|
-
|
|
28
|
-
build
|
|
27
|
+
dependency_groups = build
|
|
29
28
|
commands =
|
|
30
29
|
pyproject-build
|
|
31
30
|
|
|
32
31
|
[testenv:fix]
|
|
33
32
|
package = skip
|
|
34
|
-
|
|
35
|
-
ruff==0.11.10
|
|
33
|
+
dependency_groups = lint
|
|
36
34
|
commands =
|
|
37
|
-
ruff format dissect tests
|
|
38
35
|
ruff check --fix dissect tests
|
|
36
|
+
ruff format dissect tests
|
|
39
37
|
|
|
40
38
|
[testenv:lint]
|
|
41
39
|
package = skip
|
|
42
|
-
|
|
43
|
-
ruff==0.11.10
|
|
44
|
-
vermin
|
|
40
|
+
dependency_groups = lint
|
|
45
41
|
commands =
|
|
46
|
-
ruff format --check dissect tests
|
|
47
42
|
ruff check dissect tests
|
|
48
|
-
|
|
43
|
+
ruff format --check dissect tests
|
|
44
|
+
vermin -t=3.10- --no-tips --lint dissect tests
|
|
49
45
|
|
|
50
46
|
[testenv:docs-build]
|
|
51
47
|
allowlist_externals = make
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/ovf.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/pvs.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/vbox.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/descriptor/vmx.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/__init__.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/asif.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_asif.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_hdd.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_qcow2.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vdi.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vhd.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vhdx.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/c_vmdk.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/hdd.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/qcow2.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vdi.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vhd.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/disk/vmdk.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/exceptions.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/tools/__init__.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/tools/envelope.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/tools/vmtar.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/util/__init__.py
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/dissect/hypervisor/util/envelope.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/asif/basic.asif.gz
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/qcow2/basic.qcow2.gz
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhd/dynamic.vhd.gz
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhd/fixed.vhd.gz
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhdx/dynamic.vhdx.gz
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vhdx/fixed.vhdx.gz
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/disk/vmdk/sesparse.vmdk.gz
RENAMED
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/util/envelope/local.tgz.ve
RENAMED
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/_data/util/vmtar/test.vgz
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dissect_hypervisor-3.20.dev1 → dissect_hypervisor-3.20.dev2}/tests/descriptor/test_hyperv.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|