dissect.volume 3.18.dev1__tar.gz → 3.19.dev1__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_volume-3.18.dev1 → dissect_volume-3.19.dev1}/PKG-INFO +1 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/ddf/c_ddf.py +1 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/ddf/ddf.py +6 -2
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/__init__.py +2 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/partition.py +0 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/schemes/__init__.py +2 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/exceptions.py +3 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/lvm/__init__.py +2 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/lvm/lvm2.py +1 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/md/__init__.py +2 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/md/md.py +0 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/raid/stream.py +0 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/vinum/vinum.py +9 -4
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/vss.py +5 -2
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect.volume.egg-info/PKG-INFO +1 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/pyproject.toml +20 -2
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_docs/conf.py +2 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/vinum/test_config.py +4 -1
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/vinum/test_vinum.py +5 -2
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/.git-blame-ignore-revs +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/.gitattributes +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/COPYRIGHT +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/LICENSE +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/MANIFEST.in +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/README.md +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/ddf/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/ddf/c_ddf.pyi +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/disk.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/schemes/apm.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/schemes/bsd.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/schemes/gpt.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/disk/schemes/mbr.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/dm/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/dm/btree.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/dm/c_dm.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/dm/c_dm.pyi +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/dm/thin.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/ldm.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/lvm/c_lvm2.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/lvm/c_lvm2.pyi +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/lvm/metadata.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/lvm/physical.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/md/c_md.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/md/c_md.pyi +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/raid/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/raid/raid.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/vinum/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/vinum/c_vinum.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/vinum/c_vinum.pyi +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect/volume/vinum/config.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect.volume.egg-info/SOURCES.txt +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect.volume.egg-info/dependency_links.txt +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect.volume.egg-info/requires.txt +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect.volume.egg-info/top_level.txt +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/setup.cfg +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-raid1-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-raid1-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid1-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid1-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid10-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid10-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid10-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid10-4.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid4-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid4-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid5-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid5-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid5-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid6-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid6-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid6-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid6-4.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/apm.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/bsd.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/bsd64.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/gpt.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/gpt_4k.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/gpt_esxi.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/gpt_hybrid.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/gpt_no_name_xff.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/disk/mbr.bin +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-data.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-empty-data.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-empty-metadata.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-metadata.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/lvm/lvm-mirror-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/lvm/lvm-mirror-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/lvm/lvm-thin.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/lvm/lvm.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-90-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-90-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-90-raid1-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-90-raid1-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-linear-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-linear-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid0-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid0-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid0-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid1-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid1-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid10-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid10-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid4-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid4-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid4-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid5-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid5-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid5-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid6-1.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid6-2.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid6-3.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/md/md-raid6-4.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-concat_diska.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-concat_diskb.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-mirror_diska.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-mirror_diskb.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diska.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diskb.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diskc.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diskd.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-striped_diska.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-striped_diskb.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-stripedmirror_diska.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-stripedmirror_diskb.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-stripedmirror_diskc.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-stripedmirror_diskd.bin.gz +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_docs/Makefile +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_docs/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_docs/index.rst +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/conftest.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/ddf/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/ddf/test_ddf.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/disk/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/disk/test_apm.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/disk/test_bsd.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/disk/test_gpt.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/disk/test_mbr.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/dm/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/dm/test_dm.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/lvm/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/lvm/test_lvm.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/md/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/md/test_md.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/vinum/__init__.py +0 -0
- {dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.volume
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.19.dev1
|
|
4
4
|
Summary: A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import io
|
|
4
|
-
from typing import BinaryIO
|
|
4
|
+
from typing import TYPE_CHECKING, BinaryIO
|
|
5
5
|
|
|
6
6
|
from dissect.util import ts
|
|
7
7
|
|
|
@@ -10,12 +10,16 @@ from dissect.volume.exceptions import DDFError
|
|
|
10
10
|
from dissect.volume.raid.raid import (
|
|
11
11
|
RAID,
|
|
12
12
|
Configuration,
|
|
13
|
-
DiskMap,
|
|
14
13
|
PhysicalDisk,
|
|
15
14
|
VirtualDisk,
|
|
16
15
|
)
|
|
17
16
|
from dissect.volume.raid.stream import Layout, Level
|
|
18
17
|
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from dissect.volume.raid.raid import (
|
|
20
|
+
DiskMap,
|
|
21
|
+
)
|
|
22
|
+
|
|
19
23
|
DEFAULT_SECTOR_SIZE = 512
|
|
20
24
|
|
|
21
25
|
DECADE = 3600 * 24 * (365 * 10 + 2)
|
|
@@ -235,7 +235,6 @@ class Partition:
|
|
|
235
235
|
|
|
236
236
|
def translate_partition_type(type: int | str | UUID, prepend_type: bool = True) -> str:
|
|
237
237
|
"""Translate a partition type to a human-readable format."""
|
|
238
|
-
|
|
239
238
|
if not isinstance(type, str):
|
|
240
239
|
name = PARTITION_TYPES.get(type, "Unknown")
|
|
241
240
|
type = hex(type) if isinstance(type, int) else type
|
|
@@ -18,7 +18,7 @@ log.setLevel(os.getenv("DISSECT_LOG_LVM", "CRITICAL"))
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class LVM2:
|
|
21
|
-
"""Logical Volume Manager"""
|
|
21
|
+
"""Logical Volume Manager."""
|
|
22
22
|
|
|
23
23
|
def __init__(self, fh: list[BinaryIO | LVM2Device] | BinaryIO | LVM2Device):
|
|
24
24
|
self.fh = [fh] if not isinstance(fh, list) else fh
|
|
@@ -151,7 +151,6 @@ def find_super_block(fh: BinaryIO) -> tuple[int | None, int | None, int | None]:
|
|
|
151
151
|
A tuple containing the sector, major version, and minor version of the super block, or a
|
|
152
152
|
tuple of ``None`` if no super block was found.
|
|
153
153
|
"""
|
|
154
|
-
|
|
155
154
|
size = fh.size if (hasattr(fh, "size") and fh.size is not None) else fh.seek(0, io.SEEK_END)
|
|
156
155
|
size //= SECTOR_SIZE
|
|
157
156
|
|
|
@@ -198,7 +198,6 @@ class RAID456Stream(AlignedStream):
|
|
|
198
198
|
|
|
199
199
|
def _get_stripe_read_info(self, offset: int) -> tuple[int, int, int, int, int | None]:
|
|
200
200
|
"""Calculate the stripe, offset in the stripe, data disk, parity disk and "Q" parity disk for a given sector."""
|
|
201
|
-
|
|
202
201
|
# Reference: raid5_compute_sector
|
|
203
202
|
stripe_size = self.virtual_disk.stripe_size
|
|
204
203
|
raid_disks = self.virtual_disk.num_disks
|
|
@@ -15,23 +15,28 @@ from dissect.util import ts
|
|
|
15
15
|
from dissect.volume.raid.raid import (
|
|
16
16
|
RAID,
|
|
17
17
|
Configuration,
|
|
18
|
-
DiskMap,
|
|
19
18
|
PhysicalDisk,
|
|
20
19
|
VirtualDisk,
|
|
21
20
|
)
|
|
22
21
|
from dissect.volume.raid.stream import Layout, Level
|
|
23
22
|
from dissect.volume.vinum.c_vinum import MAGIC_ACTIVE, MAGIC_INACTIVE, c_vinum
|
|
24
23
|
from dissect.volume.vinum.config import (
|
|
25
|
-
SD,
|
|
26
|
-
Plex,
|
|
27
24
|
PlexOrg,
|
|
28
25
|
PlexState,
|
|
29
26
|
SDState,
|
|
30
|
-
Volume,
|
|
31
27
|
parse_vinum_config,
|
|
32
28
|
)
|
|
33
29
|
|
|
34
30
|
if TYPE_CHECKING:
|
|
31
|
+
from dissect.volume.raid.raid import (
|
|
32
|
+
DiskMap,
|
|
33
|
+
)
|
|
34
|
+
from dissect.volume.vinum.config import (
|
|
35
|
+
SD,
|
|
36
|
+
Plex,
|
|
37
|
+
Volume,
|
|
38
|
+
)
|
|
39
|
+
|
|
35
40
|
VinumPhysicalDiskDescriptor = BinaryIO | "VinumPhysicalDisk"
|
|
36
41
|
|
|
37
42
|
log = logging.getLogger(__name__)
|
|
@@ -6,13 +6,16 @@ import os
|
|
|
6
6
|
import uuid
|
|
7
7
|
from collections import defaultdict
|
|
8
8
|
from functools import cached_property
|
|
9
|
-
from typing import BinaryIO
|
|
9
|
+
from typing import TYPE_CHECKING, BinaryIO
|
|
10
10
|
|
|
11
|
-
from dissect.cstruct import
|
|
11
|
+
from dissect.cstruct import cstruct
|
|
12
12
|
from dissect.util.stream import AlignedStream
|
|
13
13
|
|
|
14
14
|
from dissect.volume.exceptions import Error
|
|
15
15
|
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from dissect.cstruct import Structure
|
|
18
|
+
|
|
16
19
|
log = logging.getLogger(__name__)
|
|
17
20
|
log.setLevel(os.getenv("DISSECT_LOG_VSS", "CRITICAL"))
|
|
18
21
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.volume
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.19.dev1
|
|
4
4
|
Summary: A Dissect module implementing a parser for different disk volume and partition systems, for example LVM2, GPT and MBR
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -94,7 +94,7 @@ select = [
|
|
|
94
94
|
"SLOT",
|
|
95
95
|
"SIM",
|
|
96
96
|
"TID",
|
|
97
|
-
"
|
|
97
|
+
"TC",
|
|
98
98
|
"PTH",
|
|
99
99
|
"PLC",
|
|
100
100
|
"TRY",
|
|
@@ -102,8 +102,25 @@ select = [
|
|
|
102
102
|
"PERF",
|
|
103
103
|
"FURB",
|
|
104
104
|
"RUF",
|
|
105
|
+
"D"
|
|
105
106
|
]
|
|
106
|
-
ignore = [
|
|
107
|
+
ignore = [
|
|
108
|
+
"E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM105", "TRY003", "PLC0415",
|
|
109
|
+
# Ignore some pydocstyle rules for now as they require a larger cleanup
|
|
110
|
+
"D1",
|
|
111
|
+
"D205",
|
|
112
|
+
"D301",
|
|
113
|
+
"D417",
|
|
114
|
+
# Seems bugged: https://github.com/astral-sh/ruff/issues/16824
|
|
115
|
+
"D402",
|
|
116
|
+
]
|
|
117
|
+
future-annotations = true
|
|
118
|
+
|
|
119
|
+
[tool.ruff.lint.pydocstyle]
|
|
120
|
+
convention = "google"
|
|
121
|
+
|
|
122
|
+
[tool.ruff.lint.flake8-type-checking]
|
|
123
|
+
strict = true
|
|
107
124
|
|
|
108
125
|
[tool.ruff.lint.per-file-ignores]
|
|
109
126
|
"tests/docs/**" = ["INP001"]
|
|
@@ -112,6 +129,7 @@ ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM1
|
|
|
112
129
|
[tool.ruff.lint.isort]
|
|
113
130
|
known-first-party = ["dissect.volume"]
|
|
114
131
|
known-third-party = ["dissect"]
|
|
132
|
+
required-imports = ["from __future__ import annotations"]
|
|
115
133
|
|
|
116
134
|
[tool.setuptools.packages.find]
|
|
117
135
|
include = ["dissect.*"]
|
|
@@ -14,7 +14,6 @@ from dissect.volume.vinum.config import (
|
|
|
14
14
|
PlexState,
|
|
15
15
|
SDState,
|
|
16
16
|
TokenizeError,
|
|
17
|
-
VinumConfigs,
|
|
18
17
|
Volume,
|
|
19
18
|
VolumeState,
|
|
20
19
|
_parse_plex_config,
|
|
@@ -30,6 +29,10 @@ from dissect.volume.vinum.config import (
|
|
|
30
29
|
if TYPE_CHECKING:
|
|
31
30
|
from collections.abc import Iterator
|
|
32
31
|
|
|
32
|
+
from dissect.volume.vinum.config import (
|
|
33
|
+
VinumConfigs,
|
|
34
|
+
)
|
|
35
|
+
|
|
33
36
|
CONF_TS = datetime.min.replace(tzinfo=timezone.utc)
|
|
34
37
|
|
|
35
38
|
|
|
@@ -2,11 +2,11 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from datetime import datetime, timezone
|
|
4
4
|
from io import BytesIO
|
|
5
|
-
from typing import BinaryIO
|
|
5
|
+
from typing import TYPE_CHECKING, BinaryIO
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
|
|
9
|
-
from dissect.volume.raid.stream import
|
|
9
|
+
from dissect.volume.raid.stream import Level
|
|
10
10
|
from dissect.volume.vinum.c_vinum import c_vinum
|
|
11
11
|
from dissect.volume.vinum.vinum import (
|
|
12
12
|
Vinum,
|
|
@@ -15,6 +15,9 @@ from dissect.volume.vinum.vinum import (
|
|
|
15
15
|
VinumPlexDisk,
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from dissect.volume.raid.stream import Layout
|
|
20
|
+
|
|
18
21
|
|
|
19
22
|
@pytest.mark.parametrize(
|
|
20
23
|
(
|
|
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
|
|
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_volume-3.18.dev1 → dissect_volume-3.19.dev1}/dissect.volume.egg-info/dependency_links.txt
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
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-raid1-1.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/ddf/ddf-raid0-raid1-2.bin.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
|
|
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_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-empty-data.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-empty-metadata.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/dm/dm-thin-metadata.bin.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
|
|
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_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-concat_diska.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-concat_diskb.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-mirror_diska.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-mirror_diskb.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diska.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diskb.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diskc.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-raid5_diskd.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-striped_diska.bin.gz
RENAMED
|
File without changes
|
{dissect_volume-3.18.dev1 → dissect_volume-3.19.dev1}/tests/_data/vinum/vinum-striped_diskb.bin.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|