dissect.target 3.20.dev14__py3-none-any.whl → 3.20.dev16__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/plugins/os/unix/linux/_os.py +4 -4
- dissect/target/{helpers → plugins/os/unix/linux}/network_managers.py +11 -9
- dissect/target/tools/shell.py +43 -0
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/METADATA +1 -1
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/RECORD +10 -10
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/LICENSE +0 -0
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/WHEEL +0 -0
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/top_level.txt +0 -0
@@ -3,13 +3,13 @@ from __future__ import annotations
|
|
3
3
|
import logging
|
4
4
|
|
5
5
|
from dissect.target.filesystem import Filesystem
|
6
|
-
from dissect.target.helpers.network_managers import (
|
7
|
-
LinuxNetworkManager,
|
8
|
-
parse_unix_dhcp_log_messages,
|
9
|
-
)
|
10
6
|
from dissect.target.plugin import OperatingSystem, export
|
11
7
|
from dissect.target.plugins.os.unix._os import UnixPlugin
|
12
8
|
from dissect.target.plugins.os.unix.bsd.osx._os import MacPlugin
|
9
|
+
from dissect.target.plugins.os.unix.linux.network_managers import (
|
10
|
+
LinuxNetworkManager,
|
11
|
+
parse_unix_dhcp_log_messages,
|
12
|
+
)
|
13
13
|
from dissect.target.plugins.os.windows._os import WindowsPlugin
|
14
14
|
from dissect.target.target import Target
|
15
15
|
|
@@ -7,15 +7,17 @@ from configparser import ConfigParser, MissingSectionHeaderError
|
|
7
7
|
from io import StringIO
|
8
8
|
from itertools import chain
|
9
9
|
from re import compile, sub
|
10
|
-
from typing import Any, Callable, Iterable, Iterator, Match
|
10
|
+
from typing import TYPE_CHECKING, Any, Callable, Iterable, Iterator, Match
|
11
11
|
|
12
12
|
from defusedxml import ElementTree
|
13
13
|
|
14
14
|
from dissect.target.exceptions import PluginError
|
15
|
-
|
16
|
-
|
17
|
-
from dissect.target.
|
18
|
-
from dissect.target.
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from dissect.target.helpers.fsutil import TargetPath
|
18
|
+
from dissect.target.plugins.os.unix.log.journal import JournalRecord
|
19
|
+
from dissect.target.plugins.os.unix.log.messages import MessagesRecord
|
20
|
+
from dissect.target.target import Target
|
19
21
|
|
20
22
|
log = logging.getLogger(__name__)
|
21
23
|
|
@@ -57,7 +59,7 @@ class Template:
|
|
57
59
|
"""Sets the name of the the used parsing template to the name of the discovered network manager."""
|
58
60
|
self.name = name
|
59
61
|
|
60
|
-
def create_config(self, path: TargetPath) ->
|
62
|
+
def create_config(self, path: TargetPath) -> dict | None:
|
61
63
|
"""Create a network config dictionary based on the configured template and supplied path.
|
62
64
|
|
63
65
|
Args:
|
@@ -81,7 +83,7 @@ class Template:
|
|
81
83
|
config = self._parse_configparser_config(path)
|
82
84
|
return config
|
83
85
|
|
84
|
-
def _parse_netplan_config(self, path: TargetPath) ->
|
86
|
+
def _parse_netplan_config(self, path: TargetPath) -> dict | None:
|
85
87
|
"""Internal function to parse a netplan YAML based configuration file into a dict.
|
86
88
|
|
87
89
|
Args:
|
@@ -286,7 +288,7 @@ class Parser:
|
|
286
288
|
if option in translation_values and value:
|
287
289
|
return translation_key
|
288
290
|
|
289
|
-
def _get_option(self, config: dict, option: str, section:
|
291
|
+
def _get_option(self, config: dict, option: str, section: str | None = None) -> str | Callable | None:
|
290
292
|
"""Internal function to get arbitrary options values from a parsed (non-translated) dictionary.
|
291
293
|
|
292
294
|
Args:
|
@@ -334,7 +336,7 @@ class NetworkManager:
|
|
334
336
|
self.config_globs = (config_globs,) if isinstance(config_globs, str) else config_globs
|
335
337
|
self.detection_globs = (detection_globs,) if isinstance(detection_globs, str) else detection_globs
|
336
338
|
|
337
|
-
def detect(self, target:
|
339
|
+
def detect(self, target: Target | None = None) -> bool:
|
338
340
|
"""Detects if the network manager is active on the target
|
339
341
|
|
340
342
|
Returns:
|
dissect/target/tools/shell.py
CHANGED
@@ -95,6 +95,7 @@ class ExtendedCmd(cmd.Cmd):
|
|
95
95
|
"""
|
96
96
|
|
97
97
|
CMD_PREFIX = "cmd_"
|
98
|
+
_runtime_aliases = {}
|
98
99
|
|
99
100
|
def __init__(self, cyber: bool = False):
|
100
101
|
cmd.Cmd.__init__(self)
|
@@ -164,6 +165,11 @@ class ExtendedCmd(cmd.Cmd):
|
|
164
165
|
return None
|
165
166
|
|
166
167
|
def default(self, line: str) -> bool:
|
168
|
+
com, arg, _ = self.parseline(line)
|
169
|
+
if com in self._runtime_aliases:
|
170
|
+
expanded = " ".join([self._runtime_aliases[com], arg])
|
171
|
+
return self.onecmd(expanded)
|
172
|
+
|
167
173
|
if (should_exit := self._handle_command(line)) is not None:
|
168
174
|
return should_exit
|
169
175
|
|
@@ -230,6 +236,43 @@ class ExtendedCmd(cmd.Cmd):
|
|
230
236
|
def complete_man(self, *args) -> list[str]:
|
231
237
|
return cmd.Cmd.complete_help(self, *args)
|
232
238
|
|
239
|
+
def do_unalias(self, line: str) -> bool:
|
240
|
+
"""delete runtime alias"""
|
241
|
+
aliases = list(shlex.shlex(line, posix=True))
|
242
|
+
for aliased in aliases:
|
243
|
+
if aliased in self._runtime_aliases:
|
244
|
+
del self._runtime_aliases[aliased]
|
245
|
+
else:
|
246
|
+
print(f"alias {aliased} not found")
|
247
|
+
return False
|
248
|
+
|
249
|
+
def do_alias(self, line: str) -> bool:
|
250
|
+
"""create a runtime alias"""
|
251
|
+
args = list(shlex.shlex(line, posix=True))
|
252
|
+
|
253
|
+
if not args:
|
254
|
+
for aliased, command in self._runtime_aliases.items():
|
255
|
+
print(f"alias {aliased}={command}")
|
256
|
+
return False
|
257
|
+
|
258
|
+
while args:
|
259
|
+
alias_name = args.pop(0)
|
260
|
+
try:
|
261
|
+
equals = args.pop(0)
|
262
|
+
# our parser works different, so we have to stop this
|
263
|
+
if equals != "=":
|
264
|
+
raise RuntimeError("Token not allowed")
|
265
|
+
expanded = args.pop(0) if args else "" # this is how it works in bash
|
266
|
+
self._runtime_aliases[alias_name] = expanded
|
267
|
+
except IndexError:
|
268
|
+
if alias_name in self._runtime_aliases:
|
269
|
+
print(f"alias {alias_name}={self._runtime_aliases[alias_name]}")
|
270
|
+
else:
|
271
|
+
print(f"alias {alias_name} not found")
|
272
|
+
pass
|
273
|
+
|
274
|
+
return False
|
275
|
+
|
233
276
|
def do_clear(self, line: str) -> bool:
|
234
277
|
"""clear the terminal screen"""
|
235
278
|
os.system("cls||clear")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dissect.target
|
3
|
-
Version: 3.20.
|
3
|
+
Version: 3.20.dev16
|
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
|
@@ -58,7 +58,6 @@ dissect/target/helpers/loaderutil.py,sha256=4cS0RKGgsljQYYc5uGzmnWJ_NXt7QfWJ1jvt
|
|
58
58
|
dissect/target/helpers/localeutil.py,sha256=Y4Fh4jDSGfm5356xSLMriUCN8SZP_FAHg_iodkAxNq4,1504
|
59
59
|
dissect/target/helpers/mount.py,sha256=JxhUYyEbDnHfzPpfuWy4nV9OwCJPoDSGdHHNiyvd_l0,3949
|
60
60
|
dissect/target/helpers/mui.py,sha256=i-7XoHbu4WO2fYapK9yGAMW04rFlgRispknc1KQIS5Q,22258
|
61
|
-
dissect/target/helpers/network_managers.py,sha256=ByBSe2K3c8hgQC6dokcf-hHdmPcD8PmrOj0xs1C3yhs,25743
|
62
61
|
dissect/target/helpers/polypath.py,sha256=h8p7m_OCNiQljGwoZh5Aflr9H2ot6CZr6WKq1OSw58o,2175
|
63
62
|
dissect/target/helpers/protobuf.py,sha256=b4DsnqrRLrefcDjx7rQno-_LBcwtJXxuKf5RdOegzfE,1537
|
64
63
|
dissect/target/helpers/record.py,sha256=7Se6ZV8cvwEaGSjRd9bKhVnUAn4W4KR2eqP6AbQhTH4,5892
|
@@ -219,12 +218,13 @@ dissect/target/plugins/os/unix/esxi/_os.py,sha256=s6pAgUyfHh3QcY6sgvk5uVMmLvqK1t
|
|
219
218
|
dissect/target/plugins/os/unix/etc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
220
219
|
dissect/target/plugins/os/unix/etc/etc.py,sha256=px_UwtPuk_scD-3nKJQZ0ao5lus9-BrSU4lPZWelYzI,2541
|
221
220
|
dissect/target/plugins/os/unix/linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
222
|
-
dissect/target/plugins/os/unix/linux/_os.py,sha256=
|
221
|
+
dissect/target/plugins/os/unix/linux/_os.py,sha256=W5ok4TS0nZfR6x9vk12FAjGhZyS5cNrdxFeFpQkVOrQ,3037
|
223
222
|
dissect/target/plugins/os/unix/linux/cmdline.py,sha256=AyMfndt3UsmJtoOyZYC8nWq2GZg9oPvn8SiI3M4NxnE,1622
|
224
223
|
dissect/target/plugins/os/unix/linux/environ.py,sha256=UOQD7Xmu754u2oAh3L5g5snuz-gv4jbWbVy46qszYjo,1881
|
225
224
|
dissect/target/plugins/os/unix/linux/iptables.py,sha256=qTzY5PHHXA33WnPYb5NESgoSwI7ECZ8YPoEe_Fmln-8,6045
|
226
225
|
dissect/target/plugins/os/unix/linux/modules.py,sha256=H1S5CkpXttCVwzE2Ylz3jkvrCptN2f-fXcQ_hCB0FG0,2443
|
227
226
|
dissect/target/plugins/os/unix/linux/netstat.py,sha256=MAC4ZdeNqcKpxT2ZMh1-7rjt4Pt_WQIRy7RChr7nlPk,1649
|
227
|
+
dissect/target/plugins/os/unix/linux/network_managers.py,sha256=nr0gA3hBqsvP9k6xAYmRYwGRB1kMtXB1k0pe78jWdFI,25768
|
228
228
|
dissect/target/plugins/os/unix/linux/proc.py,sha256=jm35fAasnNbObN2tpflwQuCfVYLDkTP2EDrzYG42ZSk,23354
|
229
229
|
dissect/target/plugins/os/unix/linux/processes.py,sha256=rvDJWAp16WAJZ91A8_GJJIj5y0U7BNnU8CW_47AueKY,1967
|
230
230
|
dissect/target/plugins/os/unix/linux/services.py,sha256=-d2y073mOXUM3XCzRgDVCRFR9eTLoVuN8FsZVewHzRg,4075
|
@@ -350,7 +350,7 @@ dissect/target/tools/logging.py,sha256=5ZnumtMWLyslxfrUGZ4ntRyf3obOOhmn8SBjKfdLc
|
|
350
350
|
dissect/target/tools/mount.py,sha256=8GRYnu4xEmFBHxuIZAYhOMyyTGX8fat1Ou07DNiUnW4,3945
|
351
351
|
dissect/target/tools/query.py,sha256=e-yAN9zdQjuOiTuoOQoo17mVEQGGcOgaA9YkF4GYpkM,15394
|
352
352
|
dissect/target/tools/reg.py,sha256=FDsiBBDxjWVUBTRj8xn82vZe-J_d9piM-TKS3PHZCcM,3193
|
353
|
-
dissect/target/tools/shell.py,sha256=
|
353
|
+
dissect/target/tools/shell.py,sha256=7jur65pFugpZHyfA0MkaMPCYWZPUSFjhkFQZO8IBYXQ,52077
|
354
354
|
dissect/target/tools/utils.py,sha256=JJZDSso1CEK2sv4Z3HJNgqxH6G9S5lbmV-C3h-XmcMo,12035
|
355
355
|
dissect/target/tools/yara.py,sha256=70k-2VMulf1EdkX03nCACzejaOEcsFHOyX-4E40MdQU,2044
|
356
356
|
dissect/target/tools/dump/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -365,10 +365,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
|
|
365
365
|
dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
|
366
366
|
dissect/target/volumes/md.py,sha256=7ShPtusuLGaIv27SvEETtgsuoQyAa4iAAeOR1NEaajI,1689
|
367
367
|
dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
|
368
|
-
dissect.target-3.20.
|
369
|
-
dissect.target-3.20.
|
370
|
-
dissect.target-3.20.
|
371
|
-
dissect.target-3.20.
|
372
|
-
dissect.target-3.20.
|
373
|
-
dissect.target-3.20.
|
374
|
-
dissect.target-3.20.
|
368
|
+
dissect.target-3.20.dev16.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
|
369
|
+
dissect.target-3.20.dev16.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
370
|
+
dissect.target-3.20.dev16.dist-info/METADATA,sha256=RLzyPf8gnwZFIOTzoWItUBwzSzdMYkdoBdJnENDslDk,12897
|
371
|
+
dissect.target-3.20.dev16.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
372
|
+
dissect.target-3.20.dev16.dist-info/entry_points.txt,sha256=BWuxAb_6AvUAQpIQOQU0IMTlaF6TDht2AIZK8bHd-zE,492
|
373
|
+
dissect.target-3.20.dev16.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
374
|
+
dissect.target-3.20.dev16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
{dissect.target-3.20.dev14.dist-info → dissect.target-3.20.dev16.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|