From dd7ea072284cba23f4a14210a841e2c1c503e3ce Mon Sep 17 00:00:00 2001 From: Mike Auty Date: Thu, 1 Jun 2017 00:54:07 +0100 Subject: [PATCH] Rejig plugins and partially parse the command-line options to set a plugin path early. --- volatility/cli/__init__.py | 18 ++++++++++++------ volatility/plugins/__init__.py | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/volatility/cli/__init__.py b/volatility/cli/__init__.py index 9cdcf336c..b19e4c113 100644 --- a/volatility/cli/__init__.py +++ b/volatility/cli/__init__.py @@ -48,6 +48,18 @@ class CommandLine(object): volatility.framework.require_interface_version(0, 0, 0) + parser = argparse.ArgumentParser(prog = 'volatility', + description = "An open-source memory forensics framework") + parser.add_argument("-c", "--config", help = "Load the configuration from a json file", default = None, + type = str) + parser.add_argument("-v", "--verbosity", help = "Increase output verbosity", default = 0, action = "count") + parser.add_argument("-p", "--plugins", help = "Semi-colon separated list of paths to find plugins", + default = "", type = str) + + partial_args, _ = parser.parse_known_args() + if partial_args.plugins: + volatility.plugins.__path__ = partial_args.plugins.split(";") + constants.PLUGINS_PATH + # 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 @@ -60,12 +72,6 @@ class CommandLine(object): plugin_name = plugin_name[len("volatility.plugins."):] plugin_list[plugin_name] = plugin - parser = argparse.ArgumentParser(prog = 'volatility', - description = "An open-source memory forensics framework") - parser.add_argument("-c", "--config", help = "Load the configuration from a json file", default = None, - type = str) - parser.add_argument("-v", "--verbosity", help = "Increase output verbosity", default = 0, action = "count") - seen_automagics = set() configurables_list = {} for amagic in automagics: diff --git a/volatility/plugins/__init__.py b/volatility/plugins/__init__.py index a25cb5bc9..965efb596 100644 --- a/volatility/plugins/__init__.py +++ b/volatility/plugins/__init__.py @@ -5,4 +5,5 @@ """ from volatility.framework import constants -__path__ = constants.PLUGINS_PATH +if not __path__: + __path__ = constants.PLUGINS_PATH