dissect.target 3.18.dev11__py3-none-any.whl → 3.18.dev12__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/etc/__init__.py +0 -0
- dissect/target/plugins/os/unix/etc/etc.py +77 -0
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/METADATA +1 -1
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/RECORD +9 -7
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/LICENSE +0 -0
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/WHEEL +0 -0
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/top_level.txt +0 -0
File without changes
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import fnmatch
|
2
|
+
import logging
|
3
|
+
import re
|
4
|
+
from pathlib import Path
|
5
|
+
from typing import Iterator
|
6
|
+
|
7
|
+
from dissect.target import Target
|
8
|
+
from dissect.target.helpers.record import TargetRecordDescriptor
|
9
|
+
from dissect.target.plugin import arg, export
|
10
|
+
from dissect.target.plugins.general.config import (
|
11
|
+
ConfigurationEntry,
|
12
|
+
ConfigurationTreePlugin,
|
13
|
+
)
|
14
|
+
|
15
|
+
UnixConfigTreeRecord = TargetRecordDescriptor(
|
16
|
+
"unix/config",
|
17
|
+
[
|
18
|
+
("path", "source"),
|
19
|
+
("path", "path"),
|
20
|
+
("string", "key"),
|
21
|
+
("string[]", "value"),
|
22
|
+
],
|
23
|
+
)
|
24
|
+
|
25
|
+
log = logging.getLogger(__name__)
|
26
|
+
|
27
|
+
|
28
|
+
class EtcTree(ConfigurationTreePlugin):
|
29
|
+
__namespace__ = "etc"
|
30
|
+
|
31
|
+
def __init__(self, target: Target):
|
32
|
+
super().__init__(target, "/etc")
|
33
|
+
|
34
|
+
def _sub(self, items: ConfigurationEntry, entry: Path, pattern: str) -> Iterator[UnixConfigTreeRecord]:
|
35
|
+
index = 0
|
36
|
+
config_entry = items
|
37
|
+
if not isinstance(items, dict):
|
38
|
+
items = items.as_dict()
|
39
|
+
|
40
|
+
for raw_key, value in items.items():
|
41
|
+
key = re.sub(r"[\n\r\t]", "", raw_key)
|
42
|
+
path = Path(entry) / Path(key)
|
43
|
+
|
44
|
+
if isinstance(value, dict):
|
45
|
+
yield from self._sub(value, path, pattern)
|
46
|
+
continue
|
47
|
+
|
48
|
+
if not isinstance(value, list):
|
49
|
+
value = [str(value)]
|
50
|
+
|
51
|
+
if fnmatch.fnmatch(path, pattern):
|
52
|
+
data = {
|
53
|
+
"_target": self.target,
|
54
|
+
"source": self.target.fs.path(config_entry.entry.path),
|
55
|
+
"path": path,
|
56
|
+
"key": key,
|
57
|
+
"value": value,
|
58
|
+
}
|
59
|
+
if value == [""]:
|
60
|
+
data["key"] = index
|
61
|
+
data["value"] = [key]
|
62
|
+
index += 1
|
63
|
+
|
64
|
+
yield UnixConfigTreeRecord(**data)
|
65
|
+
|
66
|
+
@export(record=UnixConfigTreeRecord)
|
67
|
+
@arg("--glob", dest="pattern", required=False, default="*", type=str, help="Glob-style pattern to search for")
|
68
|
+
def etc(self, pattern: str) -> Iterator[UnixConfigTreeRecord]:
|
69
|
+
for entry, subs, items in self.config_fs.walk("/"):
|
70
|
+
for item in items:
|
71
|
+
try:
|
72
|
+
config_object = self.get(str(Path(entry) / Path(item)))
|
73
|
+
if isinstance(config_object, ConfigurationEntry):
|
74
|
+
yield from self._sub(config_object, Path(entry) / Path(item), pattern)
|
75
|
+
except Exception:
|
76
|
+
log.warning("Could not open configuration item: %s", item)
|
77
|
+
pass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dissect.target
|
3
|
-
Version: 3.18.
|
3
|
+
Version: 3.18.dev12
|
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
|
@@ -209,6 +209,8 @@ dissect/target/plugins/os/unix/bsd/osx/_os.py,sha256=KvP7YJ7apVwoIop7MR-8q5QbVGo
|
|
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
211
|
dissect/target/plugins/os/unix/esxi/_os.py,sha256=8kFFK9986zN8hXmDUWwdQHtbV33nWKerRuisg_xbsoQ,17504
|
212
|
+
dissect/target/plugins/os/unix/etc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
213
|
+
dissect/target/plugins/os/unix/etc/etc.py,sha256=ZyuMfP1QKA2_l8XQVu5CLex049MVFre3Yru5otiAqpE,2531
|
212
214
|
dissect/target/plugins/os/unix/linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
213
215
|
dissect/target/plugins/os/unix/linux/_os.py,sha256=YJYwuq_iAinOrPqTE49Q4DLYMWBeRCly1uTbDvPhp6Q,2796
|
214
216
|
dissect/target/plugins/os/unix/linux/cmdline.py,sha256=AyMfndt3UsmJtoOyZYC8nWq2GZg9oPvn8SiI3M4NxnE,1622
|
@@ -343,10 +345,10 @@ dissect/target/volumes/luks.py,sha256=OmCMsw6rCUXG1_plnLVLTpsvE1n_6WtoRUGQbpmu1z
|
|
343
345
|
dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
|
344
346
|
dissect/target/volumes/md.py,sha256=j1K1iKmspl0C_OJFc7-Q1BMWN2OCC5EVANIgVlJ_fIE,1673
|
345
347
|
dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
|
346
|
-
dissect.target-3.18.
|
347
|
-
dissect.target-3.18.
|
348
|
-
dissect.target-3.18.
|
349
|
-
dissect.target-3.18.
|
350
|
-
dissect.target-3.18.
|
351
|
-
dissect.target-3.18.
|
352
|
-
dissect.target-3.18.
|
348
|
+
dissect.target-3.18.dev12.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
|
349
|
+
dissect.target-3.18.dev12.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
350
|
+
dissect.target-3.18.dev12.dist-info/METADATA,sha256=oWwEEHk6AHCEQn67G19XvZrlpWcdxNUTlHh025msebE,12723
|
351
|
+
dissect.target-3.18.dev12.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
|
352
|
+
dissect.target-3.18.dev12.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
|
353
|
+
dissect.target-3.18.dev12.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
354
|
+
dissect.target-3.18.dev12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
{dissect.target-3.18.dev11.dist-info → dissect.target-3.18.dev12.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|