dissect.cobaltstrike 1.2.2.dev2__py3-none-any.whl → 1.2.2.dev4__py3-none-any.whl

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.
@@ -1,21 +1,24 @@
1
- # file generated by setuptools-scm
1
+ # file generated by vcs-versioning
2
2
  # don't change, don't track in version control
3
+ from __future__ import annotations
3
4
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
-
6
- TYPE_CHECKING = False
7
- if TYPE_CHECKING:
8
- from typing import Tuple
9
- from typing import Union
10
-
11
- VERSION_TUPLE = Tuple[Union[int, str], ...]
12
- else:
13
- VERSION_TUPLE = object
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
14
13
 
15
14
  version: str
16
15
  __version__: str
17
- __version_tuple__: VERSION_TUPLE
18
- version_tuple: VERSION_TUPLE
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '1.2.2.dev4'
22
+ __version_tuple__ = version_tuple = (1, 2, 2, 'dev4')
19
23
 
20
- __version__ = version = '1.2.2.dev2'
21
- __version_tuple__ = version_tuple = (1, 2, 2, 'dev2')
24
+ __commit_id__ = commit_id = None
@@ -10,26 +10,35 @@ import contextlib
10
10
  import io
11
11
  import logging
12
12
  import sys
13
- from typing import BinaryIO, Iterator, NamedTuple, Optional
13
+ from typing import BinaryIO, Iterator, Optional
14
14
 
15
15
  from dissect.cobaltstrike import utils
16
16
 
17
17
  logger = logging.getLogger(__name__)
18
18
 
19
19
 
20
- class ArtifactKitPayload(NamedTuple):
21
- """Namedtuple containing the ArtifactKit metadata and decoded payload"""
20
+ class ArtifactKitPayload(io.BytesIO):
21
+ """Decoded ArtifactKit payload with its metadata."""
22
22
 
23
- offset: int
24
- """Offset of the ArtifactKit metadata in the file"""
25
- size: int
26
- """Size of the payload"""
27
- xorkey: bytes
28
- """4-byte random xor mask"""
29
- hints: bytes
30
- """Loader hints (GetModuleHandleA, GetProcAddress)"""
31
- payload: bytes
32
- """Decoded ArtifactKit payload"""
23
+ def __init__(self, offset: int, size: int, xorkey: bytes, hints: bytes, payload: bytes):
24
+ super().__init__(payload)
25
+ self.offset = offset
26
+ """Offset of the ArtifactKit metadata in the file"""
27
+ self.size = size
28
+ """Size of the payload"""
29
+ self.xorkey = xorkey
30
+ """4-byte random xor mask"""
31
+ self.hints = hints
32
+ """Loader hints (GetModuleHandleA, GetProcAddress)"""
33
+ self.payload = payload
34
+ """Decoded ArtifactKit payload"""
35
+ self.fh = io.BytesIO(payload)
36
+
37
+ def __repr__(self) -> str:
38
+ return f"<ArtifactKitPayload offset=0x{self.offset:x} size={self.size} xorkey={self.xorkey!r}>"
39
+
40
+ def get_name(self) -> str:
41
+ return "ArtifactKitPayload"
33
42
 
34
43
 
35
44
  def iter_artifactkit_payloads(
@@ -68,7 +77,8 @@ def iter_artifactkit_payloads(
68
77
  hints = fobj.read(8)
69
78
  data = fobj.read(size)
70
79
  payload = utils.xor(data, xorkey)
71
- yield ArtifactKitPayload(offset=pos, size=size, xorkey=xorkey, hints=hints, payload=payload)
80
+ if size > 0:
81
+ yield ArtifactKitPayload(offset=pos, size=size, xorkey=xorkey, hints=hints, payload=payload)
72
82
  pos += 1
73
83
 
74
84