dissect.target 3.18.dev16__py3-none-any.whl → 3.19.dev2__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.
- dissect/target/loaders/mqtt.py +14 -1
- dissect/target/plugins/os/unix/esxi/_os.py +12 -6
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/METADATA +1 -1
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/RECORD +9 -9
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/LICENSE +0 -0
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/WHEEL +0 -0
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.18.dev16.dist-info → dissect.target-3.19.dev2.dist-info}/top_level.txt +0 -0
dissect/target/loaders/mqtt.py
CHANGED
@@ -10,6 +10,7 @@ import time
|
|
10
10
|
import urllib
|
11
11
|
from dataclasses import dataclass
|
12
12
|
from functools import lru_cache
|
13
|
+
from getpass import getpass
|
13
14
|
from pathlib import Path
|
14
15
|
from struct import pack, unpack_from
|
15
16
|
from threading import Thread
|
@@ -270,19 +271,25 @@ class Broker:
|
|
270
271
|
case = None
|
271
272
|
bytes_received = 0
|
272
273
|
monitor = False
|
274
|
+
username = None
|
275
|
+
password = None
|
273
276
|
|
274
277
|
diskinfo = {}
|
275
278
|
index = {}
|
276
279
|
topo = {}
|
277
280
|
factor = 1
|
278
281
|
|
279
|
-
def __init__(
|
282
|
+
def __init__(
|
283
|
+
self, broker: Broker, port: str, key: str, crt: str, ca: str, case: str, username: str, password: str, **kwargs
|
284
|
+
):
|
280
285
|
self.broker_host = broker
|
281
286
|
self.broker_port = int(port)
|
282
287
|
self.private_key_file = key
|
283
288
|
self.certificate_file = crt
|
284
289
|
self.cacert_file = ca
|
285
290
|
self.case = case
|
291
|
+
self.username = username
|
292
|
+
self.password = password
|
286
293
|
self.command = kwargs.get("command", None)
|
287
294
|
|
288
295
|
def clear_cache(self) -> None:
|
@@ -393,6 +400,7 @@ class Broker:
|
|
393
400
|
tls_version=ssl.PROTOCOL_TLS,
|
394
401
|
ciphers=None,
|
395
402
|
)
|
403
|
+
self.mqtt_client.username_pw_set(self.username, self.password)
|
396
404
|
self.mqtt_client.tls_insecure_set(True) # merely having the correct cert is ok
|
397
405
|
self.mqtt_client.on_connect = self._on_connect
|
398
406
|
self.mqtt_client.on_message = self._on_message
|
@@ -411,6 +419,8 @@ class Broker:
|
|
411
419
|
@arg("--mqtt-ca", dest="ca", help="certificate authority file")
|
412
420
|
@arg("--mqtt-command", dest="command", help="direct command to client(s)")
|
413
421
|
@arg("--mqtt-diag", action="store_true", dest="diag", help="show MQTT diagnostic information")
|
422
|
+
@arg("--mqtt-username", dest="username", help="Username for connection")
|
423
|
+
@arg("--mqtt-password", action="store_true", dest="password", help="Ask for password before connecting")
|
414
424
|
class MQTTLoader(Loader):
|
415
425
|
"""Load remote targets through a broker."""
|
416
426
|
|
@@ -435,7 +445,10 @@ class MQTTLoader(Loader):
|
|
435
445
|
if cls.broker is None:
|
436
446
|
if (uri := kwargs.get("parsed_path")) is None:
|
437
447
|
raise LoaderError("No URI connection details have been passed.")
|
448
|
+
|
438
449
|
options = dict(urllib.parse.parse_qsl(uri.query, keep_blank_values=True))
|
450
|
+
if options.get("password"):
|
451
|
+
options["password"] = getpass()
|
439
452
|
cls.broker = Broker(**options)
|
440
453
|
cls.broker.connect()
|
441
454
|
num_peers = int(options.get("peers", 1))
|
@@ -17,9 +17,14 @@ from dissect.sql import sqlite3
|
|
17
17
|
from dissect.target.helpers.fsutil import TargetPath
|
18
18
|
|
19
19
|
try:
|
20
|
-
from dissect.hypervisor.util.envelope import
|
20
|
+
from dissect.hypervisor.util.envelope import (
|
21
|
+
HAS_PYCRYPTODOME,
|
22
|
+
HAS_PYSTANDALONE,
|
23
|
+
Envelope,
|
24
|
+
KeyStore,
|
25
|
+
)
|
21
26
|
|
22
|
-
HAS_ENVELOPE =
|
27
|
+
HAS_ENVELOPE = HAS_PYCRYPTODOME or HAS_PYSTANDALONE
|
23
28
|
except ImportError:
|
24
29
|
HAS_ENVELOPE = False
|
25
30
|
|
@@ -70,7 +75,8 @@ class ESXiPlugin(UnixPlugin):
|
|
70
75
|
|
71
76
|
def _cfg(self, path: str) -> Optional[str]:
|
72
77
|
if not self._config:
|
73
|
-
|
78
|
+
self.target.log.warning("No ESXi config!")
|
79
|
+
return None
|
74
80
|
|
75
81
|
value_name = path.strip("/").split("/")[-1]
|
76
82
|
obj = _traverse(path, self._config)
|
@@ -95,13 +101,13 @@ class ESXiPlugin(UnixPlugin):
|
|
95
101
|
def create(cls, target: Target, sysvol: Filesystem) -> ESXiPlugin:
|
96
102
|
cfg = parse_boot_cfg(sysvol.path("boot.cfg").open("rt"))
|
97
103
|
|
104
|
+
# Mount all the visor tars in individual filesystem layers
|
105
|
+
_mount_modules(target, sysvol, cfg)
|
106
|
+
|
98
107
|
# Create a root layer for the "local state" filesystem
|
99
108
|
# This stores persistent configuration data
|
100
109
|
local_layer = target.fs.append_layer()
|
101
110
|
|
102
|
-
# Mount all the visor tars in individual filesystem layers
|
103
|
-
_mount_modules(target, sysvol, cfg)
|
104
|
-
|
105
111
|
# Mount the local.tgz to the local state layer
|
106
112
|
_mount_local(target, local_layer)
|
107
113
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dissect.target
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.19.dev2
|
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
|
@@ -86,7 +86,7 @@ dissect/target/loaders/itunes.py,sha256=rKOhlDRypQBGkuSZudMDS1Mlb9XV6BD5FRvM7tGq
|
|
86
86
|
dissect/target/loaders/kape.py,sha256=t5TfrGLqPeIpUUpXzIl6aHsqXMEGDqJ5YwDCs07DiBA,1237
|
87
87
|
dissect/target/loaders/local.py,sha256=Ul-LCd_fY7SyWOVR6nH-NqbkuNpxoZVmffwrkvQElU8,16453
|
88
88
|
dissect/target/loaders/log.py,sha256=cCkDIRS4aPlX3U-n_jUKaI2FPSV3BDpfqKceaU7rBbo,1507
|
89
|
-
dissect/target/loaders/mqtt.py,sha256=
|
89
|
+
dissect/target/loaders/mqtt.py,sha256=pn2VtFh0jeYXMod4CuZOKGhe2ScQixJ1Xhx6MHe0rzk,16540
|
90
90
|
dissect/target/loaders/multiraw.py,sha256=4a3ZST0NwjnfPDxHkcEfAcX2ddUlT_C-rcrMHNg1wp4,1046
|
91
91
|
dissect/target/loaders/ova.py,sha256=6h4O-7i87J394C6KgLsPkdXRAKNwtPubzLNS3vBGs7U,744
|
92
92
|
dissect/target/loaders/overlay.py,sha256=tj99HKvNG5_JbGfb1WCv4KNSbXXSnEcPQY5XT-JUxn8,992
|
@@ -208,7 +208,7 @@ dissect/target/plugins/os/unix/bsd/osx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JC
|
|
208
208
|
dissect/target/plugins/os/unix/bsd/osx/_os.py,sha256=KvP7YJ7apVwoIop7MR-8q5QbVGoB6MdR42l6ssEe6es,4081
|
209
209
|
dissect/target/plugins/os/unix/bsd/osx/user.py,sha256=qopB0s3n7e6Q7NjWzn8Z-dKtDtU7e6In4Vm7hIvvedo,2322
|
210
210
|
dissect/target/plugins/os/unix/esxi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
211
|
-
dissect/target/plugins/os/unix/esxi/_os.py,sha256=
|
211
|
+
dissect/target/plugins/os/unix/esxi/_os.py,sha256=JOJ6j57vFCojgBNkju-7MG2nQqwl4Qc-agXTwjhZPgY,17644
|
212
212
|
dissect/target/plugins/os/unix/etc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
213
213
|
dissect/target/plugins/os/unix/etc/etc.py,sha256=ZyuMfP1QKA2_l8XQVu5CLex049MVFre3Yru5otiAqpE,2531
|
214
214
|
dissect/target/plugins/os/unix/linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -345,10 +345,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
|
|
345
345
|
dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
|
346
346
|
dissect/target/volumes/md.py,sha256=j1K1iKmspl0C_OJFc7-Q1BMWN2OCC5EVANIgVlJ_fIE,1673
|
347
347
|
dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
|
348
|
-
dissect.target-3.
|
349
|
-
dissect.target-3.
|
350
|
-
dissect.target-3.
|
351
|
-
dissect.target-3.
|
352
|
-
dissect.target-3.
|
353
|
-
dissect.target-3.
|
354
|
-
dissect.target-3.
|
348
|
+
dissect.target-3.19.dev2.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
|
349
|
+
dissect.target-3.19.dev2.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
350
|
+
dissect.target-3.19.dev2.dist-info/METADATA,sha256=8ZAfE4mjiIJsSWyLx6PmXtP3R43fOvhJTPzWRwgk-Zw,12718
|
351
|
+
dissect.target-3.19.dev2.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
|
352
|
+
dissect.target-3.19.dev2.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
|
353
|
+
dissect.target-3.19.dev2.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
354
|
+
dissect.target-3.19.dev2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|