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.
@@ -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__(self, broker: Broker, port: str, key: str, crt: str, ca: str, case: str, **kwargs):
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 Envelope, KeyStore
20
+ from dissect.hypervisor.util.envelope import (
21
+ HAS_PYCRYPTODOME,
22
+ HAS_PYSTANDALONE,
23
+ Envelope,
24
+ KeyStore,
25
+ )
21
26
 
22
- HAS_ENVELOPE = True
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
- raise ValueError("No ESXi config!")
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.18.dev16
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=wba1AFopF4ANvA5YiXd6_8T-5kRBLsiKA5xCPmrD7Xk,16024
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=8kFFK9986zN8hXmDUWwdQHtbV33nWKerRuisg_xbsoQ,17504
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.18.dev16.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
349
- dissect.target-3.18.dev16.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
350
- dissect.target-3.18.dev16.dist-info/METADATA,sha256=HFgrM2p1NkkrKOfp2q-w2d1ZBjaV1g9jKJhmQ5A_8nw,12719
351
- dissect.target-3.18.dev16.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
352
- dissect.target-3.18.dev16.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
353
- dissect.target-3.18.dev16.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
354
- dissect.target-3.18.dev16.dist-info/RECORD,,
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,,