dissect.target.plugins.general.plugins#

Module Contents#

Classes#

PluginListPlugin

Base class for plugins.

Functions#

categorize_plugins

Categorize plugins based on the module it's from.

get_exported_plugins

dictify_module_recursive

Create a dict from a list of strings.

update_dict_recursive

Update source dictionary with data in updated_dict.

output_plugin_description_recursive

Create plugin overview with identations.

get_plugin_description

Returns plugin_overview with specific indentation.

get_description_dict

Returns a list of indented descriptions.

dissect.target.plugins.general.plugins.categorize_plugins(plugins_selection: list[dict] = None) dict#

Categorize plugins based on the module it’s from.

dissect.target.plugins.general.plugins.get_exported_plugins()#
dissect.target.plugins.general.plugins.dictify_module_recursive(list_of_items: list, last_value: dissect.target.plugin.Plugin) dict#

Create a dict from a list of strings.

The last element inside the list, will point to last_value

dissect.target.plugins.general.plugins.update_dict_recursive(source_dict: dict, updated_dict: dict) dict#

Update source dictionary with data in updated_dict.

dissect.target.plugins.general.plugins.output_plugin_description_recursive(structure_dict: Dict | dissect.target.plugin.Plugin, print_docs: bool, indentation_step=0) List[str]#

Create plugin overview with identations.

dissect.target.plugins.general.plugins.get_plugin_description(plugin_class: Type[dissect.target.plugin.Plugin], print_docs: bool, indentation_step: int) str#

Returns plugin_overview with specific indentation.

dissect.target.plugins.general.plugins.get_description_dict(structure_dict: Dict, print_docs: bool, indentation_step: int) List[str]#

Returns a list of indented descriptions.

class dissect.target.plugins.general.plugins.PluginListPlugin(target: dissect.target.Target)#

Bases: dissect.target.plugin.Plugin

Base class for plugins.

Plugins can optionally be namespaced by specifying the __namespace__ class attribute. Namespacing results in your plugin needing to be prefixed with this namespace when being called. For example, if your plugin has specified test as namespace and a function called example, you must call your plugin with test.example:

A Plugin class has the following private class attributes:

  • __namespace__

  • __record_descriptors__

With the following three being assigned in register():

  • __plugin__

  • __functions__

  • __exports__

Additionally, the methods and attributes of Plugin receive more private attributes by using decorators.

The export() decorator adds the following private attributes

  • __exported__

  • __output__: Set with the export() decorator.

  • __record__: Set with the export() decorator.

The internal() decorator and InternalPlugin set the __internal__ attribute. Finally. args() decorator sets the __args__ attribute.

Parameters:

target – The Target object to load the plugin for.

check_compatible() None#

Perform a compatibility check with the target.

This function should return None if the plugin is compatible with the current target (self.target). For example, check if a certain file exists. Otherwise it should raise an UnsupportedPluginError.

Raises:

UnsupportedPluginError – If the plugin could not be loaded.

plugins(plugins: list[dict] = None, print_docs: bool = False) None#