dissect.target 3.18.dev16__py3-none-any.whl → 3.19.dev2__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|