dissect.target 3.15.dev3__py3-none-any.whl → 3.15.dev4__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/plugin.py +36 -25
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/METADATA +1 -1
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/RECORD +8 -8
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/COPYRIGHT +0 -0
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/LICENSE +0 -0
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/WHEEL +0 -0
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/entry_points.txt +0 -0
- {dissect.target-3.15.dev3.dist-info → dissect.target-3.15.dev4.dist-info}/top_level.txt +0 -0
dissect/target/plugin.py
CHANGED
@@ -292,18 +292,43 @@ class OSPlugin(Plugin):
|
|
292
292
|
This provides a base class for certain common functions of OS's, which each OS plugin has to implement separately.
|
293
293
|
|
294
294
|
For example, it provides an interface for retrieving the hostname and users of a target.
|
295
|
+
|
296
|
+
All derived classes MUST implement ALL the classmethods and exported
|
297
|
+
methods with the same ``@classmethod`` or ``@export(...)`` annotation.
|
295
298
|
"""
|
296
299
|
|
300
|
+
def __init_subclass__(cls, **kwargs):
|
301
|
+
# Note that cls is the subclass
|
302
|
+
super().__init_subclass__(**kwargs)
|
303
|
+
|
304
|
+
for os_method in get_nonprivate_attributes(OSPlugin):
|
305
|
+
if isinstance(os_method, property):
|
306
|
+
os_method = os_method.fget
|
307
|
+
os_docstring = os_method.__doc__
|
308
|
+
|
309
|
+
method = getattr(cls, os_method.__name__, None)
|
310
|
+
if isinstance(method, property):
|
311
|
+
method = method.fget
|
312
|
+
# This works as None has a __doc__ property (which is None).
|
313
|
+
docstring = method.__doc__
|
314
|
+
|
315
|
+
if method and not docstring:
|
316
|
+
if hasattr(method, "__func__"):
|
317
|
+
method = method.__func__
|
318
|
+
method.__doc__ = os_docstring
|
319
|
+
|
297
320
|
def check_compatible(self) -> bool:
|
298
|
-
"""OSPlugin's use a different compatibility check, override the
|
321
|
+
"""OSPlugin's use a different compatibility check, override the one from the :class:`Plugin` class.
|
322
|
+
|
323
|
+
Returns:
|
324
|
+
This function always returns ``True``.
|
325
|
+
"""
|
299
326
|
return True
|
300
327
|
|
301
328
|
@classmethod
|
302
329
|
def detect(cls, fs: Filesystem) -> Optional[Filesystem]:
|
303
330
|
"""Provide detection of this OSPlugin on a given filesystem.
|
304
331
|
|
305
|
-
Note: must be implemented as a classmethod.
|
306
|
-
|
307
332
|
Args:
|
308
333
|
fs: :class:`~dissect.target.filesystem.Filesystem` to detect the OS on.
|
309
334
|
|
@@ -316,11 +341,9 @@ class OSPlugin(Plugin):
|
|
316
341
|
def create(cls, target: Target, sysvol: Filesystem) -> OSPlugin:
|
317
342
|
"""Initiate this OSPlugin with the given target and detected filesystem.
|
318
343
|
|
319
|
-
Note: must be implemented as a classmethod.
|
320
|
-
|
321
344
|
Args:
|
322
|
-
target: The Target object.
|
323
|
-
sysvol: The filesystem that was detected in the detect() function.
|
345
|
+
target: The :class:`~dissect.target.target.Target` object.
|
346
|
+
sysvol: The filesystem that was detected in the ``detect()`` function.
|
324
347
|
|
325
348
|
Returns:
|
326
349
|
An instantiated version of the OSPlugin.
|
@@ -329,9 +352,7 @@ class OSPlugin(Plugin):
|
|
329
352
|
|
330
353
|
@export(property=True)
|
331
354
|
def hostname(self) -> Optional[str]:
|
332
|
-
"""
|
333
|
-
|
334
|
-
Implementations must be decorated with ``@export(property=True)``.
|
355
|
+
"""Return the target's hostname.
|
335
356
|
|
336
357
|
Returns:
|
337
358
|
The hostname as string.
|
@@ -340,9 +361,7 @@ class OSPlugin(Plugin):
|
|
340
361
|
|
341
362
|
@export(property=True)
|
342
363
|
def ips(self) -> list[str]:
|
343
|
-
"""
|
344
|
-
|
345
|
-
Implementations must be decorated with ``@export(property=True)``.
|
364
|
+
"""Return the IP addresses configured in the target.
|
346
365
|
|
347
366
|
Returns:
|
348
367
|
The IPs as list.
|
@@ -351,9 +370,7 @@ class OSPlugin(Plugin):
|
|
351
370
|
|
352
371
|
@export(property=True)
|
353
372
|
def version(self) -> Optional[str]:
|
354
|
-
"""
|
355
|
-
|
356
|
-
Implementations must be decorated with ``@export(property=True)``.
|
373
|
+
"""Return the target's OS version.
|
357
374
|
|
358
375
|
Returns:
|
359
376
|
The OS version as string.
|
@@ -362,9 +379,7 @@ class OSPlugin(Plugin):
|
|
362
379
|
|
363
380
|
@export(record=EmptyRecord)
|
364
381
|
def users(self) -> list[Record]:
|
365
|
-
"""
|
366
|
-
|
367
|
-
Implementations must be decorated with @export.
|
382
|
+
"""Return the users available in the target.
|
368
383
|
|
369
384
|
Returns:
|
370
385
|
A list of user records.
|
@@ -373,9 +388,7 @@ class OSPlugin(Plugin):
|
|
373
388
|
|
374
389
|
@export(property=True)
|
375
390
|
def os(self) -> str:
|
376
|
-
"""
|
377
|
-
|
378
|
-
Implementations must be decorated with ``@export(property=True)``.
|
391
|
+
"""Return a slug of the target's OS name.
|
379
392
|
|
380
393
|
Returns:
|
381
394
|
A slug of the OS name, e.g. 'windows' or 'linux'.
|
@@ -384,9 +397,7 @@ class OSPlugin(Plugin):
|
|
384
397
|
|
385
398
|
@export(property=True)
|
386
399
|
def architecture(self) -> Optional[str]:
|
387
|
-
"""
|
388
|
-
|
389
|
-
Implementations must be decorated with ``@export(property=True)``.
|
400
|
+
"""Return a slug of the target's OS architecture.
|
390
401
|
|
391
402
|
Returns:
|
392
403
|
A slug of the OS architecture, e.g. 'x86_32-unix', 'MIPS-linux' or
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: dissect.target
|
3
|
-
Version: 3.15.
|
3
|
+
Version: 3.15.dev4
|
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
|
@@ -3,7 +3,7 @@ dissect/target/container.py,sha256=9ixufT1_0WhraqttBWwQjG80caToJqvCX8VjFk8d5F0,9
|
|
3
3
|
dissect/target/exceptions.py,sha256=VVW_Rq_vQinapz-2mbJ3UkxBEZpb2pE_7JlhMukdtrY,2877
|
4
4
|
dissect/target/filesystem.py,sha256=oCPNw09I3odf69HKkqph6EM5-AywAQIn9UPO-BxtbpY,53445
|
5
5
|
dissect/target/loader.py,sha256=4ZdX-QJY83NPswTyNG31LUwYXdV1tuByrR2vKKg7d5k,7214
|
6
|
-
dissect/target/plugin.py,sha256=
|
6
|
+
dissect/target/plugin.py,sha256=MyBjC7uJ-qml9SQMQ6xsNMdudsOFNJiHNMRn-AFi_pM,47405
|
7
7
|
dissect/target/report.py,sha256=06uiP4MbNI8cWMVrC1SasNS-Yg6ptjVjckwj8Yhe0Js,7958
|
8
8
|
dissect/target/target.py,sha256=CuqLTD3fwr4HIxtDgN_fwJ3UHSqe5PhNJlLTVGsluB8,31908
|
9
9
|
dissect/target/volume.py,sha256=aQZAJiny8jjwkc9UtwIRwy7nINXjCxwpO-_UDfh6-BA,15801
|
@@ -305,10 +305,10 @@ dissect/target/volumes/luks.py,sha256=v_mHW05KM5iG8JDe47i2V4Q9O0r4rnAMA9m_qc9cYw
|
|
305
305
|
dissect/target/volumes/lvm.py,sha256=wwQVR9I3G9YzmY6UxFsH2Y4MXGBcKL9aayWGCDTiWMU,2269
|
306
306
|
dissect/target/volumes/md.py,sha256=j1K1iKmspl0C_OJFc7-Q1BMWN2OCC5EVANIgVlJ_fIE,1673
|
307
307
|
dissect/target/volumes/vmfs.py,sha256=-LoUbn9WNwTtLi_4K34uV_-wDw2W5hgaqxZNj4UmqAQ,1730
|
308
|
-
dissect.target-3.15.
|
309
|
-
dissect.target-3.15.
|
310
|
-
dissect.target-3.15.
|
311
|
-
dissect.target-3.15.
|
312
|
-
dissect.target-3.15.
|
313
|
-
dissect.target-3.15.
|
314
|
-
dissect.target-3.15.
|
308
|
+
dissect.target-3.15.dev4.dist-info/COPYRIGHT,sha256=m-9ih2RVhMiXHI2bf_oNSSgHgkeIvaYRVfKTwFbnJPA,301
|
309
|
+
dissect.target-3.15.dev4.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
310
|
+
dissect.target-3.15.dev4.dist-info/METADATA,sha256=ZHcCCAily7wTHdfI01lHfl1RXkpa00HXb_oUyZUtO3M,11106
|
311
|
+
dissect.target-3.15.dev4.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
312
|
+
dissect.target-3.15.dev4.dist-info/entry_points.txt,sha256=tvFPa-Ap-gakjaPwRc6Fl6mxHzxEZ_arAVU-IUYeo_s,447
|
313
|
+
dissect.target-3.15.dev4.dist-info/top_level.txt,sha256=Mn-CQzEYsAbkxrUI0TnplHuXnGVKzxpDw_po_sXpvv4,8
|
314
|
+
dissect.target-3.15.dev4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|