dissect.volume 3.14.dev4__tar.gz → 3.15.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.
Files changed (139) hide show
  1. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/PKG-INFO +3 -2
  2. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/raid/raid.py +5 -2
  3. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect.volume.egg-info/PKG-INFO +3 -2
  4. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_md.py +15 -1
  5. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/.git-blame-ignore-revs +0 -0
  6. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/.gitattributes +0 -0
  7. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/COPYRIGHT +0 -0
  8. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/LICENSE +0 -0
  9. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/MANIFEST.in +0 -0
  10. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/README.md +0 -0
  11. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/__init__.py +0 -0
  12. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/ddf/__init__.py +0 -0
  13. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/ddf/c_ddf.py +0 -0
  14. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/ddf/ddf.py +0 -0
  15. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/__init__.py +0 -0
  16. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/disk.py +0 -0
  17. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/partition.py +0 -0
  18. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/schemes/__init__.py +0 -0
  19. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/schemes/apm.py +0 -0
  20. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/schemes/bsd.py +0 -0
  21. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/schemes/gpt.py +0 -0
  22. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/disk/schemes/mbr.py +0 -0
  23. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/dm/__init__.py +0 -0
  24. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/dm/btree.py +0 -0
  25. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/dm/c_dm.py +0 -0
  26. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/dm/thin.py +0 -0
  27. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/exceptions.py +0 -0
  28. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/ldm.py +0 -0
  29. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/lvm/__init__.py +0 -0
  30. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/lvm/c_lvm2.py +0 -0
  31. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/lvm/lvm2.py +0 -0
  32. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/lvm/metadata.py +0 -0
  33. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/lvm/physical.py +0 -0
  34. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/md/__init__.py +0 -0
  35. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/md/c_md.py +0 -0
  36. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/md/md.py +0 -0
  37. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/raid/__init__.py +0 -0
  38. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/raid/stream.py +0 -0
  39. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/vinum/__init__.py +0 -0
  40. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/vinum/c_vinum.py +0 -0
  41. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/vinum/config.py +0 -0
  42. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/vinum/vinum.py +0 -0
  43. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect/volume/vss.py +0 -0
  44. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect.volume.egg-info/SOURCES.txt +0 -0
  45. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect.volume.egg-info/dependency_links.txt +0 -0
  46. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect.volume.egg-info/requires.txt +0 -0
  47. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/dissect.volume.egg-info/top_level.txt +0 -0
  48. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/pyproject.toml +0 -0
  49. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/setup.cfg +0 -0
  50. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/__init__.py +0 -0
  51. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid0-1.bin.gz +0 -0
  52. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid0-2.bin.gz +0 -0
  53. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid0-3.bin.gz +0 -0
  54. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid0-raid1-1.bin.gz +0 -0
  55. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid0-raid1-2.bin.gz +0 -0
  56. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid1-1.bin.gz +0 -0
  57. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid1-2.bin.gz +0 -0
  58. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid10-1.bin.gz +0 -0
  59. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid10-2.bin.gz +0 -0
  60. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid10-3.bin.gz +0 -0
  61. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid10-4.bin.gz +0 -0
  62. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid4-1.bin.gz +0 -0
  63. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid4-2.bin.gz +0 -0
  64. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid5-1.bin.gz +0 -0
  65. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid5-2.bin.gz +0 -0
  66. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid5-3.bin.gz +0 -0
  67. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid6-1.bin.gz +0 -0
  68. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid6-2.bin.gz +0 -0
  69. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid6-3.bin.gz +0 -0
  70. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/ddf/ddf-raid6-4.bin.gz +0 -0
  71. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/apm.bin +0 -0
  72. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/bsd.bin +0 -0
  73. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/bsd64.bin.gz +0 -0
  74. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/gpt.bin +0 -0
  75. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/gpt_4k.bin +0 -0
  76. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/gpt_esxi.bin +0 -0
  77. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/gpt_hybrid.bin +0 -0
  78. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/gpt_no_name_xff.bin +0 -0
  79. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/disk/mbr.bin +0 -0
  80. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/dm/dm-thin-data.bin.gz +0 -0
  81. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/dm/dm-thin-empty-data.bin.gz +0 -0
  82. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/dm/dm-thin-empty-metadata.bin.gz +0 -0
  83. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/dm/dm-thin-metadata.bin.gz +0 -0
  84. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/lvm/lvm-mirror-1.bin.gz +0 -0
  85. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/lvm/lvm-mirror-2.bin.gz +0 -0
  86. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/lvm/lvm-thin.bin.gz +0 -0
  87. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/lvm/lvm.bin.gz +0 -0
  88. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-90-1.bin.gz +0 -0
  89. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-90-2.bin.gz +0 -0
  90. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-90-raid1-1.bin.gz +0 -0
  91. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-90-raid1-2.bin.gz +0 -0
  92. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-linear-1.bin.gz +0 -0
  93. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-linear-2.bin.gz +0 -0
  94. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid0-1.bin.gz +0 -0
  95. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid0-2.bin.gz +0 -0
  96. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid0-3.bin.gz +0 -0
  97. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid1-1.bin.gz +0 -0
  98. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid1-2.bin.gz +0 -0
  99. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid10-1.bin.gz +0 -0
  100. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid10-2.bin.gz +0 -0
  101. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid4-1.bin.gz +0 -0
  102. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid4-2.bin.gz +0 -0
  103. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid4-3.bin.gz +0 -0
  104. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid5-1.bin.gz +0 -0
  105. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid5-2.bin.gz +0 -0
  106. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid5-3.bin.gz +0 -0
  107. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid6-1.bin.gz +0 -0
  108. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid6-2.bin.gz +0 -0
  109. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid6-3.bin.gz +0 -0
  110. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/md/md-raid6-4.bin.gz +0 -0
  111. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-concat_diska.bin.gz +0 -0
  112. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-concat_diskb.bin.gz +0 -0
  113. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-mirror_diska.bin.gz +0 -0
  114. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-mirror_diskb.bin.gz +0 -0
  115. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-raid5_diska.bin.gz +0 -0
  116. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-raid5_diskb.bin.gz +0 -0
  117. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-raid5_diskc.bin.gz +0 -0
  118. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-raid5_diskd.bin.gz +0 -0
  119. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-striped_diska.bin.gz +0 -0
  120. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-striped_diskb.bin.gz +0 -0
  121. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-stripedmirror_diska.bin.gz +0 -0
  122. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-stripedmirror_diskb.bin.gz +0 -0
  123. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-stripedmirror_diskc.bin.gz +0 -0
  124. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_data/vinum/vinum-stripedmirror_diskd.bin.gz +0 -0
  125. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_docs/Makefile +0 -0
  126. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_docs/__init__.py +0 -0
  127. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_docs/conf.py +0 -0
  128. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/_docs/index.rst +0 -0
  129. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/conftest.py +0 -0
  130. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_apm.py +0 -0
  131. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_bsd.py +0 -0
  132. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_ddf.py +0 -0
  133. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_dm.py +0 -0
  134. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_gpt.py +0 -0
  135. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_lvm.py +0 -0
  136. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_mbr.py +0 -0
  137. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_vinum.py +0 -0
  138. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tests/test_vinum_config.py +0 -0
  139. {dissect_volume-3.14.dev4 → dissect_volume-3.15.dev1}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dissect.volume
3
- Version: 3.14.dev4
3
+ Version: 3.15.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: Affero General Public License v3
@@ -27,6 +27,7 @@ Requires-Dist: dissect.util<4,>3
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
29
29
  Requires-Dist: dissect.util<4.0.dev,>=3.0.dev; extra == "dev"
30
+ Dynamic: license-file
30
31
 
31
32
  # dissect.volume
32
33
 
@@ -66,8 +66,11 @@ class VirtualDisk:
66
66
  if self.level == Level.RAID0:
67
67
  return RAID0Stream(self)
68
68
  if self.level == Level.RAID1:
69
- # Don't really care which mirror to read from, so just open the first disk
70
- return self.disk_map[0][1].open()
69
+ # Don't really care which mirror to read from, so just open the first disk we have.
70
+ # We don't know if we have the first disk or the n-th disk so we select the first
71
+ # available disk using an iterable.
72
+ _, (_, disk) = next(iter(self.disk_map.items()))
73
+ return disk.open()
71
74
  if self.level in (Level.RAID4, Level.RAID5, Level.RAID6):
72
75
  return RAID456Stream(self)
73
76
  if self.level == Level.RAID10:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dissect.volume
3
- Version: 3.14.dev4
3
+ Version: 3.15.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: Affero General Public License v3
@@ -27,6 +27,7 @@ Requires-Dist: dissect.util<4,>3
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
29
29
  Requires-Dist: dissect.util<4.0.dev,>=3.0.dev; extra == "dev"
30
+ Dynamic: license-file
30
31
 
31
32
  # dissect.volume
32
33
 
@@ -38,7 +38,7 @@ def test_md_read(
38
38
 
39
39
  fh = vd.open()
40
40
  for i in range(1, num_test_blocks + 1):
41
- assert fh.read(4096) == i.to_bytes(2, "little") * 2048
41
+ assert fh.read(4096) == i.to_bytes(2, "little") * 2048, f"Failed at block {i}"
42
42
 
43
43
 
44
44
  def test_md_raid0_zones(md_raid0: list[BinaryIO]) -> None:
@@ -69,3 +69,17 @@ def test_md_search_sb_none_size() -> None:
69
69
  fh.size = None
70
70
 
71
71
  assert find_super_block(fh) == (None, None, None)
72
+
73
+
74
+ def test_md_raid1_multiple_disks(md_raid1: list[BinaryIO]) -> None:
75
+ md = MD(md_raid1[-1:])
76
+
77
+ conf = md.configurations
78
+ vd = conf[0].virtual_disks[0]
79
+
80
+ assert vd.level == 1
81
+ assert vd.size == 0x200000
82
+
83
+ fh = vd.open()
84
+ for i in range(1, 512 + 1):
85
+ assert fh.read(4096) == i.to_bytes(2, "little") * 2048, f"Failed at block {i}"