dissect.target 3.20.dev52__py3-none-any.whl → 3.20.dev53__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- dissect/target/plugins/os/windows/generic.py +48 -1
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/METADATA +1 -1
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/RECORD +8 -8
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/LICENSE +0 -0
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/WHEEL +0 -0
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/top_level.txt +0 -0
@@ -1,8 +1,10 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import struct
|
3
4
|
from datetime import datetime
|
4
5
|
from typing import Iterator
|
5
6
|
|
7
|
+
from dissect.util.sid import read_sid
|
6
8
|
from dissect.util.ts import from_unix
|
7
9
|
|
8
10
|
from dissect.target.exceptions import RegistryError, UnsupportedPluginError
|
@@ -10,7 +12,10 @@ from dissect.target.helpers.descriptor_extensions import (
|
|
10
12
|
RegistryRecordDescriptorExtension,
|
11
13
|
UserRecordDescriptorExtension,
|
12
14
|
)
|
13
|
-
from dissect.target.helpers.record import
|
15
|
+
from dissect.target.helpers.record import (
|
16
|
+
TargetRecordDescriptor,
|
17
|
+
create_extended_descriptor,
|
18
|
+
)
|
14
19
|
from dissect.target.plugin import Plugin, export
|
15
20
|
|
16
21
|
UserRegistryRecordDescriptor = create_extended_descriptor(
|
@@ -113,6 +118,15 @@ WinSockNamespaceProviderRecord = UserRegistryRecordDescriptor(
|
|
113
118
|
],
|
114
119
|
)
|
115
120
|
|
121
|
+
ComputerSidRecord = TargetRecordDescriptor(
|
122
|
+
"windows/sid/computer",
|
123
|
+
[
|
124
|
+
("datetime", "ts"),
|
125
|
+
("string", "sidtype"),
|
126
|
+
("string", "sid"),
|
127
|
+
],
|
128
|
+
)
|
129
|
+
|
116
130
|
|
117
131
|
class GenericPlugin(Plugin):
|
118
132
|
"""Generic Windows plugin.
|
@@ -573,3 +587,36 @@ class GenericPlugin(Plugin):
|
|
573
587
|
return self.target.registry.key(key).value("ACP").value
|
574
588
|
except RegistryError:
|
575
589
|
pass
|
590
|
+
|
591
|
+
@export(record=ComputerSidRecord)
|
592
|
+
def sid(self) -> Iterator[ComputerSidRecord]:
|
593
|
+
"""Return the machine- and optional domain SID of the system."""
|
594
|
+
|
595
|
+
try:
|
596
|
+
key = self.target.registry.key("HKLM\\SAM\\SAM\\Domains\\Account")
|
597
|
+
|
598
|
+
# The machine SID is stored in the last 12 bytes of the V value as little-endian
|
599
|
+
# The machine SID differs from a 'normal' binary SID as only holds 3 values and lacks a prefix / Revision
|
600
|
+
# NOTE: Consider moving this to dissect.util.sid if we encounter this more often
|
601
|
+
sid = struct.unpack_from("<III", key.value("V").value, -12)
|
602
|
+
|
603
|
+
yield ComputerSidRecord(
|
604
|
+
ts=key.timestamp,
|
605
|
+
sidtype="Machine",
|
606
|
+
sid=f"S-1-5-21-{sid[0]}-{sid[1]}-{sid[2]}",
|
607
|
+
_target=self.target,
|
608
|
+
)
|
609
|
+
except (RegistryError, struct.error):
|
610
|
+
pass
|
611
|
+
|
612
|
+
try:
|
613
|
+
key = self.target.registry.key("HKLM\\SECURITY\\Policy\\PolMachineAccountS")
|
614
|
+
|
615
|
+
yield ComputerSidRecord(
|
616
|
+
ts=key.timestamp,
|
617
|
+
sidtype="Domain",
|
618
|
+
sid=read_sid(key.value("(Default)").value),
|
619
|
+
_target=self.target,
|
620
|
+
)
|
621
|
+
except (RegistryError, struct.error):
|
622
|
+
pass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dissect.target
|
3
|
-
Version: 3.20.
|
3
|
+
Version: 3.20.dev53
|
4
4
|
Summary: This module ties all other Dissect modules together, it provides a programming API and command line tools which allow easy access to various data sources inside disk images or file collections (a.k.a. targets)
|
5
5
|
Author-email: Dissect Team <dissect@fox-it.com>
|
6
6
|
License: Affero General Public License v3
|
@@ -284,7 +284,7 @@ dissect/target/plugins/os/windows/clfs.py,sha256=begVsZ-CY97Ksh6S1g03LjyBgu8ERY2
|
|
284
284
|
dissect/target/plugins/os/windows/datetime.py,sha256=YKHUZU6lkKJocq15y0yCwvIIOb1Ej-kfvEBmHbrdIGw,9467
|
285
285
|
dissect/target/plugins/os/windows/defender.py,sha256=JAJy8hr6jFGd290N1d5a-bVeD8rHc6E_pWEHxTpiMDk,32735
|
286
286
|
dissect/target/plugins/os/windows/env.py,sha256=U5D74i_7tICxGDanqDU42Jqsx0asFFMIs6SpUwTnJc4,13884
|
287
|
-
dissect/target/plugins/os/windows/generic.py,sha256=
|
287
|
+
dissect/target/plugins/os/windows/generic.py,sha256=RJ1znzsIa4CFxmdMh91SjMY_pnjwxvldlTEKo58m_e8,24262
|
288
288
|
dissect/target/plugins/os/windows/jumplist.py,sha256=3gZk6O1B3lKK2Jxe0B-HapOCEehk94CYNvCVDpQC9nQ,11773
|
289
289
|
dissect/target/plugins/os/windows/lnk.py,sha256=KTqhw0JMW-KjAxe4xlRDNSRSx-th-_nPVgTGyBaKmW0,7891
|
290
290
|
dissect/target/plugins/os/windows/locale.py,sha256=QiLWGgWrGBGHiXgep5iSOo6VNim4YC-xd4MdW0BUJPA,2486
|
@@ -378,10 +378,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
|
|
378
378
|
dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
|
379
379
|
dissect/target/volumes/md.py,sha256=7ShPtusuLGaIv27SvEETtgsuoQyAa4iAAeOR1NEaajI,1689
|
380
380
|
dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
|
381
|
-
dissect.target-3.20.
|
382
|
-
dissect.target-3.20.
|
383
|
-
dissect.target-3.20.
|
384
|
-
dissect.target-3.20.
|
385
|
-
dissect.target-3.20.
|
386
|
-
dissect.target-3.20.
|
387
|
-
dissect.target-3.20.
|
381
|
+
dissect.target-3.20.dev53.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
|
382
|
+
dissect.target-3.20.dev53.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
383
|
+
dissect.target-3.20.dev53.dist-info/METADATA,sha256=83_YSjif8SPpGDGODY4T2GwqkZoXDoxilQkzr9RsT7M,12897
|
384
|
+
dissect.target-3.20.dev53.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
385
|
+
dissect.target-3.20.dev53.dist-info/entry_points.txt,sha256=BWuxAb_6AvUAQpIQOQU0IMTlaF6TDht2AIZK8bHd-zE,492
|
386
|
+
dissect.target-3.20.dev53.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
387
|
+
dissect.target-3.20.dev53.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
{dissect.target-3.20.dev52.dist-info → dissect.target-3.20.dev53.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|