Refactor the plugin listing code.

This commit is contained in:
Mike Auty
2018-03-25 18:15:22 +01:00
parent 10f65a67c8
commit 19c3536afc
2 changed files with 14 additions and 7 deletions
+4 -7
View File
@@ -13,10 +13,12 @@ import inspect
import json
import logging
import sys
import typing
import volatility.framework
import volatility.framework.configuration.requirements
import volatility.plugins
from volatility import framework
from volatility.framework import automagic, constants, contexts, interfaces
from volatility.framework.configuration import requirements
from volatility.framework.renderers import text
@@ -98,15 +100,10 @@ class CommandLine(object):
# Do the initialization
ctx = contexts.Context() # Construct a blank context
volatility.framework.import_files(volatility.plugins) # Will not log as console's default level is WARNING
framework.import_files(volatility.plugins) # Will not log as console's default level is WARNING
automagics = automagic.available(ctx)
plugin_list = {}
for plugin in volatility.framework.class_subclasses(interfaces.plugins.PluginInterface):
plugin_name = plugin.__module__ + "." + plugin.__name__
if plugin_name.startswith("volatility.plugins."):
plugin_name = plugin_name[len("volatility.plugins."):]
plugin_list[plugin_name] = plugin
plugin_list = framework.list_plugins()
seen_automagics = set()
configurables_list = {}
+10
View File
@@ -104,6 +104,16 @@ def import_files(base_module) -> None:
return None
def list_plugins() -> typing.Dict[str, typing.Type[interfaces.plugins.PluginInterface]]:
plugin_list = {}
for plugin in class_subclasses(interfaces.plugins.PluginInterface):
plugin_name = plugin.__module__ + "." + plugin.__name__
if plugin_name.startswith("volatility.plugins."):
plugin_name = plugin_name[len("volatility.plugins."):]
plugin_list[plugin_name] = plugin
return plugin_list
# Check the python version to ensure it's suitable
# We currently require 3.5.3 since 3.5.1 has no typing.Type and 3.5.2 is broken for ''/delayed encapsulated types
required_python_version = (3, 5, 3)