dissect.fve 4.4.dev1__tar.gz → 4.5.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_fve-4.4.dev1 → dissect_fve-4.5.dev1}/PKG-INFO +2 -2
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/_pycryptodome.py +5 -1
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/metadata.py +3 -21
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/PKG-INFO +2 -2
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/pyproject.toml +22 -2
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tox.ini +7 -10
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/.git-blame-ignore-revs +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/.gitattributes +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/COPYRIGHT +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/LICENSE +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/MANIFEST.in +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/README.md +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/__init__.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/__init__.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/bde.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/c_bde.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/eow.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/information.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/bde/keys.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/__init__.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/base.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/elephant.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/crypto/utils.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/exceptions.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/__init__.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/af.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/c_luks.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/luks/luks.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/tools/__init__.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect/fve/tools/dd.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/SOURCES.txt +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/dependency_links.txt +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/entry_points.txt +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/requires.txt +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/dissect.fve.egg-info/top_level.txt +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/setup.cfg +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/__init__.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes-xts_128.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes-xts_256.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_128.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_128_diffuser.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_256.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/aes_256_diffuser.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/decrypted.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/eow_partial.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/recovery_key.bek +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/recovery_key.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/recovery_password.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/startup_key.bek +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/startup_key.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/suspended.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/vista.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/bde/win7_partial.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks1/aes-ecb.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks1/sha1.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-cbc-essiv.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-cbc-plain.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-ecb-pbkdf2.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-ecb.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/aes-xts-plain64.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_data/luks2/multiple-slots.bin.gz +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_docs/Makefile +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_docs/conf.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_docs/index.rst +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/_utils.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/conftest.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_bde.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_bde_eow_bitmap.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_crypto.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_luks.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_luks_kdf.py +0 -0
- {dissect_fve-4.4.dev1 → dissect_fve-4.5.dev1}/tests/test_luks_metadata.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.fve
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.5.dev1
|
|
4
4
|
Summary: A Dissect module implementing a parsers for full volume encryption implementations, currently Linux Unified Key Setup (LUKS1 and LUKS2) and Microsoft's Bitlocker Disk Encryption
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -17,7 +17,7 @@ Classifier: Topic :: Internet :: Log Analysis
|
|
|
17
17
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
18
18
|
Classifier: Topic :: Security
|
|
19
19
|
Classifier: Topic :: Utilities
|
|
20
|
-
Requires-Python:
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
License-File: COPYRIGHT
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import hashlib
|
|
4
4
|
import platform
|
|
5
5
|
import sys
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import TYPE_CHECKING, Any
|
|
7
7
|
|
|
8
8
|
from Crypto.Cipher import AES
|
|
9
9
|
from Crypto.Util import _raw_api
|
|
@@ -18,6 +18,10 @@ else:
|
|
|
18
18
|
# On PyPy the opposite is true, and also just use this as the default fallback
|
|
19
19
|
from Crypto.Util.strxor import strxor as xor
|
|
20
20
|
|
|
21
|
+
|
|
22
|
+
if TYPE_CHECKING:
|
|
23
|
+
from collections.abc import Callable
|
|
24
|
+
|
|
21
25
|
POINTER_SIZE = 8 if sys.maxsize > 2**32 else 4
|
|
22
26
|
|
|
23
27
|
|
|
@@ -2,16 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import base64
|
|
4
4
|
import json
|
|
5
|
-
import sys
|
|
6
5
|
from dataclasses import dataclass, field, fields
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
from types import UnionType # novermin
|
|
10
|
-
else:
|
|
11
|
-
# Python 3.9
|
|
12
|
-
from typing import Union as UnionType
|
|
13
|
-
|
|
14
|
-
from typing import Any, Optional, get_args, get_origin, get_type_hints
|
|
6
|
+
from types import UnionType
|
|
7
|
+
from typing import Any, get_args, get_origin, get_type_hints
|
|
15
8
|
|
|
16
9
|
from dissect.fve.luks.c_luks import c_luks
|
|
17
10
|
|
|
@@ -45,7 +38,7 @@ class JsonItem:
|
|
|
45
38
|
def _parse_type(type_: Any, value: str | int | dict | list) -> str | int | dict | list | bytes:
|
|
46
39
|
result = None
|
|
47
40
|
|
|
48
|
-
if type_ ==
|
|
41
|
+
if type_ == type_ | None:
|
|
49
42
|
result = JsonItem._parse_type(get_args(type_)[0], value) if value is not None else None
|
|
50
43
|
elif get_origin(type_) is UnionType:
|
|
51
44
|
for atype in get_args(type_):
|
|
@@ -241,14 +234,3 @@ class Metadata(JsonItem):
|
|
|
241
234
|
)
|
|
242
235
|
|
|
243
236
|
return Metadata(config, keyslots, digests, segments, tokens)
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
# Backward compatibility with Python 3.9
|
|
247
|
-
if sys.version_info < (3, 10):
|
|
248
|
-
items = list(globals().values())
|
|
249
|
-
for obj in items:
|
|
250
|
-
if isinstance(obj, type) and issubclass(obj, JsonItem):
|
|
251
|
-
for k, v in obj.__annotations__.items():
|
|
252
|
-
if isinstance(v, str) and "|" in v:
|
|
253
|
-
# Because we import Union as UnionType
|
|
254
|
-
obj.__annotations__[k] = f"UnionType[{v.replace(' | ', ', ')}]"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.fve
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.5.dev1
|
|
4
4
|
Summary: A Dissect module implementing a parsers for full volume encryption implementations, currently Linux Unified Key Setup (LUKS1 and LUKS2) and Microsoft's Bitlocker Disk Encryption
|
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
|
@@ -17,7 +17,7 @@ Classifier: Topic :: Internet :: Log Analysis
|
|
|
17
17
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
18
18
|
Classifier: Topic :: Security
|
|
19
19
|
Classifier: Topic :: Utilities
|
|
20
|
-
Requires-Python:
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
License-File: COPYRIGHT
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
name = "dissect.fve"
|
|
7
7
|
description = "A Dissect module implementing a parsers for full volume encryption implementations, currently Linux Unified Key Setup (LUKS1 and LUKS2) and Microsoft's Bitlocker Disk Encryption"
|
|
8
8
|
readme = "README.md"
|
|
9
|
-
requires-python = "
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
10
|
license = "AGPL-3.0-or-later"
|
|
11
11
|
license-files = ["LICENSE", "COPYRIGHT"]
|
|
12
12
|
authors = [
|
|
@@ -47,12 +47,32 @@ dev = [
|
|
|
47
47
|
"dissect.util>=3.22.dev,<4.0.dev",
|
|
48
48
|
]
|
|
49
49
|
|
|
50
|
+
[dependency-groups]
|
|
51
|
+
test = [
|
|
52
|
+
"pytest",
|
|
53
|
+
]
|
|
54
|
+
lint = [
|
|
55
|
+
"ruff==0.13.1",
|
|
56
|
+
"vermin",
|
|
57
|
+
]
|
|
58
|
+
build = [
|
|
59
|
+
"build",
|
|
60
|
+
]
|
|
61
|
+
debug = [
|
|
62
|
+
"ipdb",
|
|
63
|
+
]
|
|
64
|
+
dev = [
|
|
65
|
+
{include-group = "test"},
|
|
66
|
+
{include-group = "lint"},
|
|
67
|
+
{include-group = "debug"},
|
|
68
|
+
]
|
|
69
|
+
|
|
50
70
|
[project.scripts]
|
|
51
71
|
fve-dd = "dissect.fve.tools.dd: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
|
|
@@ -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
|
|
@@ -24,27 +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.12.1
|
|
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.12.1
|
|
44
|
-
vermin
|
|
40
|
+
dependency_groups = lint
|
|
45
41
|
commands =
|
|
46
42
|
ruff check dissect tests
|
|
47
|
-
|
|
43
|
+
ruff format --check dissect tests
|
|
44
|
+
vermin -t=3.10- --no-tips --lint dissect tests
|
|
48
45
|
|
|
49
46
|
[testenv:docs-build]
|
|
50
47
|
allowlist_externals = make
|
|
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
|
|
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
|