dissect.fve 4.2.dev2__tar.gz → 4.3.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_fve-4.2.dev2 → dissect_fve-4.3.dev2}/PKG-INFO +5 -6
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/crypto/__init__.py +5 -18
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/crypto/_pycryptodome.py +17 -10
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/crypto/elephant.py +6 -4
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect.fve.egg-info/PKG-INFO +5 -6
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect.fve.egg-info/requires.txt +3 -3
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/pyproject.toml +7 -10
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tox.ini +3 -3
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/.git-blame-ignore-revs +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/.gitattributes +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/COPYRIGHT +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/LICENSE +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/MANIFEST.in +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/README.md +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/__init__.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/bde/__init__.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/bde/bde.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/bde/c_bde.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/bde/eow.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/bde/information.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/bde/keys.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/crypto/base.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/crypto/utils.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/exceptions.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/luks/__init__.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/luks/af.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/luks/c_luks.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/luks/luks.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/luks/metadata.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/tools/__init__.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect/fve/tools/dd.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect.fve.egg-info/SOURCES.txt +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect.fve.egg-info/dependency_links.txt +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect.fve.egg-info/entry_points.txt +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/dissect.fve.egg-info/top_level.txt +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/setup.cfg +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/__init__.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/aes-xts_128.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/aes-xts_256.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/aes_128.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/aes_128_diffuser.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/aes_256.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/aes_256_diffuser.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/decrypted.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/eow_partial.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/recovery_key.bek +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/recovery_key.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/recovery_password.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/startup_key.bek +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/startup_key.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/suspended.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/vista.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/bde/win7_partial.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks1/aes-ecb.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks1/sha1.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks2/aes-cbc-essiv.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks2/aes-cbc-plain.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks2/aes-ecb-pbkdf2.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks2/aes-ecb.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks2/aes-xts-plain64.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_data/luks2/multiple-slots.bin.gz +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_docs/Makefile +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_docs/conf.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_docs/index.rst +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/_utils.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/conftest.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/test_bde.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/test_bde_eow_bitmap.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/test_crypto.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/test_luks.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/test_luks_kdf.py +0 -0
- {dissect_fve-4.2.dev2 → dissect_fve-4.3.dev2}/tests/test_luks_metadata.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.fve
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.dev2
|
|
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
|
-
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.fve
|
|
9
9
|
Project-URL: repository, https://github.com/fox-it/dissect.fve
|
|
@@ -11,7 +11,6 @@ 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
|
|
@@ -23,15 +22,15 @@ Description-Content-Type: text/markdown
|
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
License-File: COPYRIGHT
|
|
25
24
|
Requires-Dist: dissect.cstruct<5,>=4
|
|
26
|
-
Requires-Dist: dissect.util<4,>=3
|
|
27
|
-
Requires-Dist: pycryptodome
|
|
25
|
+
Requires-Dist: dissect.util<4,>=3.22.dev8
|
|
26
|
+
Requires-Dist: pycryptodome
|
|
28
27
|
Requires-Dist: argon2-cffi
|
|
29
28
|
Provides-Extra: full
|
|
30
29
|
Requires-Dist: dissect.target; extra == "full"
|
|
31
30
|
Requires-Dist: rich; extra == "full"
|
|
32
31
|
Provides-Extra: dev
|
|
33
32
|
Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
|
|
34
|
-
Requires-Dist: dissect.util<4.0.dev,>=3.
|
|
33
|
+
Requires-Dist: dissect.util<4.0.dev,>=3.22.dev; extra == "dev"
|
|
35
34
|
Dynamic: license-file
|
|
36
35
|
|
|
37
36
|
# dissect.fve
|
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
# Only pycryptodome is supported right now
|
|
5
4
|
from dissect.fve.crypto import _pycryptodome
|
|
6
5
|
from dissect.fve.crypto.base import Cipher, Plain, Plain64, Plain64BE
|
|
7
6
|
|
|
8
|
-
# Only pycryptodome is supported right now
|
|
9
|
-
_pycryptodome.install()
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
CIPHER_MODE_MAP = {
|
|
13
|
-
"ecb": AES.MODE_FVE_ECB,
|
|
14
|
-
"cbc": AES.MODE_FVE_CBC,
|
|
15
|
-
"xts": AES.MODE_FVE_XTS,
|
|
16
|
-
}
|
|
17
|
-
|
|
18
7
|
IV_MODE_MAP = {
|
|
19
8
|
"plain": Plain,
|
|
20
9
|
"plain64": Plain64,
|
|
@@ -45,17 +34,15 @@ def create_cipher(
|
|
|
45
34
|
if cipher_name != "aes":
|
|
46
35
|
raise ValueError("Only AES support is implemented")
|
|
47
36
|
|
|
48
|
-
|
|
49
|
-
if not mode:
|
|
37
|
+
if cipher_mode not in ("ecb", "cbc", "xts"):
|
|
50
38
|
raise ValueError(f"Invalid cipher mode: {cipher_name}-{cipher_mode} (from {spec})")
|
|
51
39
|
|
|
52
|
-
iv
|
|
53
|
-
if not iv:
|
|
40
|
+
if (iv := IV_MODE_MAP.get(iv_name)) is None:
|
|
54
41
|
raise ValueError(f"Invalid iv mode: {iv_name}:{iv_options} (from {spec})")
|
|
55
42
|
|
|
56
|
-
return
|
|
43
|
+
return _pycryptodome.new(
|
|
57
44
|
key,
|
|
58
|
-
|
|
45
|
+
cipher_mode,
|
|
59
46
|
key_size=key_size,
|
|
60
47
|
iv_mode=iv,
|
|
61
48
|
iv_options=iv_options,
|
|
@@ -5,7 +5,7 @@ import platform
|
|
|
5
5
|
import sys
|
|
6
6
|
from typing import Any, Callable
|
|
7
7
|
|
|
8
|
-
from Crypto.Cipher import AES
|
|
8
|
+
from Crypto.Cipher import AES
|
|
9
9
|
from Crypto.Util import _raw_api
|
|
10
10
|
|
|
11
11
|
from dissect.fve.crypto import elephant
|
|
@@ -250,14 +250,21 @@ def _create_cipher_factory(mode: type[Cipher]) -> Callable[..., Cipher]:
|
|
|
250
250
|
return cipher_factory
|
|
251
251
|
|
|
252
252
|
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
_create_fve_ecb_cipher = _create_cipher_factory(EcbMode)
|
|
254
|
+
_create_fve_cbc_cipher = _create_cipher_factory(CbcMode)
|
|
255
|
+
_create_fve_xts_cipher = _create_cipher_factory(XtsMode)
|
|
255
256
|
|
|
256
|
-
# Only support AES for now
|
|
257
|
-
AES.MODE_FVE_ECB = 50
|
|
258
|
-
AES.MODE_FVE_CBC = 51
|
|
259
|
-
AES.MODE_FVE_XTS = 52
|
|
260
257
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
258
|
+
def new(key: bytes, mode: int, *args, **kwargs) -> Cipher:
|
|
259
|
+
"""Create a new cipher object."""
|
|
260
|
+
if mode not in ("ecb", "cbc", "xts"):
|
|
261
|
+
return AES.new(key, mode, *args, **kwargs)
|
|
262
|
+
|
|
263
|
+
if mode == "ecb":
|
|
264
|
+
return _create_fve_ecb_cipher(AES, key=key, mode=mode, **kwargs)
|
|
265
|
+
if mode == "cbc":
|
|
266
|
+
return _create_fve_cbc_cipher(AES, key=key, mode=mode, **kwargs)
|
|
267
|
+
if mode == "xts":
|
|
268
|
+
return _create_fve_xts_cipher(AES, key=key, mode=mode, **kwargs)
|
|
269
|
+
|
|
270
|
+
raise ValueError(f"Unsupported mode: {mode} (key: {key!r}, args: {args}, kwargs: {kwargs})")
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from dissect.util.xmemoryview import xmemoryview
|
|
4
|
+
|
|
3
5
|
|
|
4
6
|
def diffuser_a_decrypt(buffer: memoryview, sector_size: int) -> None:
|
|
5
7
|
a_cycles = 5
|
|
6
8
|
r_a = [9, 0, 13, 0]
|
|
7
9
|
int_size = sector_size >> 2
|
|
8
10
|
|
|
9
|
-
buffer_i = buffer
|
|
11
|
+
buffer_i = xmemoryview(buffer, "<I")
|
|
10
12
|
|
|
11
13
|
for _ in range(a_cycles):
|
|
12
14
|
for i in range(int_size):
|
|
@@ -18,7 +20,7 @@ def diffuser_a_encrypt(buffer: memoryview, sector_size: int) -> None:
|
|
|
18
20
|
r_a = [9, 0, 13, 0]
|
|
19
21
|
int_size = sector_size >> 2
|
|
20
22
|
|
|
21
|
-
buffer_i = buffer
|
|
23
|
+
buffer_i = xmemoryview(buffer, "<I")
|
|
22
24
|
|
|
23
25
|
for _ in range(a_cycles):
|
|
24
26
|
for i in range(int_size - 1, -1, -1):
|
|
@@ -30,7 +32,7 @@ def diffuser_b_decrypt(buffer: memoryview, sector_size: int) -> None:
|
|
|
30
32
|
r_b = [0, 10, 0, 25]
|
|
31
33
|
int_size = sector_size >> 2
|
|
32
34
|
|
|
33
|
-
buffer_i = buffer
|
|
35
|
+
buffer_i = xmemoryview(buffer, "<I")
|
|
34
36
|
|
|
35
37
|
for _ in range(b_cycles):
|
|
36
38
|
for i in range(int_size):
|
|
@@ -44,7 +46,7 @@ def diffuser_b_encrypt(buffer: memoryview, sector_size: int) -> None:
|
|
|
44
46
|
r_b = [0, 10, 0, 25]
|
|
45
47
|
int_size = sector_size >> 2
|
|
46
48
|
|
|
47
|
-
buffer_i = buffer
|
|
49
|
+
buffer_i = xmemoryview(buffer, "<I")
|
|
48
50
|
|
|
49
51
|
for _ in range(b_cycles):
|
|
50
52
|
for i in range(int_size - 1, -1, -1):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dissect.fve
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.dev2
|
|
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
|
-
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.fve
|
|
9
9
|
Project-URL: repository, https://github.com/fox-it/dissect.fve
|
|
@@ -11,7 +11,6 @@ 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
|
|
@@ -23,15 +22,15 @@ Description-Content-Type: text/markdown
|
|
|
23
22
|
License-File: LICENSE
|
|
24
23
|
License-File: COPYRIGHT
|
|
25
24
|
Requires-Dist: dissect.cstruct<5,>=4
|
|
26
|
-
Requires-Dist: dissect.util<4,>=3
|
|
27
|
-
Requires-Dist: pycryptodome
|
|
25
|
+
Requires-Dist: dissect.util<4,>=3.22.dev8
|
|
26
|
+
Requires-Dist: pycryptodome
|
|
28
27
|
Requires-Dist: argon2-cffi
|
|
29
28
|
Provides-Extra: full
|
|
30
29
|
Requires-Dist: dissect.target; extra == "full"
|
|
31
30
|
Requires-Dist: rich; extra == "full"
|
|
32
31
|
Provides-Extra: dev
|
|
33
32
|
Requires-Dist: dissect.cstruct<5.0.dev,>=4.0.dev; extra == "dev"
|
|
34
|
-
Requires-Dist: dissect.util<4.0.dev,>=3.
|
|
33
|
+
Requires-Dist: dissect.util<4.0.dev,>=3.22.dev; extra == "dev"
|
|
35
34
|
Dynamic: license-file
|
|
36
35
|
|
|
37
36
|
# dissect.fve
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
dissect.cstruct<5,>=4
|
|
2
|
-
dissect.util<4,>=3
|
|
3
|
-
pycryptodome
|
|
2
|
+
dissect.util<4,>=3.22.dev8
|
|
3
|
+
pycryptodome
|
|
4
4
|
argon2-cffi
|
|
5
5
|
|
|
6
6
|
[dev]
|
|
7
7
|
dissect.cstruct<5.0.dev,>=4.0.dev
|
|
8
|
-
dissect.util<4.0.dev,>=3.
|
|
8
|
+
dissect.util<4.0.dev,>=3.22.dev
|
|
9
9
|
|
|
10
10
|
[full]
|
|
11
11
|
dissect.target
|
|
@@ -1,5 +1,5 @@
|
|
|
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]
|
|
@@ -7,7 +7,8 @@ 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
9
|
requires-python = "~=3.9"
|
|
10
|
-
license
|
|
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",
|
|
@@ -26,8 +26,8 @@ classifiers = [
|
|
|
26
26
|
]
|
|
27
27
|
dependencies = [
|
|
28
28
|
"dissect.cstruct>=4,<5",
|
|
29
|
-
"dissect.util>=3,<4",
|
|
30
|
-
"pycryptodome
|
|
29
|
+
"dissect.util>=3.22.dev8,<4", # TODO: update on release
|
|
30
|
+
"pycryptodome",
|
|
31
31
|
"argon2-cffi",
|
|
32
32
|
]
|
|
33
33
|
dynamic = ["version"]
|
|
@@ -44,7 +44,7 @@ full = [
|
|
|
44
44
|
]
|
|
45
45
|
dev = [
|
|
46
46
|
"dissect.cstruct>=4.0.dev,<5.0.dev",
|
|
47
|
-
"dissect.util>=3.
|
|
47
|
+
"dissect.util>=3.22.dev,<4.0.dev",
|
|
48
48
|
]
|
|
49
49
|
|
|
50
50
|
[project.scripts]
|
|
@@ -52,7 +52,7 @@ fve-dd = "dissect.fve.tools.dd:main"
|
|
|
52
52
|
|
|
53
53
|
[tool.ruff]
|
|
54
54
|
line-length = 120
|
|
55
|
-
required-version = ">=0.
|
|
55
|
+
required-version = ">=0.12.0"
|
|
56
56
|
|
|
57
57
|
[tool.ruff.format]
|
|
58
58
|
docstring-code-format = true
|
|
@@ -101,9 +101,6 @@ ignore = ["E203", "B904", "UP024", "ANN002", "ANN003", "ANN204", "ANN401", "SIM1
|
|
|
101
101
|
known-first-party = ["dissect.fve"]
|
|
102
102
|
known-third-party = ["dissect"]
|
|
103
103
|
|
|
104
|
-
[tool.setuptools]
|
|
105
|
-
license-files = ["LICENSE", "COPYRIGHT"]
|
|
106
|
-
|
|
107
104
|
[tool.setuptools.packages.find]
|
|
108
105
|
include = ["dissect.*"]
|
|
109
106
|
|
|
@@ -18,7 +18,7 @@ deps =
|
|
|
18
18
|
pytest-cov
|
|
19
19
|
coverage
|
|
20
20
|
commands =
|
|
21
|
-
pytest --basetemp="{envtmpdir}" {posargs:--color=yes --cov=dissect --cov-report=term-missing -v tests}
|
|
21
|
+
pytest --basetemp="{envtmpdir}" --import-mode="append" {posargs:--color=yes --cov=dissect --cov-report=term-missing -v tests}
|
|
22
22
|
coverage report
|
|
23
23
|
coverage xml
|
|
24
24
|
|
|
@@ -32,7 +32,7 @@ commands =
|
|
|
32
32
|
[testenv:fix]
|
|
33
33
|
package = skip
|
|
34
34
|
deps =
|
|
35
|
-
ruff==0.
|
|
35
|
+
ruff==0.12.1
|
|
36
36
|
commands =
|
|
37
37
|
ruff format dissect tests
|
|
38
38
|
ruff check --fix dissect tests
|
|
@@ -40,7 +40,7 @@ commands =
|
|
|
40
40
|
[testenv:lint]
|
|
41
41
|
package = skip
|
|
42
42
|
deps =
|
|
43
|
-
ruff==0.
|
|
43
|
+
ruff==0.12.1
|
|
44
44
|
vermin
|
|
45
45
|
commands =
|
|
46
46
|
ruff check dissect tests
|
|
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
|