Volatility 3¶
This is the documentation for Volatility 3, the most advanced memory forensics framework in the world. Like previous versions of the Volatility framework, Volatility 3 is Open Source.
Here are some guidelines for using Volatility 3 effectively:
Volatility 3 Basics¶
Volatility splits memory analysis down to several components:
Memory layers
Templates and Objects
Symbol Tables
Volatility 3 stores all of these within a Context
,
which acts as a container for all the various layers and tables necessary to conduct memory analysis.
Memory layers¶
A memory layer is a body of data that can be accessed by requesting data at a specific address. Memory is seen as sequential when accessed through sequential addresses, however, there is no obligation for the data to be stored sequentially, and modern processors tend to store the memory in a paged format. Moreover, there is no need for the data to be stored in an easily accessible format, it could be encoded or encrypted or more, it could be the combination of two other sources. These are typically handled by programs that process file formats, or the memory manager of the processor, but these are all translations (either in the geometric or linguistic sense) of the original data.
In Volatility 3 this is represented by a directed graph, whose end nodes are
DataLayers
and whose internal nodes are
specifically called a TranslationLayer
.
In this way, a raw memory image in the LiME file format and a page file can be
combined to form a single Intel virtual memory layer. When requesting addresses from the Intel layer, it will use the
Intel memory mapping algorithm, along with the address of the directory table base or page table map, to translate that
address into a physical address, which will then either be directed towards the swap layer or the LiME layer. Should it
be directed towards the LiME layer, the LiME file format algorithm will be translated to determine where within the file
the data is stored and that will be returned.
Note
Volatility 2 had a similar concept, called address spaces, but these could only stack linearly one on top of another.
Volatility currently supports the following physical formats:
Buffered data
Flat/Raw files
LiME files
Crashdump files
VMware snapshots (vmem and vmss)
It also supports the mappings based on the following architectures:
Intel (x86)
Intel PAE
Intel 32e (x86_64)
Templates and Objects¶
Once we can address contiguous chunks of memory with a means to translate a virtual address (as seen by the programs)
into the actual data used by the processor, we can start pulling out
Objects
by taking a
Template
and constructing
it on the memory layer at a specific offset. A Template
contains
all the information you can know about the structure of the object without actually being populated by any data.
As such a Template
can tell you the size of a structure and its
members, how far into the structure a particular member lives and potentially what various values in that field would
mean, but not what resides in a particular member.
Using a Template
on a memory layer at a particular offset, an
Object
can be constructed. In Volatility 3, once an
Object
has been created, the data has been read from the
layer and is not read again. An object allows its members to be interrogated and in particular allows pointers to be
followed, providing easy access to the data contained in the object.
Note
Volatility 2 would re-read the data which was useful for live memory forensics but quite inefficient for the more common static memory analysis typically conducted. Volatility 3 requires that objects be manually reconstructed if the data may have changed. Volatility 3 also constructs actual Python integers and floats whereas Volatility 2 created proxy objects which would sometimes cause problems with type checking.
Symbol Tables¶
Most compiled programs know of their own templates, and define the structure (and location within the program) of these
templates as a Symbol
. A
Symbol
is often an address and a template and can
be used to refer to either independently. Lookup tables of these symbols are often produced as debugging information
alongside the compilation of the program. Volatility 3 provides access to these through a
SymbolTable
, many of which can be collected
within a Context
as a SymbolSpace
.
A Context
can store only one SymbolSpace
at a time, although a SymbolSpace
can store as
many SymbolTable
items as necessary.
Volatility 3 uses the de facto naming convention for symbols of module!symbol to refer to them. It reads them from its
own JSON formatted file, which acts as a common intermediary between Windows PDB files, Linux DWARF files, other symbol
formats and the internal Python format that Volatility 3 uses to represent
a Template
or
a Symbol
.
Note
Volatility 2’s name for a SymbolSpace
was a profile, but it could
not differentiate between symbols from different modules and required special handling for 32-bit programs that
used Wow64 on Windows. This meant that all symbols lived in a single namespace with the possibility of symbol name
collisions. It read the symbols using a format called vtypes, written in Python code directly.
This made it less transferable or able to be used by other software.
Plugins¶
A plugin acts as a means of requesting data from the user interface (and so the user) and then using it to carry out a
specific form of analysis on the Context
(containing whatever symbol tables and memory layers it may). The means of communication between the user interface and
the library is the configuration tree, which is used by components within the Context
to store configurable data. After the plugin has been run, it then returns the results in a specific format known as a
TreeGrid
. This ensures that the data can be handled by consumers of
the library, without knowing exactly what the data is or how it’s formatted.
Output Renderers¶
User interfaces can choose how best to present the output of the results to their users. The library always responds from
every plugin with a TreeGrid
, and the user interface can then determine how
best to display it. For the Command Line Interface, that might be via text output as a table, or it might output to an
SQLite database or a CSV file. For a web interface, the best output is probably as JSON where it could be displayed as
a table, or inserted into a database like Elastic Search and trawled using an existing frontend such as Kibana.
The renderers only need to know how to process very basic types (booleans, strings, integers, bytes) and a few additional specific ones (disassembly and various absent values).
Configuration Tree¶
The configuration tree acts as the interface between the calling program and Volatility 3 library. Elements of the
library (such as a Plugin
,
a TranslationLayer
,
an Automagic
, etc.) can use the configuration
tree to inform the calling program of the options they require and/or optionally support, and allows the calling program
to provide that information when the library is then called.
Automagic¶
There are certain setup tasks that establish the context in a way favorable to a plugin before it runs, removing
several tasks that are repetitive and also easy to get wrong. These are called
Automagic
, since they do things like magically
taking a raw memory image and automatically providing the plugin with an appropriate Intel translation layer and an
accurate symbol table without either the plugin or the calling program having to specify all the necessary details.
Note
Volatility 2 used to do this as well, but it wasn’t a particularly modular mechanism, and was used only for stacking address spaces (rather than identifying profiles), and it couldn’t really be disabled/configured easily. Automagics in Volatility 3 are a core component which consumers of the library can call or not at their discretion.
How to Write a Simple Plugin¶
This guide will step through how to construct a simple plugin using Volatility 3.
The example plugin we’ll use is DllList
, which features the main traits
of a normal plugin, and reuses other plugins appropriately.
Inherit from PluginInterface¶
The first step is to define a class that inherits from PluginInterface
.
Volatility automatically finds all plugins defined under the various plugin directories by importing them and then
making use of any classes that inherit from PluginInterface
.
from volatility.framework import interfaces
class DllList(interfaces.plugins.PluginInterface):
The next step is to define the requirements of the plugin, these will be converted into options the user can provide based on the User Interface.
Define the plugin requirements¶
These requirements are the names of variables that will need to be populated in the configuration tree for the plugin to be able to run properly. Any that are defined as optional need not necessarily be provided.
@classmethod
def get_requirements(cls):
return [requirements.TranslationLayerRequirement(name = 'primary',
description = 'Memory layer for the kernel',
architectures = ["Intel32", "Intel64"]),
requirements.SymbolTableRequirement(name = "nt_symbols",
description = "Windows kernel symbols"),
requirements.PluginRequirement(name = 'pslist',
plugin = pslist.PsList,
version = (1, 0, 0)),
requirements.IntRequirement(name = 'pid',
description = "Process ID to include (all other processes are excluded)",
optional = True)]
This is a classmethod, because it is called before the specific plugin object has been instantiated (in order to know how to instantiate the plugin). At the moment these requirements are fairly straightforward:
requirements.TranslationLayerRequirement(name = 'primary',
description = 'Memory layer for the kernel',
architectures = ["Intel32", "Intel64"]),
This requirement indicates that the plugin will operate on a single
TranslationLayer
. The name of the
loaded layer will appear in the plugin’s configuration under the name primary
Note
The name itself is dynamic depending on the other layers already present in the Context. Always use the value from the configuration rather than attempting to guess what the layer will be called.
Finally, this defines that the translation layer must be on the Intel Architecture. At the moment, this acts as a filter, failing to be satisfied by memory images that do not match the architecture required.
This requirement (and the next two) are known as Complex Requirements, and user interfaces will likely not directly
request a value for this from a user. The value stored in the configuration tree for a
TranslationLayerRequirement
is
the string name of a layer present in the context’s memory that satisfies the requirement.
Most plugins will only operate on a single layer, but it is entirely possible for a plugin to request two different layers, for example a plugin that carries out some form of difference or statistics against multiple memory images.
requirements.SymbolTableRequirement(name = "nt_symbols",
description = "Windows kernel symbols"),
This requirement specifies the need for a particular
SymbolTable
to be loaded. This gets populated by various
Automagic
as the nearest sibling to a particular
TranslationLayerRequirement
.
This means that if the TranslationLayerRequirement
is satisfied and the Automagic
can determine
the appropriate SymbolTable
, the
name of the SymbolTable
will be stored in the configuration.
This requirement is also a Complex Requirement and therefore will not be requested directly from the user.
requirements.PluginRequirement(name = 'pslist',
plugin = pslist.PsList,
version = (1, 0, 0)),
This requirement indicates that the plugin will make use of another plugin’s code, and specifies the version requirements on that plugin. The version is specified in terms of Semantic Versioning, meaning that to be compatible, the major versions must be identical and the minor version must be equal to or higher than the one provided. This requirement does not make use of any data from the configuration, even if it were provided, it is merely a functional check before running the plugin.
requirements.IntRequirement(name = 'pid',
description = "Process ID to include (all other processes are excluded)",
optional = True)]
The final requirement is a Simple Requirement, populated by an integer. The description will be presented to the user to
describe what the value represents. The optional flag indicates that the plugin can function without the pid
value
being defined within the configuration tree at all.
Define the run method¶
The run method is the primary method called on a plugin. It takes no parameters (these have been passed through the
context’s configuration tree, and the context is provided at plugin initialization time) and returns an unpopulated
TreeGrid
object. These are typically constructed based on a
generator that carries out the bulk of the plugin’s processing. The
TreeGrid
also specifies the column names and types
that will be output as part of the TreeGrid
.
def run(self):
filter_func = pslist.PsList.create_pid_filter([self.config.get('pid', None)])
return renderers.TreeGrid([("PID", int),
("Process", str),
("Base", format_hints.Hex),
("Size", format_hints.Hex),
("Name", str),
("Path", str)],
self._generator(pslist.PsList.list_processes(self.context,
self.config['primary'],
self.config['nt_symbols'],
filter_func = filter_func)))
In this instance, the plugin constructs a filter (using the PsList plugin’s classmethod for creating filters).
It checks the plugin’s configuration for the pid
value, and passes it in as a list if it finds it, or None if
it does not. The create_pid_filter()
method accepts a list of process
identifiers that are included in the list. If the list is empty, all processes are returned.
The next line specifies the columns by their name and type. The types are simple types (int, str, bytes, float, and bool)
but can also provide hints as to how the output should be displayed (such as a hexidecimal number, using
volatility.framework.renderers.format_hints.Hex
).
This indicates to user interfaces that the value should be displayed in a particular way, but does not guarantee that the value
will be displayed that way (for example, if it doesn’t make sense to do so in a particular interface).
Finally, the generator is provided. The generator accepts a list of processes, which is gathered using a different plugin,
the PsList
plugin. That plugin features a classmethod,
so that other plugins can call it. As such, it takes all the necessary parameters rather than accessing them
from a configuration. Since it must be portable code, it takes a context, as well as the layer name,
symbol table and optionally a filter. In this instance we unconditionally
pass it the values from the configuration for the primary
and nt_symbols
requirements. This will generate a list
of EPROCESS
objects, as provided by the PsList
plugin,
and is not covered here but is used as an example for how to share code across plugins
(both as the provider and the consumer of the shared code).
Define the generator¶
The TreeGrid
can be populated without a generator,
but it is quite a common model to use. This is where the main processing for this plugin lives.
def _generator(self, procs):
for proc in procs:
for entry in proc.load_order_modules():
BaseDllName = FullDllName = renderers.UnreadableValue()
try:
BaseDllName = entry.BaseDllName.get_string()
# We assume that if the BaseDllName points to an invalid buffer, so will FullDllName
FullDllName = entry.FullDllName.get_string()
except exceptions.InvalidAddressException:
pass
yield (0, (proc.UniqueProcessId,
proc.ImageFileName.cast("string", max_length = proc.ImageFileName.vol.count,
errors = 'replace'),
format_hints.Hex(entry.DllBase), format_hints.Hex(entry.SizeOfImage),
BaseDllName, FullDllName))
This iterates through the list of processes and for each one calls the load_order_modules()
method on it. This provides
a list of the loaded modules within the process.
The plugin then defaults the BaseDllName
and FullDllName
variables to an UnreadableValue
,
which is a way of indicating to the user interface that the value couldn’t be read for some reason (but that it isn’t fatal).
There are currently four different reasons a value may be unreadable:
Unreadble: values which are empty because the data cannot be read
Unparsable: values which are empty because the data cannot be interpreted correctly
NotApplicable: values which are empty because they don’t make sense for this particular entry
NotAvailable: values which cannot be provided now (but might in a future run, via new symbols or an updated plugin)
This is a safety provision to ensure that the data returned by the Volatility library is accurate and describes why information may not be provided.
The plugin then takes the process’s BaseDllName
value, and calls get_string()
on it. All structure attributes,
as defined by the symbols, are directly accessible and use the case-style of the symbol library it came from (in Windows,
attributes are CamelCase), such as entry.BaseDllName
in this instance. Any attribtues not defined by the symbol but added
by Volatility extensions cannot be properties (in case they overlap with the attributes defined in the symbol libraries)
and are therefore always methods and prepended with get_
, in this example BaseDllName.get_string()
.
Finally, FullDllName
is populated. These operations read from memory, and as such, the memory image may be unable to
read the data at a particular offset. This will cause an exception to be thrown. In Volatility 3, exceptions are thrown
as a means of communicating when something exceptional happens. It is the responsibility of the plugin developer to
appropriately catch and handle any non-fatal exceptions and otherwise allow the exception to be thrown by the user interface.
In this instance, the InvalidAddressException
class is caught, which is thrown
by any layer which cannot access an offset requested of it. Since we have already populated both values with UnreadableValue
we do not need to write code for the exception handler.
Finally, we yield the record in the format required by the TreeGrid
,
a tuple, listing the indentation level (for trees) and then the list of values for each column.
This plugin demonstrates casting a value ImageFileName
to ensure it’s returned
as a string with a specific maximum length, rather than its original type (potentially an array of characters, etc).
This is carried out using the cast()
method which takes a type (either a native type, such as string or pointer, or a
structure type defined in a SymbolTable
such as <table>!_UNICODE
) and the parameters to that type.
Since the cast value must populate a string typed column, it had to be a Python string (such as being cast to the native
type string) and could not have been a special Structure such as _UNICODE
. For the format hint columns, the format
hint type must be used to ensure the error checking does not fail.
Changes between Volatility 2 and Volatility 3¶
Library and Context¶
Volatility 3 has been designed from the ground up to be a library, this means the components are independent and all
state required to run a particular plugin at a particular time is self-contained in an object derived from
a ContextInterface
.
The context contains the two core components that make up Volatility, layers of data and the available symbols.
Symbols and Types¶
Volatility 3 no longer uses profiles, it comes with an extensive library of
symbol tables
, and can generate new symbol
tables for most windows memory images, based on the memory image itself. This allows symbol tables to include specific
offsets for locations (symbol locations) based on that operating system in particular. This means it is easier and quicker
to identify structures within an operating system, by having known offsets for those structures provided by the official
debugging information.
Object Model changes¶
The object model has changed as well, objects now inherit directly from their Python counterparts, meaning an integer object is actually a Python integer (and has all the associated methods, and can be used whereever a normal int could). In Volatility 2, a complex proxy object was constructed which tried to emulate all the methods of the host object, but ultimately it was a different type and could not be used in the same places (critically, it could make the ordering of operations important, since a + b might not work, but b + a might work fine).
Volatility 3 has also had significant speed improvements, where Volatility 2 was designed to allow access to live memory images and situations in which the underlying data could change during the run of the plugin, in Volatility 3 the data is now read once at the time of object construction, and will remain static, even if the underlying layer changes. This was because live memory analysis was barely ever used, and this feature could cause a particular value to be re-read many times over for no benefit (particularly since each re-read could result in many additional image reads from following page table translations).
Finally, in order to provide Volatility specific information without impact on the ability for structures to have members
with arbitrary names, all the metadata about the object (such as its layer or offset) have been moved to a read-only vol()
dictionary.
Further the distinction between a Template
(the thing that
constructs an object) and the Object
itself has
been made more explicit. In Volatility 2, some information (such as size) could only be determined from a constructed object,
leading to instantiating a template on an empty buffer, just to determine the size. In Volatility 3, templates contain
information such as their size, which can be queried directly without constructing the object.
Layer and Layer dependencies¶
Address spaces in Volatility 2, are now more accurately referred to as
Translation Layers
, since each one typically sits
atop another and can translate addresses between the higher logical layer and the lower physical layer. Address spaces in
Volatility 2 were strictly limited to a stack, one on top of one other. In Volatility 3, layers can have multiple
“dependencies” (lower layers), which allows for the integration of features such as swap space.
Automagic¶
In Volatility 2, we often tried to make this simpler for both users and developers. This resulted in something was referred to as automagic, in that it was magic that happened automatically. We’ve now codified that more, so that the automagic processes are clearly defined and can be enabled or disabled as necessary for any particular run. We also included a stacker automagic to emulate the most common feature of Volatility 2, automatically stacking address spaces (now translation layers) on top of each other.
Searching and Scanning¶
Scanning is very similar to scanning in Volatility 2, a scanner object (such as a
BytesScanner
or RegExScanner
) is
primed with the data to be searched for, and the scan()
method is called on the layer to be searched.
Output Rendering¶
This is extremely similar to Volatility 2, because we were developing it for Volatility 3 when we added it to Volatility 2.
We now require that all plugins produce output in a TreeGrid
object,
which ensure that the library can be used regardless of which interface is driving it. An example web GUI is also available
called Volumetric which allows all the plugins that can be run from the command line to be run from a webpage, and offers
features such as automatic formatting and sorting of the data, which previously couldn’t be provided easily from the CLI.
There is also the ability to provide file output such that the user interface can provide a means to render or save those files.
Writing more advanced Plugins¶
There are several common tasks you might wish to accomplish, there is a recommended means of achieving most of these which are discussed below.
Writing Reusable Methods¶
Classes which inherit from PluginInterface
all have a run()
method
which takes no parameters and will return a TreeGrid
. Since most useful
functions are parameterized, to provide parameters to a plugin the configuration for the context must be appropriately manipulated.
There is scope for this, in order to run multiple plugins (see Writing plugins that run other plugins) but a much simpler method
is to provide a parameterized classmethod within the plugin, which will allow the method to yield whatever kind of output it will
generate and take whatever parameters it might need.
This is how processes are listed, which is an often used function. The code lives within the
PsList
plugin but can be used by other plugins by providing the
appropriate parameters (see
list_processes()
).
It is up to the author of a plugin to validate that any required plugins are present and are the appropriate version.
Writing plugins that run other plugins¶
Occasionally plugins will want to process the output from other plugins (for example, the timeliner plugin which runs all other available plugins that feature a Timeliner interface). This can be achieved with the following example code:
automagics = automagic.choose_automagic(automagic.available(self._context), plugin_class)
plugin = plugins.construct_plugin(self.context, automagics, plugin_class, self.config_path,
self._progress_callback, self._file_consumer)
This code will first generate suitable automagics for running against the context. Unfortunately this must be re-run for
each plugin in order to populate the context’s configuration correctly based on the plugin’s requirements (which may vary
between plugins). Once the automagics have been constructed, the plugin can be instantiated using the helper function
construct_plugin()
providing:
the base context (containing the configuration and any already loaded layers or symbol tables),
the plugin class to run,
the configuration path within the context for the plugin
any callback to determine progress in lengthy operations
any file consumers for files created during running of the plugin
With the constructed plugin, it can either be run by calling its
run()
method, or any other known method can
be invoked on it.
Writing Scanners¶
Scanners are objects that adhere to the ScannerInterface
. They are
passed to the scan()
method on layers which will
divide the provided range of sections (or the entire layer
if none are provided) and call the ScannerInterface()
’s call method
method with each chunk as a parameter, ensuring a suitable amount of overlap (as defined by the scanner).
The offset of the chunk, within the layer, is also provided as a parameter.
Scanners can technically maintain state, but it is not recommended since the ordering that the chunks are scanned is not guaranteed. Scanners may be executed in parallel if they mark themselves as thread_safe although the threading technique may be either standard threading or multiprocessing. Note, the only component of the scans which is parallelized are those that go on within the scan method. As such, any processing carried out on the results yielded by the scanner will be processed in serial. It should also be noted that generating the addresses to be scanned are not iterated in parallel (in full, before the scanning occurs), meaning the smaller the sections to scan the quicker the scan will run.
Empirically it was found that scanners are typically not the most time intensive part of plugins (even those that do extensive scanning) and so parallelism does not offer significant gains. As such, parallelism is not enabled by default but interfaces can easily enable parallelism when desired.
Writing/Using Intermediate Symbol Format Files¶
It can occasionally be useful to create a data file containing the static structures that can create a
Template
to be instantiated on a layer.
Volatility has all the machinery necessary to construct these for you from properly formatted JSON data.
The JSON format is documented by the JSON schema files located in schemas. These are versioned using standard .so library versioning, so they may not increment as expected. Each schema lists an available version that can be used, which specifies five different sections:
Base_types - These are the basic type names that will make up the native/primitive types
User_types - These are the standard definitions of type structures, most will go here
Symbols - These list offsets that are associated with specific names (and can be associated with specific type names)
Enums - Enumerations that offer a number of choices
Metadata - This is information about the generator, when the file was generated and similar
Constructing an appropriate file, the file can be loaded into a symbol table as follows:
table_name = intermed.IntermediateSymbolTable.create(context, config_path, 'sub_path', 'filename')
This code will load a JSON file from one of the standard symbol paths (volatility/symbols and volatility/framework/symbols) under the additional directory sub_path, with a name matching filename.json (the extension should not be included in the filename).
The sub_path parameter acts as a filter, so that similarly named symbol tables for each operating system can be addressed separately. The top level directories which sub_path filters are also checked as zipfiles to determine any symbols within them. As such, group of symbol tables can be included in a single zip file. The filename for the symbol tables should not contain an extension, as extensions for JSON (and compressed JSON files) will be tested to find a match.
Additional parameters exist, such as native_types which can be used to provide pre-populated native types.
Another useful parameter is table_mapping which allows for type referenced inside the JSON (such as one_table!type_name) would allow remapping of one_table to another_table by providing a dictionary as follows:
table_name = intermed.IntermediateSymbolTable.create(context, config_path, 'sub_path', 'filename',
table_mapping = {'one_table': 'another_table'})
The last parameter that can be used is called class_types which allows a particular structure to be instantiated on
a class other than StructType
, allowing for additional methods to be defined and
associated with the type.
The table name can then by used to access the constructed table from the context, such as:
context.symbol_space[table_name]
Writing new translation layers¶
Writing new Templates and Objects¶
Creating New Symbol Tables¶
This page details how symbol tables are located and used by Volatility, and documents the tools and methods that can be used to make new symbol tables.
How Volatility finds symbol tables¶
All files are stored as JSON data, they can be in pure JSON files as .json
, or compressed as .json.gz
or .json.xz
.
Volatility will automatically decompress them on use. It will also cache their contents (compressed) when used, located
under the user’s home directory, in .cache/volatility3
, along with other useful data. The cache directory currently
cannot be altered.
Symbol table JSON files live, by default, under the volatility/symbols
, underneath an operating system directory
(currently one of windows
, mac
or linux
). The symbols directory is configurable within the framework and can
usually be set within the user interface.
These files can also be compressed into ZIP files, which Volatility will process in order to locate symbol files. The ZIP file must be named after the appropriate operating system (such as linux.zip, mac.zip or windows.zip). Inside the ZIP file, the directory structure should match the uncompressed operating system directory.
Windows symbol tables¶
For Windows systems, Volatility accepts a string made up of the GUID and Age of the required PDB file. It then
searches all files under the configured symbol directories under the windows subdirectory. Any that match the filename
pattern of <pdb-name>/<GUID>-<AGE>.json
(or any compressed variant) will be used. If such a symbol table cannot be found, then
the associated PDB file will be downloaded from Microsoft’s Symbol Server and converted into the appropriate JSON
format, and will be saved in the correct location.
Windows symbol tables can be manually constructed from an appropriate PDB file using a couple of different tools. The
first is built into Volatility 3, called pdbconv.py
. It can be run from the top-level Volatility path, using the
following command:
PYTHONPATH="." python volatility/framework/symbols/windows/pdbconv.py
The PYTHONPATH
environment variable is not required if the Volatility library is installed in the system’s library path
or a virtual environment.
Mac/Linux symbol tables¶
For Mac/Linux systems, both use the same mechanism for identification. JSON files live under the symbol directories,
under either the linux
or mac
directories. The generated files contain an identifying string (the operating system
banner), which Volatility’s automagic can detect. Volatility caches the mapping between the strings and the symbol
tables they come from, meaning the precise file names don’t matter and can be organized under any necessary hierarchy
under the operating system directory.
Linux and Mac symbol tables can be generated from a DWARF file using a tool called dwarf2json. Currently a kernel with debugging symbols is the only suitable means for recovering all the information required by most Volatility plugins. Once a kernel with debugging symbols/appropriate DWARF file has been located, dwarf2json will convert it into an appropriate JSON file.
Python Packages¶
volatility package¶
Volatility 3 - An open-source memory forensics framework
-
class
WarningFindSpec
[source]¶ Bases:
importlib.abc.MetaPathFinder
Checks import attempts and throws a warning if the name shouldn’t be used.
-
find_module
(fullname, path)¶ Return a loader for the module.
If no module is found, return None. The fullname is a str and the path is a list of strings or None.
This method is deprecated since Python 3.4 in favor of finder.find_spec(). If find_spec() exists then backwards-compatible functionality is provided for this method.
-
static
find_spec
(fullname, path, target=None)[source]¶ Mock find_spec method that just checks the name, this must go first.
-
invalidate_caches
()¶ An optional method for clearing the finder’s cache, if any. This method is used by importlib.invalidate_caches().
-
-
class
classproperty
(func)[source]¶ Bases:
object
Class property decorator.
Note this will change the return type
Subpackages¶
volatility.cli package¶
A CommandLine User Interface for the volatility framework.
- User interfaces make use of the framework to:
determine available plugins
request necessary information for those plugins from the user
determine what “automagic” modules will be used to populate information the user does not provide
run the plugin
display the results
-
class
CommandLine
[source]¶ Bases:
volatility.framework.interfaces.plugins.FileConsumerInterface
Constructs a command-line interface object for users to run plugins.
-
populate_config
(context, configurables_list, args, plugin_config_path)[source]¶ Populate the context config based on the returned args.
We have already determined these elements must be descended from ConfigurableInterface
- Parameters
context (
ContextInterface
) – The volatility context to operate onconfigurables_list (
Dict
[str
,ConfigurableInterface
]) – A dictionary of configurable items that can be configured on the pluginargs (
Namespace
) – An object containing the arguments necessaryplugin_config_path (
str
) – The path within the context’s config containing the plugin’s configuration
- Return type
None
-
populate_requirements_argparse
(parser, configurable)[source]¶ Adds the plugin’s simple requirements to the provided parser.
- Parameters
parser (
Union
[ArgumentParser
,_ArgumentGroup
]) – The parser to add the plugin’s (simple) requirements toconfigurable (
Type
[ConfigurableInterface
]) – The plugin object to pull the requirements from
-
-
class
HelpfulSubparserAction
(*args, **kwargs)[source]¶ Bases:
argparse._SubParsersAction
Class to either select a unique plugin based on a substring, or identify the alternatives.
-
add_parser
(name, **kwargs)¶
-
-
class
MuteProgress
[source]¶ Bases:
volatility.cli.PrintedProgress
A dummy progress handler that produces no output when called.
-
class
PrintedProgress
[source]¶ Bases:
object
A progress handler that prints the progress value and the description onto the command line.
-
main
()[source]¶ A convenience function for constructing and running the
CommandLine
’s run method.
Subpackages¶
volatility.cli.volshell package¶
-
class
VolShell
[source]¶ Bases:
volatility.cli.CommandLine
Program to allow interactive interaction with a memory image.
This allows a memory image to be examined through an interactive python terminal with all the volatility support calls available.
-
consume_file
(filedata)¶ Consumes a file as produced by a plugin.
-
populate_config
(context, configurables_list, args, plugin_config_path)¶ Populate the context config based on the returned args.
We have already determined these elements must be descended from ConfigurableInterface
- Parameters
context (
ContextInterface
) – The volatility context to operate onconfigurables_list (
Dict
[str
,ConfigurableInterface
]) – A dictionary of configurable items that can be configured on the pluginargs (
Namespace
) – An object containing the arguments necessaryplugin_config_path (
str
) – The path within the context’s config containing the plugin’s configuration
- Return type
None
-
populate_requirements_argparse
(parser, configurable)¶ Adds the plugin’s simple requirements to the provided parser.
- Parameters
parser (
Union
[ArgumentParser
,_ArgumentGroup
]) – The parser to add the plugin’s (simple) requirements toconfigurable (
Type
[ConfigurableInterface
]) – The plugin object to pull the requirements from
-
process_exceptions
(excp)¶ Provide useful feedback if an exception occurs.
-
-
class
NullFileConsumer
[source]¶ Bases:
volatility.framework.interfaces.plugins.FileConsumerInterface
Null FileConsumer that swallows files whole
-
class
Volshell
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Shell environment to directly interact with a memory image.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
construct_locals
()[source]¶ Returns a dictionary listing the functions to be added to the environment.
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
current_layer
¶
-
disassemble
(offset, count=128, layer_name=None, architecture=None)[source]¶ Disassembles a number of instructions from the code at offset
-
display_bytes
(offset, count=128, layer_name=None)[source]¶ Displays byte values and ASCII characters
-
display_doublewords
(offset, count=128, layer_name=None)[source]¶ Displays double-word values (4 bytes) and corresponding ASCII characters
-
display_plugin_output
(plugin, **kwargs)[source]¶ Displays the output for a particular plugin (with keyword arguments)
- Return type
None
-
display_quadwords
(offset, count=128, layer_name=None)[source]¶ Displays quad-word values (8 bytes) and corresponding ASCII characters
-
display_symbols
(symbol_table=None)[source]¶ Prints an alphabetical list of symbols for a symbol table
-
display_type
(object, offset=None)[source]¶ Display Type describes the members of a particular object in alphabetical order
-
display_words
(offset, count=128, layer_name=None)[source]¶ Displays word values (2 bytes) and corresponding ASCII characters
-
generate_treegrid
(plugin, **kwargs)[source]¶ Generates a TreeGrid based on a specific plugin passing in kwarg configuration values
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
render_treegrid
(treegrid, renderer=None)[source]¶ Renders a treegrid as produced by generate_treegrid
- Return type
None
-
run
(additional_locals=None)[source]¶ Runs the interactive volshell plugin.
- Return type
- Returns
Return a TreeGrid but this is always empty since the point of this plugin is to run interactively
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
-
class
Volshell
(*args, **kwargs)[source]¶ Bases:
volatility.cli.volshell.generic.Volshell
Shell environment to directly interact with a linux memory image.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
construct_locals
()[source]¶ Returns a dictionary listing the functions to be added to the environment.
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
current_layer
¶
-
disassemble
(offset, count=128, layer_name=None, architecture=None)[source]¶ Disassembles a number of instructions from the code at offset
-
display_bytes
(offset, count=128, layer_name=None)[source]¶ Displays byte values and ASCII characters
-
display_doublewords
(offset, count=128, layer_name=None)[source]¶ Displays double-word values (4 bytes) and corresponding ASCII characters
-
display_plugin_output
(plugin, **kwargs)[source]¶ Displays the output for a particular plugin (with keyword arguments)
- Return type
None
-
display_quadwords
(offset, count=128, layer_name=None)[source]¶ Displays quad-word values (8 bytes) and corresponding ASCII characters
-
display_symbols
(symbol_table=None)[source]¶ Prints an alphabetical list of symbols for a symbol table
-
display_type
(object, offset=None)[source]¶ Display Type describes the members of a particular object in alphabetical order
-
display_words
(offset, count=128, layer_name=None)[source]¶ Displays word values (2 bytes) and corresponding ASCII characters
-
generate_treegrid
(plugin, **kwargs)[source]¶ Generates a TreeGrid based on a specific plugin passing in kwarg configuration values
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
render_treegrid
(treegrid, renderer=None)[source]¶ Renders a treegrid as produced by generate_treegrid
- Return type
None
-
run
(additional_locals=None)[source]¶ Runs the interactive volshell plugin.
- Return type
- Returns
Return a TreeGrid but this is always empty since the point of this plugin is to run interactively
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
-
class
Volshell
(*args, **kwargs)[source]¶ Bases:
volatility.cli.volshell.generic.Volshell
Shell environment to directly interact with a mac memory image.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
construct_locals
()[source]¶ Returns a dictionary listing the functions to be added to the environment.
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
current_layer
¶
-
disassemble
(offset, count=128, layer_name=None, architecture=None)[source]¶ Disassembles a number of instructions from the code at offset
-
display_bytes
(offset, count=128, layer_name=None)[source]¶ Displays byte values and ASCII characters
-
display_doublewords
(offset, count=128, layer_name=None)[source]¶ Displays double-word values (4 bytes) and corresponding ASCII characters
-
display_plugin_output
(plugin, **kwargs)[source]¶ Displays the output for a particular plugin (with keyword arguments)
- Return type
None
-
display_quadwords
(offset, count=128, layer_name=None)[source]¶ Displays quad-word values (8 bytes) and corresponding ASCII characters
-
display_symbols
(symbol_table=None)[source]¶ Prints an alphabetical list of symbols for a symbol table
-
display_type
(object, offset=None)[source]¶ Display Type describes the members of a particular object in alphabetical order
-
display_words
(offset, count=128, layer_name=None)[source]¶ Displays word values (2 bytes) and corresponding ASCII characters
-
generate_treegrid
(plugin, **kwargs)[source]¶ Generates a TreeGrid based on a specific plugin passing in kwarg configuration values
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
render_treegrid
(treegrid, renderer=None)[source]¶ Renders a treegrid as produced by generate_treegrid
- Return type
None
-
run
(additional_locals=None)[source]¶ Runs the interactive volshell plugin.
- Return type
- Returns
Return a TreeGrid but this is always empty since the point of this plugin is to run interactively
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
-
class
Volshell
(*args, **kwargs)[source]¶ Bases:
volatility.cli.volshell.generic.Volshell
Shell environment to directly interact with a windows memory image.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
construct_locals
()[source]¶ Returns a dictionary listing the functions to be added to the environment.
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
current_layer
¶
-
disassemble
(offset, count=128, layer_name=None, architecture=None)[source]¶ Disassembles a number of instructions from the code at offset
-
display_bytes
(offset, count=128, layer_name=None)[source]¶ Displays byte values and ASCII characters
-
display_doublewords
(offset, count=128, layer_name=None)[source]¶ Displays double-word values (4 bytes) and corresponding ASCII characters
-
display_plugin_output
(plugin, **kwargs)[source]¶ Displays the output for a particular plugin (with keyword arguments)
- Return type
None
-
display_quadwords
(offset, count=128, layer_name=None)[source]¶ Displays quad-word values (8 bytes) and corresponding ASCII characters
-
display_symbols
(symbol_table=None)[source]¶ Prints an alphabetical list of symbols for a symbol table
-
display_type
(object, offset=None)[source]¶ Display Type describes the members of a particular object in alphabetical order
-
display_words
(offset, count=128, layer_name=None)[source]¶ Displays word values (2 bytes) and corresponding ASCII characters
-
generate_treegrid
(plugin, **kwargs)[source]¶ Generates a TreeGrid based on a specific plugin passing in kwarg configuration values
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
render_treegrid
(treegrid, renderer=None)[source]¶ Renders a treegrid as produced by generate_treegrid
- Return type
None
-
run
(additional_locals=None)[source]¶ Runs the interactive volshell plugin.
- Return type
- Returns
Return a TreeGrid but this is always empty since the point of this plugin is to run interactively
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
Submodules¶
volatility.cli.text_renderer module¶
-
class
CLIRenderer
(options=None)[source]¶ Bases:
volatility.framework.interfaces.renderers.Renderer
Class to add specific requirements for CLI renderers.
Accepts an options object to configure the renderers.
-
name
= 'unnamed'¶
-
abstract
render
(grid)¶ Takes a grid object and renders it based on the object’s preferences.
- Return type
None
-
-
class
CSVRenderer
(options=None)[source]¶ Bases:
volatility.cli.text_renderer.CLIRenderer
Accepts an options object to configure the renderers.
-
name
= 'csv'¶
-
-
class
PrettyTextRenderer
(options=None)[source]¶ Bases:
volatility.cli.text_renderer.CLIRenderer
Accepts an options object to configure the renderers.
-
name
= 'pretty'¶
-
-
class
QuickTextRenderer
(options=None)[source]¶ Bases:
volatility.cli.text_renderer.CLIRenderer
Accepts an options object to configure the renderers.
-
name
= 'quick'¶
-
-
display_disassembly
(disasm)[source]¶ Renders a disassembly renderer type into string format.
- Parameters
disasm (
Disassembly
) – Input disassembly objects- Return type
- Returns
A string as rendererd by capstone where available, otherwise output as if it were just bytes
volatility.framework package¶
Volatility 3 framework.
-
import_files
(base_module, ignore_errors=False)[source]¶ Imports all plugins present under plugins module namespace.
Subpackages¶
volatility.framework.automagic package¶
Automagic modules allow the framework to populate configuration elements that a user has not provided.
Automagic objects accept a context and a configurable, and will make appropriate changes to the context in an attempt to fulfill the requirements of the configurable object (or objects upon which that configurable may rely).
Several pre-existing modules include one to stack layers on top of each other (allowing automatic detection and loading of file format types) as well as a module to reconstruct layers based on their provided requirements.
-
available
(context)[source]¶ Returns an ordered list of all subclasses of
AutomagicInterface
.The order is based on the priority attributes of the subclasses, in order to ensure the automagics are listed in an appropriate order.
- Parameters
context (
ContextInterface
) – The context that will contain any automagic configuration values.- Return type
-
choose_automagic
(automagics, plugin)[source]¶ Chooses which automagics to run, maintaining the order they were handed in.
-
run
(automagics, context, configurable, config_path, progress_callback=None)[source]¶ Runs through the list of automagics in order, allowing them to make changes to the context.
- Parameters
automagics (
List
[AutomagicInterface
]) – A list ofAutomagicInterface
objectscontext (
ContextInterface
) – The context (that inherits fromContextInterface
) for modificationconfigurable (
Union
[ConfigurableInterface
,Type
[ConfigurableInterface
]]) – An object that inherits fromConfigurableInterface
config_path (
str
) – The path within the context.config for options required by the configurableprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – A function that takes a percentage (and an optional description) that will be called periodically
This is where any automagic is allowed to run, and alter the context in order to satisfy/improve all requirements
Returns a list of traceback objects that occurred during the autorun procedure
Note
The order of the automagics list is important. An automagic that populates configurations may be necessary for an automagic that populates the context based on the configuration information.
- Return type
An automagic module to use configuration data to configure and then
construct classes that fulfill the descendants of a ConfigurableInterface
.
-
class
ConstructionMagic
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Constructs underlying layers.
Class to run through the requirement tree of the
ConfigurableInterface
and from the bottom of the tree upwards, attempt to construct allConstructableRequirementInterface
based classes.- Warning
This automagic should run first to allow existing configurations to have been constructed for use by later automagic
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 0¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
LintelStacker
[source]¶ Bases:
volatility.framework.interfaces.automagic.StackerLayerInterface
-
classmethod
stack
(context, layer_name, progress_callback=None)[source]¶ Attempts to identify linux within this layer.
- Return type
-
stack_order
= 12¶
-
classmethod
-
class
LinuxBannerCache
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.automagic.symbol_cache.SymbolBannerCache
Caches the banners found in the Linux symbol files.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
os
= 'linux'¶
-
priority
= 0¶
-
symbol_name
= 'linux_banner'¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
LinuxSymbolFinder
(context, config_path)[source]¶ Bases:
volatility.framework.automagic.symbol_finder.SymbolFinder
Linux symbol loader based on uname signature strings.
Basic initializer that allows configurables to access their own config settings.
alias of
LinuxBannerCache
Creates a cached copy of the results, but only it’s been requested.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 40¶
-
symbol_class
= 'volatility.framework.symbols.linux.LinuxKernelIntermedSymbols'¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
MacBannerCache
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.automagic.symbol_cache.SymbolBannerCache
Caches the banners found in the Mac symbol files.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
os
= 'mac'¶
-
priority
= 0¶
-
symbol_name
= 'version'¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
MacSymbolFinder
(context, config_path)[source]¶ Bases:
volatility.framework.automagic.symbol_finder.SymbolFinder
Mac symbol loader based on uname signature strings.
Basic initializer that allows configurables to access their own config settings.
alias of
MacBannerCache
Creates a cached copy of the results, but only it’s been requested.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 40¶
-
symbol_class
= 'volatility.framework.symbols.mac.MacKernelIntermedSymbols'¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
MacUtilities
[source]¶ Bases:
object
Class with multiple useful mac functions.
-
classmethod
find_aslr
(context, symbol_table, layer_name, compare_banner='', compare_banner_offset=0, progress_callback=None)[source]¶ Determines the offset of the actual DTB in physical space and its symbol offset.
- Return type
-
classmethod
virtual_to_physical_address
(addr)[source]¶ Converts a virtual mac address to a physical one (does not account of ASLR)
- Return type
-
classmethod
A module for scanning translation layers looking for Windows PDB records from loaded PE files.
This module contains a standalone scanner, and also a ScannerInterface
based scanner for use within the framework by calling scan()
.
-
class
KernelPDBScanner
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Windows symbol loader based on PDB signatures.
An Automagic object that looks for all Intel translation layers and scans each of them for a pdb signature. When found, a search for a corresponding Intermediate Format data file is carried out and if found an appropriate symbol space is automatically loaded.
Once a specific kernel PDB signature has been found, a virtual address for the loaded kernel is determined by one of two methods. The first method assumes a specific mapping from the kernel’s physical address to its virtual address (typically the kernel is loaded at its physical location plus a specific offset). The second method searches for a particular structure that lists the kernel module’s virtual address, its size (not checked) and the module’s name. This value is then used if one was not found using the previous method.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
check_kernel_offset
(context, vlayer, address, progress_callback=None)[source]¶ Scans a virtual address.
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
determine_valid_kernels
(context, potential_layers, progress_callback=None)[source]¶ Runs through the identified potential kernels and verifies their suitability.
This carries out a scan using the pdb_signature scanner on a physical layer. It uses the results of the scan to determine the virtual offset of the kernel. On early windows implementations there is a fixed mapping between the physical and virtual addresses of the kernel. On more recent versions a search is conducted for a structure that will identify the kernel’s virtual offset.
- Parameters
context (
ContextInterface
) – Context on which to operatepotential_kernels – Dictionary containing GUID, age, pdb_name and mz_offset keys
progress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Function taking a percentage and optional description to be called during expensive computations to indicate progress
- Return type
Dict
[str
,Tuple
[int
,Dict
[str
,Union
[bytes
,str
,int
,None
]]]]- Returns
A dictionary of valid kernels
-
download_pdb_isf
(guid, age, pdb_name, progress_callback=None)[source]¶ Attempts to download the PDB file, convert it to an ISF file and save it to one of the symbol locations.
- Return type
None
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
find_virtual_layers_from_req
(context, config_path, requirement)[source]¶ Traverses the requirement tree, rooted at requirement looking for virtual layers that might contain a windows PDB.
Returns a list of possible layers
- Parameters
context (
ContextInterface
) – The context in which the requirement livesconfig_path (
str
) – The path within the context for the requirement’s configuration variablesrequirement (
RequirementInterface
) – The root of the requirement tree to search for :class:~`volatility.framework.interfaces.layers.TranslationLayerRequirement` objects to scanprogress_callback – Means of providing the user with feedback during long processes
- Return type
- Returns
A list of (layer_name, scan_results)
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
max_pdb_size
= 4194304¶
-
method_module_offset
(context, vlayer, progress_callback=None)[source]¶ Method for finding a suitable kernel offset based on a module table.
-
methods
= [<function KernelPDBScanner.method_kdbg_offset>, <function KernelPDBScanner.method_module_offset>, <function KernelPDBScanner.method_fixed_mapping>]¶
-
priority
= 30¶
-
recurse_symbol_fulfiller
(context, valid_kernels, progress_callback=None)[source]¶ Fulfills the SymbolTableRequirements in self._symbol_requirements found by the recurse_symbol_requirements.
This pass will construct any requirements that may need it in the context it was passed
-
set_kernel_virtual_offset
(context, valid_kernels)[source]¶ Traverses the requirement tree, looking for kernel_virtual_offset values that may need setting and sets it based on the previously identified valid_kernels.
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
PdbSignatureScanner
(pdb_names)[source]¶ Bases:
volatility.framework.interfaces.layers.ScannerInterface
A
ScannerInterface
based scanner use to identify Windows PDB records.- Parameters
pdb_names (
List
[bytes
]) – A list of bytestrings, used to match pdb signatures against the pdb names within the records.
Note
The pdb_names must be a list of byte strings, unicode strs will not match against the data scanned
-
property
context
¶ - Return type
-
overlap
= 16384¶ The size of overlap needed for the signature to ensure data cannot hide between two scanned chunks
-
thread_safe
= True¶ Determines whether the scanner accesses global variables in a thread safe manner (for use with
multiprocessing
)
-
scan
(ctx, layer_name, page_size, progress_callback=None, start=None, end=None)[source]¶ Scans through layer_name at ctx looking for RSDS headers that indicate one of four common pdb kernel names (as listed in self.pdb_names) and returns the tuple (GUID, age, pdb_name, signature_offset, mz_offset)
Note
This is automagical and therefore not guaranteed to provide correct results.
The UI should always provide the user an opportunity to specify the appropriate types and PDB values themselves
This module attempts to automatically stack layers.
This automagic module fulfills TranslationLayerRequirement
that are not already fulfilled, by attempting to
stack as many layers on top of each other as possible. The base/lowest layer is derived from the
“automagic.general.single_location” configuration path. Layers are then attempting in likely height order, and
once a layer successfully stacks on top of the existing layers, it is removed from the possible choices list
(so no layer type can exist twice in the layer stack).
-
class
LayerStacker
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Builds up layers in a single stack.
This class mimics the volatility 2 style of stacking address spaces. It builds up various layers based on separate
StackerLayerInterface
classes. These classes are built up based on a stack_order class variable each has.This has a high priority to provide other automagic modules as complete a context/configuration tree as possible. Upon completion it will re-call the
ConstructionMagic
, so that any stacked layers are actually constructed and added to the context.Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
find_suitable_requirements
(context, config_path, requirement, stacked_layers)[source]¶ Looks for translation layer requirements and attempts to apply the stacked layers to it. If it succeeds it returns the configuration path and layer name where the stacked nodes were spliced into the tree.
-
classmethod
get_requirements
()[source]¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 10¶
-
stack
(context, config_path, requirement, progress_callback)[source]¶ Stacks the various layers and attaches these to a specific requirement.
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path under which to store stacking datarequirement (
RequirementInterface
) – Requirement that should have layers stacked on itprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Function to provide callback progress
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
SymbolBannerCache
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Runs through all symbols tables and caches their banners.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
os
= None¶
-
priority
= 0¶
-
symbol_name
= 'banner_name'¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
SymbolFinder
(context, config_path)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Symbol loader based on signature strings.
Basic initializer that allows configurables to access their own config settings.
Creates a cached copy of the results, but only it’s been requested.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 40¶
-
symbol_class
= None¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
Module to identify the Directory Table Base and architecture of windows memory images.
This module contains a PageMapScanner that scans a physical layer to identify self-referential pointers. All windows versions include a self-referential pointer in their Directory Table Base’s top table, in order to have a single offset that will allow manipulation of the page tables themselves.
In older windows version the self-referential pointer was at a specific fixed index within the table, which was different for each architecture. In very recent Windows versions, the self-referential pointer index has been randomized, so a different heuristic must be used. In these versions of windows it was found that the physical offset for the DTB was always within the range of 0x1a0000 to 0x1b0000. As such, a search for any self-referential pointer within these pages gives a high probability of being an accurate DTB.
The self-referential indices for older versions of windows are listed below:
Architecture
Index
x86
0x300
PAE
0x3
x64
0x1ED
-
class
DtbSelfRef32bit
[source]¶ Bases:
volatility.framework.automagic.windows.DtbSelfReferential
-
second_pass
(dtb, data, data_offset)¶ Re-reads over the whole page to validate other records based on the number of pages marked user vs super.
-
-
class
DtbSelfRef64bit
[source]¶ Bases:
volatility.framework.automagic.windows.DtbSelfReferential
-
second_pass
(dtb, data, data_offset)¶ Re-reads over the whole page to validate other records based on the number of pages marked user vs super.
-
-
class
DtbSelfReferential
(layer_type, ptr_struct, ptr_reference, mask)[source]¶ Bases:
volatility.framework.automagic.windows.DtbTest
A generic DTB test which looks for a self-referential pointer at any index within the page.
-
second_pass
(dtb, data, data_offset)¶ Re-reads over the whole page to validate other records based on the number of pages marked user vs super.
-
-
class
DtbTest
(layer_type, ptr_struct, ptr_reference, mask)[source]¶ Bases:
object
This class generically contains the tests for a page based on a set of class parameters.
When constructed it contains all the information necessary to extract a specific index from a page and determine whether it points back to that page’s offset.
-
class
DtbTest32bit
[source]¶ Bases:
volatility.framework.automagic.windows.DtbTest
-
second_pass
(dtb, data, data_offset)¶ Re-reads over the whole page to validate other records based on the number of pages marked user vs super.
-
-
class
DtbTest64bit
[source]¶ Bases:
volatility.framework.automagic.windows.DtbTest
-
second_pass
(dtb, data, data_offset)¶ Re-reads over the whole page to validate other records based on the number of pages marked user vs super.
-
-
class
DtbTestPae
[source]¶ Bases:
volatility.framework.automagic.windows.DtbTest
-
second_pass
(dtb, data, data_offset)[source]¶ PAE top level directory tables contains four entries and the self- referential pointer occurs in the second level of tables (so as not to use up a full quarter of the space). This is very high in the space, and occurs in the fourht (last quarter) second-level table. The second-level tables appear always to come sequentially directly after the real dtb. The value for the real DTB is therefore four page earlier (and the fourth entry should point back to the dtb parameter this function was originally passed.
- Parameters
- Return type
- Returns
Returns the actual DTB of the PAE space
-
-
class
PageMapScanner
(tests)[source]¶ Bases:
volatility.framework.interfaces.layers.ScannerInterface
Scans through all pages using DTB tests to determine a dtb offset and architecture.
-
property
context
¶ - Return type
-
overlap
= 16384¶
-
tests
= [<volatility.framework.automagic.windows.DtbTest32bit object>, <volatility.framework.automagic.windows.DtbTest64bit object>, <volatility.framework.automagic.windows.DtbTestPae object>]¶ The default tests to run when searching for DTBs
-
thread_safe
= True¶
-
property
-
class
WinSwapLayers
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Class to read swap_layers filenames from single-swap-layers, create the layers and populate the single-layers swap_layers.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
static
find_swap_requirement
(config, requirement)[source]¶ Takes a Translation layer and returns its swap_layer requirement.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 10¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
WintelHelper
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.automagic.AutomagicInterface
Windows DTB finder based on self-referential pointers.
This class adheres to the
AutomagicInterface
interface and both determines the directory table base of an intel layer if one hasn’t been specified, and constructs the intel layer if necessary (for example when reconstructing a pre-existing configuration).It will scan for existing TranslationLayers that do not have a DTB using the
PageMapScanner
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 20¶
-
tests
= [<volatility.framework.automagic.windows.DtbTest32bit object>, <volatility.framework.automagic.windows.DtbTest64bit object>, <volatility.framework.automagic.windows.DtbTestPae object>]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
WintelStacker
[source]¶ Bases:
volatility.framework.interfaces.automagic.StackerLayerInterface
-
classmethod
stack
(context, layer_name, progress_callback=None)[source]¶ Attempts to determine and stack an intel layer on a physical layer where possible.
Where the DTB scan fails, it attempts a heuristic of checking for the DTB within a specific range. New versions of windows, with randomized self-referential pointers, appear to always load their dtb within a small specific range (0x1a0000 and 0x1b0000), so instead we scan for all self-referential pointers in that range, and ignore any that contain multiple self-references (since the DTB is very unlikely to point to itself more than once).
- Return type
-
stack_order
= 0¶
-
classmethod
volatility.framework.configuration package¶
Contains standard Requirement types that all adhere to the RequirementInterface
.
These requirement types allow plugins to request simple information types (such as strings, integers, etc) as well as indicating what they expect to be in the context (such as particular layers or symboltables).
-
class
BooleanRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.SimpleTypeRequirement
A requirement type that contains a boolean value.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
instance_type
¶ alias of
builtins.bool
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)¶ Validates the instance requirement based upon its instance_type.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
BytesRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.SimpleTypeRequirement
A requirement type that contains a byte string.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
instance_type
¶ alias of
builtins.bytes
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)¶ Validates the instance requirement based upon its instance_type.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
ChoiceRequirement
(choices, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Allows one from a choice of strings.
Constructs the object.
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Validates the provided value to ensure it is one of the available choices.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
-
class
ComplexListRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.configuration.requirements.MultiRequirement
,volatility.framework.interfaces.configuration.ConfigurableRequirementInterface
Allows a variable length list of requirements.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
build_configuration
(context, config_path, _)[source]¶ Proxies to a ConfigurableInterface if necessary.
- Return type
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
abstract
construct
(context, config_path)[source]¶ Method for constructing within the context any required elements from subrequirements.
- Return type
None
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
abstract
new_requirement
(index)[source]¶ Builds a new requirement based on the specified index.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Validates the provided value to ensure it is one of the available choices.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
IntRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.SimpleTypeRequirement
A requirement type that contains a single integer.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
instance_type
¶ alias of
builtins.int
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)¶ Validates the instance requirement based upon its instance_type.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
LayerListRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.configuration.requirements.ComplexListRequirement
Allows a variable length list of layers that must exist.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
build_configuration
(context, config_path, _)¶ Proxies to a ConfigurableInterface if necessary.
- Return type
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
construct
(context, config_path)[source]¶ Method for constructing within the context any required elements from subrequirements.
- Return type
None
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
classmethod
get_requirements
()¶ - Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
new_requirement
(index)[source]¶ Constructs a new requirement based on the specified index.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)¶ Validates the provided value to ensure it is one of the available choices.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
ListRequirement
(element_type=<class 'str'>, max_elements=0, min_elements=None, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Allows for a list of a specific type of requirement (all of which must be met for this requirement to be met) to be specified.
This roughly correlates to allowing a number of arguments to follow a command line parameter, such as a list of integers or a list of strings.
It is distinct from a multi-requirement which stores the subrequirements in a dictionary, not a list, and does not allow for a dynamic number of values.
Constructs the object.
- Parameters
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Check the types on each of the returned values and their number and then call the element type’s check for each one.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
MultiRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Class to hold multiple requirements.
Technically the Interface could handle this, but it’s an interface, so this is a concrete implementation.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Method to validate the value stored at config_path for the configuration object against a context.
Returns a list containing its own name (or multiple unsatisfied requirement names) when invalid
- Parameters
context (
ContextInterface
) – The context object containing the configuration for this requirementconfig_path (
str
) – The configuration path for this requirement to test satisfaction
- Return type
- Returns
A dictionary of configuration-paths to requirements that could not be satisfied
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
PluginRequirement
(name, description=None, default=None, optional=False, plugin=None, version=None)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Args: name: The name of the requirement description: A short textual description of the requirement default: The default value for the requirement if no value is provided optional: Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Method to validate the value stored at config_path for the configuration object against a context.
Returns a list containing its own name (or multiple unsatisfied requirement names) when invalid
- Parameters
context (
ContextInterface
) – The context object containing the configuration for this requirementconfig_path (
str
) – The configuration path for this requirement to test satisfaction
- Return type
- Returns
A dictionary of configuration-paths to requirements that could not be satisfied
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
-
class
StringRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.SimpleTypeRequirement
A requirement type that contains a single unicode string.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
instance_type
¶ alias of
builtins.str
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)¶ Validates the instance requirement based upon its instance_type.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
SymbolTableRequirement
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.configuration.ConstructableRequirementInterface
,volatility.framework.interfaces.configuration.ConfigurableRequirementInterface
Class maintaining the limitations on what sort of symbol spaces are acceptable.
Args: name: The name of the requirement description: A short textual description of the requirement default: The default value for the requirement if no value is provided optional: Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
build_configuration
(context, _, value)[source]¶ Builds the appropriate configuration for the specified requirement.
- Return type
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
construct
(context, config_path)[source]¶ Constructs the symbol space within the context based on the subrequirements.
- Return type
None
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Validate that the value is a valid within the symbol space of the provided context.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
-
class
TranslationLayerRequirement
(name, description=None, default=None, optional=False, oses=None, architectures=None)[source]¶ Bases:
volatility.framework.interfaces.configuration.ConstructableRequirementInterface
,volatility.framework.interfaces.configuration.ConfigurableRequirementInterface
Class maintaining the limitations on what sort of translation layers are acceptable.
Constructs a Translation Layer Requirement.
The configuration option’s value will be the name of the layer once it exists in the store
- Parameters
name (
str
) – Name of the configuration requirementdescription (
Optional
[str
]) – Description of the configuration requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – A default value (should not be used for TranslationLayers)optional (
bool
) – Whether the translation layer is required or notoses (
Optional
[List
[~T]]) – A list of valid operating systems which can satisfy this requirementarchitectures (
Optional
[List
[~T]]) – A list of valid architectures which can satisfy this requirement
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
build_configuration
(context, _, value)[source]¶ Builds the appropriate configuration for the specified requirement.
- Return type
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
construct
(context, config_path)[source]¶ Constructs the appropriate layer and adds it based on the class parameter.
- Return type
None
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Validate that the value is a valid layer name and that the layer adheres to the requirements.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
URIRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.configuration.requirements.StringRequirement
A requirement type that contains a single unicode string that is a valid URI.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
instance_type
¶ alias of
builtins.str
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Always raises a TypeError as instance requirements cannot have children.
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)¶ Validates the instance requirement based upon its instance_type.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
volatility.framework.constants package¶
Volatility 3 Constants.
Stores all the constant values that are generally fixed throughout volatility This includes default scanning block sizes, etc.
-
AUTOMAGIC_CONFIG_PATH
= 'automagic'¶ The root section within the context configuration for automagic values
-
BANG
= '!'¶ Constant used to delimit table names from type names when referring to a symbol
-
CACHE_PATH
= '/home/docs/.cache/volatility3'¶ Default path to store cached data
-
LINUX_BANNERS_PATH
= '/home/docs/.cache/volatility3/linux_banners.cache'¶ “Default location to record information about available linux banners
-
LOGLEVEL_V
= 9¶ Logging level for a single -v
-
LOGLEVEL_VV
= 8¶ Logging level for -vv
-
LOGLEVEL_VVV
= 7¶ Logging level for -vvv
-
LOGLEVEL_VVVV
= 6¶ Logging level for -vvvv
-
MAC_BANNERS_PATH
= '/home/docs/.cache/volatility3/mac_banners.cache'¶ “Default location to record information about available mac banners
-
PACKAGE_VERSION
= '3.0.0_alpha1'¶ The canonical version of the volatility package
-
PARALLELISM
= <Parallelism.Off: 0>¶ Default value to the parallelism setting used throughout volatility
-
PLUGINS_PATH
= ['/home/docs/checkouts/readthedocs.org/user_builds/foobarv3/checkouts/latest/volatility/plugins', '/home/docs/checkouts/readthedocs.org/user_builds/foobarv3/checkouts/latest/volatility/framework/plugins']¶ Default list of paths to load plugins from (volatility/plugins and volatility/framework/plugins)
-
class
Parallelism
[source]¶ Bases:
enum.IntEnum
An enumeration listing the different types of parallelism applied to volatility.
-
Multiprocessing
= 2¶
-
Off
= 0¶
-
Threading
= 1¶
-
-
ProgressCallback
= typing.Union[typing.Callable[[float, str], NoneType], NoneType]¶ Type information for ProgressCallback objects
-
SYMBOL_BASEPATHS
= ['/home/docs/checkouts/readthedocs.org/user_builds/foobarv3/checkouts/latest/volatility/symbols', '/home/docs/checkouts/readthedocs.org/user_builds/foobarv3/checkouts/latest/volatility/framework/symbols']¶ Default list of paths to load symbols from (volatility/symbols and volatility/framework/symbols)
volatility.framework.contexts package¶
A Context maintains the accumulated state required for various plugins and framework functions.
This has been made an object to allow quick swapping and changing of contexts, to allow a plugin to act on multiple different contexts without them interfering eith each other.
-
class
Context
[source]¶ Bases:
volatility.framework.interfaces.context.ContextInterface
Maintains the context within which to construct objects.
The context object is the main method of carrying around state that’s been constructed for the purposes of investigating memory. It contains a symbol_space of all the symbols that can be accessed by plugins using the context. It also contains the memory made up of data and translation layers, and it contains a factory method for creating new objects.
Other context objects can be constructed as long as they support the
ContextInterface
. This is the primary context object to be used in the volatility framework. It maintains theInitializes the context.
-
add_layer
(layer)[source]¶ Adds a named translation layer to the context.
- Parameters
layer (
DataLayerInterface
) – The layer to be added to the memory- Raises
volatility.framework.exceptions.LayerException – if the layer is already present, or has unmet dependencies
- Return type
None
-
clone
()¶ Produce a clone of the context (and configuration), allowing modifications to be made without affecting any mutable objects in the original.
Memory constraints may become an issue for this function depending on how much is actually stored in the context
- Return type
-
property
config
¶ Returns a mutable copy of the configuration, but does not allow the whole configuration to be altered.
- Return type
-
property
layers
¶ A LayerContainer object, allowing access to all data and translation layers currently available within the context.
- Return type
-
module
(module_name, layer_name, offset, native_layer_name=None, size=None)[source]¶ Constructs a new os-independent module.
- Parameters
module_name (
str
) – The name of the modulelayer_name (
str
) – The layer within the context in which the module existsoffset (
int
) – The offset at which the module exists in the layernative_layer_name (
Optional
[str
]) – The default native layer for objects constructed by the modulesize (
Optional
[int
]) – The size, in bytes, that the module occupys from offset location within the layer named layer_name
- Return type
-
object
(object_type, layer_name, offset, native_layer_name=None, **arguments)[source]¶ Object factory, takes a context, symbol, offset and optional layername.
Looks up the layername in the context, finds the object template based on the symbol, and constructs an object using the object template on the layer at the offset.
- Parameters
object_type (
Union
[str
,Template
]) – The name (or template) of the symbol type on which to construct the object. If this is a name, it should contain an explicit table name.layer_name (
str
) – The name of the layer on which to construct the objectoffset (
int
) – The offset within the layer at which the data used to create the object livesnative_layer_name (
Optional
[str
]) – The name of the layer the object references (for pointers) if different to layer_name
- Return type
- Returns
A fully constructed object
-
property
symbol_space
¶ The space of all symbols that can be accessed within this context.
- Return type
-
-
class
Module
(context, module_name, layer_name, offset, symbol_table_name=None, native_layer_name=None)[source]¶ Bases:
volatility.framework.interfaces.context.ModuleInterface
Constructs a new os-independent module.
- Parameters
context (
ContextInterface
) – The context within which this module will existmodule_name (
str
) – The name of the modulelayer_name (
str
) – The layer within the context in which the module existsoffset (
int
) – The offset at which the module exists in the layersymbol_table_name (
Optional
[str
]) – The name of an associated symbol tablenative_layer_name (
Optional
[str
]) – The default native layer for objects constructed by the module
-
property
context
¶ Context that the module uses.
- Return type
-
get_symbol
(name)¶ Returns a symbol from the module.
- Return type
-
object
(object_type, offset=None, native_layer_name=None, absolute=False, **kwargs)[source]¶ Returns an object created using the symbol_table_name and layer_name of the Module.
- Parameters
object_type (
str
) – Name of the type/enumeration (within the module) to constructoffset (
Optional
[int
]) – The location of the object, ignored when symbol_type is SYMBOLnative_layer_name (
Optional
[str
]) – Name of the layer in which constructed objects are made (for pointers)absolute (
bool
) – whether the type’s offset is absolute within memory or relative to the module
- Return type
-
object_from_symbol
(symbol_name, native_layer_name=None, absolute=False, **kwargs)[source]¶ Returns an object based on a specific symbol (containing type and offset information) and the layer_name of the Module. This will throw a ValueError if the symbol does not contain an associated type, or if the symbol name is invalid. It will throw a SymbolError if the symbol cannot be found.
- Parameters
- Return type
-
class
ModuleCollection
(modules)[source]¶ Bases:
object
Class to contain a collection of SizedModules and reason about their contents.
-
deduplicate
()[source]¶ Returns a new deduplicated ModuleCollection featuring no repeated modules (based on data hash)
All 0 sized modules will have identical hashes and are therefore included in the deduplicated version
- Return type
-
get_module_symbols_by_absolute_location
(offset, size=0)[source]¶ Returns a tuple of (module_name, list_of_symbol_names) for each module, where symbols live at the absolute offset in memory provided.
-
property
modules
¶ A name indexed dictionary of modules using that name in this collection.
- Return type
Dict
[str
,List
[SizedModule
]]
-
-
class
SizedModule
(context, module_name, layer_name, offset, size, symbol_table_name=None, native_layer_name=None)[source]¶ Bases:
volatility.framework.contexts.Module
Constructs a new os-independent module.
- Parameters
context (
ContextInterface
) – The context within which this module will existmodule_name (
str
) – The name of the modulelayer_name (
str
) – The layer within the context in which the module existsoffset (
int
) – The offset at which the module exists in the layersymbol_table_name (
Optional
[str
]) – The name of an associated symbol tablenative_layer_name (
Optional
[str
]) – The default native layer for objects constructed by the module
-
property
context
¶ Context that the module uses.
- Return type
-
get_symbol
(name)¶ Returns a symbol from the module.
- Return type
-
get_symbols_by_absolute_location
(offset, size=0)[source]¶ Returns the symbols within this module that live at the specified absolute offset provided.
-
property
hash
¶ Hashes the module for equality checks.
The mapping should be sorted and should be quicker than reading the data We turn it into JSON to make a common string and use a quick hash, because collissions are unlikely
- Return type
-
object
(object_type, offset=None, native_layer_name=None, absolute=False, **kwargs)¶ Returns an object created using the symbol_table_name and layer_name of the Module.
- Parameters
object_type (
str
) – Name of the type/enumeration (within the module) to constructoffset (
Optional
[int
]) – The location of the object, ignored when symbol_type is SYMBOLnative_layer_name (
Optional
[str
]) – Name of the layer in which constructed objects are made (for pointers)absolute (
bool
) – whether the type’s offset is absolute within memory or relative to the module
- Return type
-
object_from_symbol
(symbol_name, native_layer_name=None, absolute=False, **kwargs)¶ Returns an object based on a specific symbol (containing type and offset information) and the layer_name of the Module. This will throw a ValueError if the symbol does not contain an associated type, or if the symbol name is invalid. It will throw a SymbolError if the symbol cannot be found.
- Parameters
- Return type
-
property
offset
¶ Returns the offset that the module resides within the layer of layer_name.
- Return type
volatility.framework.interfaces package¶
The interfaces module contains the API interface for the core volatility framework.
These interfaces should help developers attempting to write components for the main framework and help them understand how to use the internal components of volatility to write plugins.
Defines the automagic interfaces for populating the context before a plugin runs.
Automagic objects attempt to automatically fill configuration values that a user has not filled.
-
class
AutomagicInterface
(context, config_path, *args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.configuration.ConfigurableInterface
Class that defines an automagic component that can help fulfill Requirements
These classes are callable with the following parameters:
- Parameters
context (
ContextInterface
) – The context in which to store configuration data that the automagic might populateconfig_path (
str
) – Configuration path where the configurable’s data under the context’s config livesconfigurable – The top level configurable whose requirements may need statisfying
progress_callback – An optional function accepting a percentage and optional description to indicate progress during long calculations
Note
The context provided here may be different to that provided during initialization. The context provided at initialization should be used for local configuration of the automagic itself, the context provided during the call is to be populated by the automagic.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
find_requirements
(context, config_path, requirement_root, requirement_type, shortcut=True)[source]¶ Determines if there is actually an unfulfilled Requirement waiting.
This ensures we do not carry out an expensive search when there is no need for a particular Requirement
- Parameters
context (
ContextInterface
) – Context on which to operateconfig_path (
str
) – Configuration path of the top-level requirementrequirement_root (
RequirementInterface
) – Top-level requirement whose subrequirements will all be searchedrequirement_type (
Union
[Tuple
[Type
[RequirementInterface
], …],Type
[RequirementInterface
]]) – Type of requirement to findshortcut (
bool
) – Only returns requirements that live under unsatisfied requirements
- Return type
- Returns
A list of tuples containing the config_path, sub_config_path and requirement identifying the unsatisfied Requirements
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
priority
= 10¶ An ordering to indicate how soon this automagic should be run
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
StackerLayerInterface
[source]¶ Bases:
object
Class that takes a lower layer and attempts to build on it.
stack_order determines the order (from low to high) that stacking layers should be attempted lower levels should have lower stack_orders
-
classmethod
stack
(context, layer_name, progress_callback=None)[source]¶ Method to determine whether this builder can operate on the named layer. If so, modify the context appropriately.
Returns the name of any new layer stacked on top of this layer or None. The stacking is therefore strictly linear rather than tree driven.
Configuration options provided by the context are ignored, and defaults are to be used by this method to build a space where possible.
- Parameters
- Return type
-
stack_order
= 0¶
-
classmethod
The configuration module contains classes and functions for interacting with the configuration and requirement trees.
Volatility plugins can specify a list of requirements (which may have subrequirements, thus forming a requirement tree). These requirement trees can contain values, which are contained in a complementary configuration tree. These two trees act as a protocol between the plugins and users. The plugins provide requirements that must be fulfilled, and the users provide configurations values that fulfill those requirements. Where the user does not provide sufficient configuration values, automagic modules may extend the configuration tree themselves.
-
CONFIG_SEPARATOR
= '.'¶ Use to specify the separator between configuration hierarchies
-
class
ClassRequirement
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Requires a specific class.
This is used as means to serialize specific classes for
TranslationLayerRequirement
andSymbolTableRequirement
classes.Args: name: The name of the requirement description: A short textual description of the requirement default: The default value for the requirement if no value is provided optional: Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
property
cls
¶ Contains the actual chosen class based on the configuration value’s class name.
- Return type
Type
[+CT_co]
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
-
class
ConfigurableInterface
(context, config_path)[source]¶ Bases:
object
Class to allow objects to have requirements and read configuration data from the context config tree.
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()[source]¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)[source]¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
classmethod
unsatisfied
(context, config_path)[source]¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
-
class
ConfigurableRequirementInterface
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Simple Abstract class to provide build_required_config.
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
build_configuration
(context, config_path, value)[source]¶ Proxies to a ConfigurableInterface if necessary.
- Return type
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
abstract
unsatisfied
(context, config_path)¶ Method to validate the value stored at config_path for the configuration object against a context.
Returns a list containing its own name (or multiple unsatisfied requirement names) when invalid
- Parameters
context (
ContextInterface
) – The context object containing the configuration for this requirementconfig_path (
str
) – The configuration path for this requirement to test satisfaction
- Return type
- Returns
A dictionary of configuration-paths to requirements that could not be satisfied
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
ConstructableRequirementInterface
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Defines a Requirement that can be constructed based on their own requirements.
This effectively offers a means for serializing specific python types, to be reconstructed based on simple configuration data. Each constructable records a class requirement, which indicates the object that will be constructed. That class may have its own requirements (which is why validation of a ConstructableRequirement must happen after the class configuration value has been provided). These values are then provided to the object’s constructor by name as arguments (as well as the standard context and config_path arguments.
Args: name: The name of the requirement description: A short textual description of the requirement default: The default value for the requirement if no value is provided optional: Whether the requirement must be satisfied or not
-
add_requirement
(requirement)¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
abstract
construct
(context, config_path)[source]¶ Method for constructing within the context any required elements from subrequirements.
- Parameters
context (
ContextInterface
) – The context object containing the configuration data for the constructableconfig_path (
str
) – The configuration path for the specific instance of this constructable
- Return type
None
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
abstract
unsatisfied
(context, config_path)¶ Method to validate the value stored at config_path for the configuration object against a context.
Returns a list containing its own name (or multiple unsatisfied requirement names) when invalid
- Parameters
context (
ContextInterface
) – The context object containing the configuration for this requirementconfig_path (
str
) – The configuration path for this requirement to test satisfaction
- Return type
- Returns
A dictionary of configuration-paths to requirements that could not be satisfied
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
-
class
HierarchicalDict
(initial_dict=None, separator='.')[source]¶ Bases:
collections.abc.Mapping
The core of configuration data, it is a mapping class that stores keys within itself, and also stores lower hierarchies.
- Parameters
initial_dict (
Optional
[Dict
[str
,SimpleTypeRequirement
]]) – A dictionary to populate the HierachicalDict with initiallyseparator (
str
) – A custom hierarchy separator (defaults to CONFIG_SEPARATOR)
-
branch
(key)[source]¶ Returns the HierarchicalDict housed under the key.
This differs from the data property, in that it is directed by the key, and all layers under that key are returned, not just those in that level.
Higher layers are not prefixed with the location of earlier layers, so branching a hierarchy containing a.b.c.d on a.b would return a hierarchy containing c.d, not a.b.c.d.
- Parameters
key (
str
) – The location within the hierarchy to return higher layers.- Return type
- Returns
The HierarchicalDict underneath the specified key (not just the data at that key location in the tree)
-
clone
()[source]¶ Duplicates the configuration, allowing changes without affecting the original.
- Return type
- Returns
A duplicate HierarchicalDict of this object
-
property
data
¶ Returns just the data-containing mappings on this level of the Hierarchy.
- Return type
Dict
[~KT, ~VT]
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
merge
(key, value, overwrite=False)[source]¶ Acts similarly to splice, but maintains previous values.
If overwrite is true, then entries in the new value are used over those that exist within key already
- Parameters
key (
str
) – The location within the hierarchy at which to merge the valuevalue (
HierarchicalDict
) – HierarchicalDict to be merged under the key nodeoverwrite (
bool
) – A boolean defining whether the value will be overwritten if it already exists
- Return type
None
-
splice
(key, value)[source]¶ Splices an existing HierarchicalDictionary under a specific key.
This can be thought of as an inverse of
branch()
, although branch does not remove the requested hierarchy, it simply returns it.- Return type
None
-
values
() → an object providing a view on D's values¶
-
class
RequirementInterface
(name, description=None, default=None, optional=False)[source]¶ Bases:
object
Class that defines a requirement.
A requirement is a means for plugins and other framework components to request specific configuration data. Requirements can either be simple types (such as
SimpleTypeRequirement
,IntRequirement
,BytesRequirement
andStringRequirement
) or complex types (such asTranslationLayerRequirement
,SymbolTableRequirement
andClassRequirement
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)[source]¶ Adds a child to the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to add as a child-requirement- Return type
None
-
config_value
(context, config_path, default=None)[source]¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)[source]¶ Removes a child from the list of requirements.
- Parameters
requirement (
RequirementInterface
) – The requirement to remove as a child-requirement- Return type
None
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
abstract
unsatisfied
(context, config_path)[source]¶ Method to validate the value stored at config_path for the configuration object against a context.
Returns a list containing its own name (or multiple unsatisfied requirement names) when invalid
- Parameters
context (
ContextInterface
) – The context object containing the configuration for this requirementconfig_path (
str
) – The configuration path for this requirement to test satisfaction
- Return type
- Returns
A dictionary of configuration-paths to requirements that could not be satisfied
-
unsatisfied_children
(context, config_path)[source]¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
class
SimpleTypeRequirement
(name, description=None, default=None, optional=False)[source]¶ Bases:
volatility.framework.interfaces.configuration.RequirementInterface
Class to represent a single simple type (such as a boolean, a string, an integer or a series of bytes)
- Parameters
name (
str
) – The name of the requirementdescription (
Optional
[str
]) – A short textual description of the requirementdefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – The default value for the requirement if no value is providedoptional (
bool
) – Whether the requirement must be satisfied or not
-
add_requirement
(requirement)[source]¶ Always raises a TypeError as instance requirements cannot have children.
-
config_value
(context, config_path, default=None)¶ Returns the value for this Requirement from its config path.
- Parameters
context (
ContextInterface
) – the configuration store to find the value for this requirementconfig_path (
str
) – the configuration path of the instance of the requirement to be recovereddefault (
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]],None
]) – a default value to provide if the requirement’s configuration value is not found
- Return type
Union
[int
,bool
,bytes
,str
,List
[Union
[int
,bool
,bytes
,str
]]]
-
property
default
¶ Returns the default value if one is set.
-
property
description
¶ A short description of what the Requirement is designed to affect or achieve.
- Return type
-
instance_type
¶ alias of
builtins.bool
-
property
name
¶ The name of the Requirement.
Names cannot contain CONFIG_SEPARATOR (‘.’ by default) since this is used within the configuration hierarchy.
- Return type
-
remove_requirement
(requirement)[source]¶ Always raises a TypeError as instance requirements cannot have children.
-
property
requirements
¶ Returns a dictionary of all the child requirements, indexed by name.
- Return type
-
unsatisfied
(context, config_path)[source]¶ Validates the instance requirement based upon its instance_type.
- Return type
-
unsatisfied_children
(context, config_path)¶ Method that will validate all child requirements.
- Parameters
context (
ContextInterface
) – the context containing the configuration data for this requirementconfig_path (
str
) – the configuration path of this instance of the requirement
- Return type
- Returns
A dictionary of full configuration paths for each unsatisfied child-requirement
-
parent_path
(value)[source]¶ Returns the parent configuration path from a configuration path.
- Return type
Defines an interface for contexts, which hold the core components that a plugin will operate upon when running.
These include a memory container which holds a series of forest of layers, and a symbol_space which contains tables of symbols that can be used to interpret data in a layer. The context also provides some convenience functions, most notably the object constructor function, object, which will construct a symbol on a layer at a particular offset.
-
class
ContextInterface
[source]¶ Bases:
object
All context-like objects must adhere to the following interface.
This interface is present to avoid import dependency cycles.
Initializes the context with a symbol_space.
-
add_layer
(layer)[source]¶ Adds a named translation layer to the context memory.
- Parameters
layer (
DataLayerInterface
) – Layer object to be added to the context memory
-
clone
()[source]¶ Produce a clone of the context (and configuration), allowing modifications to be made without affecting any mutable objects in the original.
Memory constraints may become an issue for this function depending on how much is actually stored in the context
- Return type
-
abstract property
config
¶ Returns the configuration object for this context.
- Return type
-
abstract property
layers
¶ Returns the memory object for the context.
- Return type
-
module
(module_name, layer_name, offset, native_layer_name=None, size=None)[source]¶ Create a module object.
A module object is associated with a symbol table, and acts like a context, but offsets locations by a known value and looks up symbols, by default within the associated symbol table. It can also be sized should that information be available.
- Parameters
module_name (
str
) – The name of the modulelayer_name (
str
) – The layer the module is associated with (which layer the module lives within)offset (
int
) – The initial/base offset of the module (used as the offset for relative symbols)native_layer_name (
Optional
[str
]) – The default native_layer_name to use when the module constructs objectssize (
Optional
[int
]) – The size, in bytes, that the module occupys from offset location within the layer named layer_name
- Return type
- Returns
A module object
-
abstract
object
(object_type, layer_name, offset, native_layer_name=None, **arguments)[source]¶ Object factory, takes a context, symbol, offset and optional layer_name.
Looks up the layer_name in the context, finds the object template based on the symbol, and constructs an object using the object template on the layer at the offset.
- Parameters
object_type (
Union
[str
,Template
]) – Either a string name of the type, or a Template of the type to be constructedlayer_name (
str
) – The name of the layer on which to construct the objectoffset (
int
) – The address within the layer at which to construct the objectnative_layer_name (
Optional
[str
]) – The layer this object references (should it be a pointer or similar)
- Returns
A fully constructed object
-
abstract property
symbol_space
¶ Returns the symbol_space for the context.
This object must support the
SymbolSpaceInterface
- Return type
-
-
class
ModuleInterface
(context, module_name, layer_name, offset, symbol_table_name=None, native_layer_name=None)[source]¶ Bases:
object
Maintains state concerning a particular loaded module in memory.
This object is OS-independent.
Constructs a new os-independent module.
- Parameters
context (
ContextInterface
) – The context within which this module will existmodule_name (
str
) – The name of the modulelayer_name (
str
) – The layer within the context in which the module existsoffset (
int
) – The offset at which the module exists in the layersymbol_table_name (
Optional
[str
]) – The name of an associated symbol tablenative_layer_name (
Optional
[str
]) – The default native layer for objects constructed by the module
-
property
context
¶ Context that the module uses.
- Return type
-
has_enumeration
(name)[source]¶ Determines whether an enumeration is present in the module.
- Return type
-
abstract
object
(object_type, offset=None, native_layer_name=None, absolute=False, **kwargs)[source]¶ Returns an object created using the symbol_table_name and layer_name of the Module.
- Parameters
object_type (
str
) – The name of object type to construct (using the module’s symbol_table)offset (
Optional
[int
]) – the offset (unless absolute is set) from the start of the modulenative_layer_name (
Optional
[str
]) – The native layer for objects that reference a different layer (if not the default provided during module construction)absolute (
bool
) – A boolean specifying whether the offset is absolute within the layer, or relative to the start of the module
- Return type
- Returns
The constructed object
-
abstract
object_from_symbol
(symbol_name, native_layer_name=None, absolute=False, **kwargs)[source]¶ Returns an object created using the symbol_table_name and layer_name of the Module.
- Parameters
symbol_name (
str
) – The name of a symbol (that must be present in the module’s symbol table). The symbol’s associated type will be used to construct an object at the symbol’s offset.native_layer_name (
Optional
[str
]) – The native layer for objects that reference a different layer (if not the default provided during module construction)absolute (
bool
) – A boolean specifying whether the offset is absolute within the layer, or relative to the start of the module
- Return type
- Returns
The constructed object
Defines layers for containing data.
One layer may combine other layers, map data based on the data itself, or map a procedure (such as decryption) across another layer of data.
-
class
DataLayerInterface
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.interfaces.configuration.ConfigurableInterface
A Layer that directly holds data (and does not translate it).
This is effectively a leaf node in a layer tree. It directly accesses a data source and exposes it within volatility.
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()[source]¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ A list of other layer names required by this layer.
Note
DataLayers must never define other layers
-
destroy
()[source]¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
abstract
is_valid
(offset, length=1)[source]¶ Returns a boolean based on whether the entire chunk of data (from offset to length) is valid or not.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
abstract
read
(offset, length, pad=False)[source]¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
If there is a fault of any kind (such as a page fault), an exception will be thrown unless pad is set, in which case the read errors will be replaced by null characters.
- Parameters
- Return type
- Returns
The bytes read from the layer, starting at offset for length bytes
-
scan
(context, scanner, progress_callback=None, sections=None)[source]¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
property
-
class
DummyProgress
[source]¶ Bases:
object
A class to emulate Multiprocessing/threading Value objects.
-
class
LayerContainer
[source]¶ Bases:
collections.abc.Mapping
Container for multiple layers of data.
-
add_layer
(layer)[source]¶ Adds a layer to memory model.
This will throw an exception if the required dependencies are not met
- Parameters
layer (
DataLayerInterface
) – the layer to add to the list of layers (based on layer.name)- Return type
None
-
check_cycles
()[source]¶ Runs through the available layers and identifies if there are cycles in the DAG.
- Return type
None
-
del_layer
(name)[source]¶ Removes the layer called name.
This will throw an exception if other layers depend upon this layer
- Parameters
name (
str
) – The name of the layer to delete- Return type
None
-
free_layer_name
(prefix='layer')[source]¶ Returns an unused layer name to ensure no collision occurs when inserting a layer.
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
read
(layer, offset, length, pad=False)[source]¶ Reads from a particular layer at offset for length bytes.
Returns ‘bytes’ not ‘str’
- Parameters
- Return type
- Returns
The result of reading from the requested layer
-
values
() → an object providing a view on D's values¶
-
-
class
ScannerInterface
[source]¶ Bases:
object
Class for layer scanners that return locations of particular values from within the data.
These are designed to be given a chunk of data and return a generator which yields any found items. They should NOT perform complex/time-consuming tasks, these should be carried out by the consumer of the generator on the items returned.
They will be provided all available data (therefore not necessarily contiguous) in ascending offset order, in chunks no larger than chunk_size + overlap where overlap is the amount of data read twice once at the end of an earlier chunk and once at the start of the next chunk.
It should be noted that the scanner can maintain state if necessary. Scanners should balance the size of chunk based on the amount of time scanning the chunk will take (ie, do not set an excessively large chunksize and try not to take a significant amount of time in the __call__ method).
Scanners must NOT return results found after self.chunk_size (ie, entirely contained within the overlap). It is the responsibility of the scanner not to return such duplicate results.
Scanners can mark themselves as thread_safe, if they do not require state in either their own class or the context. This will allow the scanner to be run in parallel against multiple blocks.
-
property
context
¶ - Return type
-
thread_safe
= False¶
-
property
-
class
TranslationLayerInterface
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.interfaces.layers.DataLayerInterface
Provides a layer that translates or transforms another layer or layers.
Translation layers always depend on another layer (typically translating offsets in a virtual offset space into a smaller physical offset space).
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
abstract property
dependencies
¶ Returns a list of layer names that this layer translates onto.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
abstract
is_valid
(offset, length=1)¶ Returns a boolean based on whether the entire chunk of data (from offset to length) is valid or not.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
abstract
mapping
(offset, length, ignore_errors=False)[source]¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
ignore_errors will provide all available maps with gaps, but their total length may not add up to the requested length This allows translation layers to provide maps of contiguous regions in one layer
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
read
(self, offset, length, pad=False)[source]¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
property
Objects are the core of volatility, and provide pythonic access to interpreted values of data from a layer.
-
class
ObjectInformation
(layer_name, offset, member_name=None, parent=None, native_layer_name=None)[source]¶ Bases:
volatility.framework.interfaces.objects.ReadOnlyMapping
Contains common information useful/pertinent only to an individual object (like an instance)
This typically contains information such as the layer the object belongs to, the offset where it was constructed, and if it is a subordinate object, its parent.
This is primarily used to reduce the number of parameters passed to object constructors and keep them all together in a single place. These values are based on the
ReadOnlyMapping
class, to prevent their modification.Constructs a container for basic information about an object.
- Parameters
layer_name (
str
) – Layer from which the data for the object will be readoffset (
int
) – Offset within the layer at which the data for the object will be readmember_name (
Optional
[str
]) – If the object was accessed as a member of a parent object, this was the name used to access itparent (
Optional
[ObjectInterface
]) – If the object was accessed as a member of a parent object, this is the parent objectnative_layer_name (
Optional
[str
]) – If this object references other objects (such as a pointer), what layer those objects live in
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
values
() → an object providing a view on D's values¶
-
class
ObjectInterface
(context, type_name, object_info, **kwargs)[source]¶ Bases:
object
A base object required to be the ancestor of every object used in volatility.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
object
A container for proxied methods that the ObjectTemplate of this object will call. This is primarily to keep methods together for easy organization/management, there is no significant need for it to be a separate class.
The methods of this class must be class methods rather than standard methods, to allow for code reuse. Each method also takes a template since the templates may contain the necessary data about the yet-to-be-constructed object. It allows objects to control how their templates respond without needing to write new templates for each and every potental object type.
-
abstract classmethod
has_member
(template, member_name)[source]¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)[source]¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
-
cast
(new_type_name, **additional)[source]¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()[source]¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)[source]¶ Returns whether the object would contain a member called member_name.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
class
ReadOnlyMapping
(dictionary)[source]¶ Bases:
collections.abc.Mapping
A read-only mapping of various values that offer attribute access as well.
This ensures that the data stored in the mapping should not be modified, making an immutable mapping.
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
values
() → an object providing a view on D's values¶
-
-
class
Template
(type_name, **arguments)[source]¶ Bases:
object
Class for all Factories that take offsets, and data layers and produce objects.
This is effectively a class for currying object calls. It creates a callable that can be called with the following parameters:
- Parameters
context – The context containing the memory layers and symbols required to construct the object
object_info – Basic information about the object, see the ObjectInformation class for more information
- Returns
The constructed object
The keyword arguments handed to the constructor, along with the type_name are stored for later retrieval. These will be access as object.vol.<keyword> or template.vol.<keyword> for each object and should contain as least the basic information that each object will require before it is instantiated (so offset and parent are explicitly not recorded here). This dictionary can be updated after construction, but any changes made after that point will not be cloned. This is so that templates such as those for string objects may contain different length limits, without affecting all other strings using the same template from a SymbolTable, constructed at resolution time and then cached.
Stores the keyword arguments for later object creation.
-
property
children
¶ The children of this template (such as member types, sub-types and base-types where they are relevant).
Used to traverse the template tree.
-
clone
()[source]¶ Returns a copy of the original Template as constructed (without update_vol additions having been made)
- Return type
-
abstract
has_member
(member_name)[source]¶ Returns whether the object would contain a member called member_name
- Return type
-
abstract
relative_child_offset
(child)[source]¶ Returns the relative offset of the child member from its parent offset.
- Return type
-
abstract
replace_child
(old_child, new_child)[source]¶ Replaces old_child with new_child in the list of children.
- Return type
None
-
update_vol
(**new_arguments)[source]¶ Updates the keyword arguments with values that will not be carried across to clones.
- Return type
None
-
property
vol
¶ Returns a volatility information object, much like the
ObjectInformation
provides.- Return type
Plugins are the functions of the volatility framework.
They are called and carry out some algorithms on data stored in layers using objects constructed from symbols.
-
class
FileConsumerInterface
[source]¶ Bases:
object
Class for consuming files potentially produced by plugins.
We use the producer/consumer model to ensure we can avoid running out of memory by storing every file produced. The downside is, we can’t provide much feedback to the producer about what happened to their file (other than exceptions).
-
consume_file
(file)[source]¶ Consumes a file as passed back to a UI by a plugin.
- Parameters
file (
FileInterface
) – A FileInterface object with the data to write to a file- Return type
None
-
-
class
FileInterface
(filename, data=None)[source]¶ Bases:
object
Class for storing Files in the plugin as a means to output a file or files when necessary.
-
class
PluginInterface
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.configuration.ConfigurableInterface
Class that defines the basic interface that all Plugins must maintain.
The constructor must only take a context and config_path, so that plugins can be launched automatically. As such all configuration information must be provided through the requirements and configuration information in the context it is passed.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)[source]¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
abstract
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Return type
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)[source]¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
All plugins output a TreeGrid object which must then be rendered (eithe by a GUI, or as text output, html output or in some other form.
This module defines both the output format (TreeGrid
) and the
renderer interface which can interact with a TreeGrid to produce
suitable output.
-
class
BaseAbsentValue
[source]¶ Bases:
object
Class that represents values which are not present for some reason.
-
class
Column
(name, type)¶ Bases:
tuple
Create new instance of Column(name, type)
-
count
()¶ Return number of occurrences of value.
-
index
()¶ Return first index of value.
Raises ValueError if the value is not present.
-
property
name
¶ Alias for field number 0
-
property
type
¶ Alias for field number 1
-
-
class
Disassembly
(data, offset=0, architecture='intel64')[source]¶ Bases:
object
A class to indicate that the bytes provided should be disassembled (based on the architecture)
-
possible_architectures
= ['intel', 'intel64', 'arm', 'arm64']¶
-
-
class
Renderer
(options=None)[source]¶ Bases:
object
Class that defines the interface that all output renderers must support.
Accepts an options object to configure the renderers.
-
class
TreeGrid
(columns, generator)[source]¶ Bases:
object
Class providing the interface for a TreeGrid (which contains TreeNodes)
The structure of a TreeGrid is designed to maintain the structure of the tree in a single object. For this reason each TreeNode does not hold its children, they are managed by the top level object. This leaves the Nodes as simple data carries and prevents them being used to manipulate the tree as a whole. This is a data structure, and is not expected to be modified much once created.
Carrying the children under the parent makes recursion easier, but then every node is its own little tree and must have all the supporting tree functions. It also allows for a node to be present in several different trees, and to create cycles.
Constructs a TreeGrid object using a specific set of columns.
The TreeGrid itself is a root element, that can have children but no values. The TreeGrid does not contain any information about formatting, these are up to the renderers and plugins.
- Parameters
columns (
List
[Tuple
[str
,Union
[Type
[int
],Type
[str
],Type
[float
],Type
[bytes
],Type
[datetime
],Type
[BaseAbsentValue
],Type
[Disassembly
]]]]) – A list of column tuples made up of (name, type).generator (
Generator
[+T_co, -T_contra, +V_co]) – An iterable containing row for a tree grid, each row contains a indent level followed by the values for each column in order.
-
base_types
= (<class 'int'>, <class 'str'>, <class 'float'>, <class 'bytes'>, <class 'datetime.datetime'>, <class 'volatility.framework.interfaces.renderers.Disassembly'>)¶
-
abstract property
columns
¶ Returns the available columns and their ordering and types.
-
abstract
is_ancestor
(node, descendant)[source]¶ Returns true if descendent is a child, grandchild, etc of node.
- Return type
-
abstract
populate
(function=None, initial_accumulator=None)[source]¶ Populates the tree by consuming the TreeGrid’s construction generator Func is called on every node, so can be used to create output on demand.
This is equivalent to a one-time visit.
- Return type
None
-
abstract property
populated
¶ Indicates that population has completed and the tree may now be manipulated separately.
- Return type
-
abstract static
sanitize_name
(text)[source]¶ Method used to sanitize column names for TreeNodes.
- Return type
-
abstract
values
(node)[source]¶ Returns the values for a particular node.
The values returned are mutable,
-
abstract
visit
(node, function, initial_accumulator, sort_key=None)[source]¶ Visits all the nodes in a tree, calling function on each one.
function should have the signature function(node, accumulator) and return new_accumulator If accumulators are not needed, the function must still accept a second parameter.
The order of that the nodes are visited is always depth first, however, the order children are traversed can be set based on a sort_key function which should accept a node’s values and return something that can be sorted to receive the desired order (similar to the sort/sorted key).
If node is None, then the root node is used.
- Parameters
function (
Callable
[[TreeNode
, ~_Type], ~_Type]) – The visitor to apply to the nodes under the initial nodeinitial_accumulator (~_Type) – An accumulator that allows data to be transfered between one visitor call to the next
sort_key (
Optional
[ColumnSortKey
]) – Information about the sort order of columns in order to determine the ordering of results
- Return type
None
-
class
TreeNode
(path, treegrid, parent, values)[source]¶ Bases:
collections.abc.Sequence
Initializes the TreeNode.
-
count
(value) → integer -- return number of occurrences of value¶
-
index
(value[, start[, stop]]) → integer -- return first index of value.¶ Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
-
abstract property
parent
¶ Returns the parent node of this node or None.
-
abstract property
path
¶ Returns a path identifying string.
This should be seen as opaque by external classes, Parsing of path locations based on this string are not guaranteed to remain stable.
- Return type
-
Symbols provide structural information about a set of bytes.
-
class
BaseSymbolTableInterface
(name, native_types, table_mapping=None, class_types=None)[source]¶ Bases:
object
The base interface, inherited by both NativeTables and SymbolTables.
native_types is a NativeTableInterface used for native types for the particular loaded symbol table table_mapping allows tables referenced by symbols to be remapped to a different table name if necessary
Note: table_mapping is a rarely used feature (since symbol tables are typically self-contained)
- Parameters
name (
str
) – Name of the symbol tablenative_types (
NativeTableInterface
) – The native symbol table used to resolve any base/native typestable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary mapping names of tables (which when present within the table will be changed to the mapped table)class_types (
Optional
[Dict
[str
,Type
[ObjectInterface
]]]) – A dictionary of types and classes that should be instantiated instead of Struct to construct them
-
del_type_class
(name)[source]¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
get_symbol
(name)[source]¶ Resolves a symbol name into a symbol object.
If the symbol isn’t found, it raises a SymbolError exception
- Return type
-
get_symbol_type
(name)[source]¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)[source]¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)[source]¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(name)[source]¶ Resolves a symbol name into an object template.
If the symbol isn’t found it raises a SymbolError exception
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)[source]¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
class
MetadataInterface
(json_data)[source]¶ Bases:
object
Interface for accessing metadata stored within a symbol table.
Constructor that accepts json_data.
-
class
NativeTableInterface
(name, native_types, table_mapping=None, class_types=None)[source]¶ Bases:
volatility.framework.interfaces.symbols.BaseSymbolTableInterface
Class to distinguish NativeSymbolLists from other symbol lists.
- Parameters
name (
str
) – Name of the symbol tablenative_types (
NativeTableInterface
) – The native symbol table used to resolve any base/native typestable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary mapping names of tables (which when present within the table will be changed to the mapped table)class_types (
Optional
[Dict
[str
,Type
[ObjectInterface
]]]) – A dictionary of types and classes that should be instantiated instead of Struct to construct them
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
get_symbol
(name)[source]¶ Resolves a symbol name into a symbol object.
If the symbol isn’t found, it raises a SymbolError exception
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(name)¶ Resolves a symbol name into an object template.
If the symbol isn’t found it raises a SymbolError exception
- Return type
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
class
SymbolInterface
(name, address, type=None, constant_data=None)[source]¶ Bases:
object
Contains information about a named location in a program’s memory.
- Parameters
-
property
address
¶ Returns the relative address of the symbol within the compilation unit.
- Return type
-
property
constant_data
¶ Returns any constant data associated with the symbol.
-
class
SymbolSpaceInterface
[source]¶ Bases:
collections.abc.Mapping
An interface for the container that holds all the symbol-containing tables for use within a context.
-
free_table_name
(prefix='layer')[source]¶ Returns an unused table name to ensure no collision occurs when inserting a symbol table.
- Return type
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
abstract
get_enumeration
(enum_name)[source]¶ Look-up an enumeration across all the contained symbol tables.
- Return type
-
abstract
get_symbol
(symbol_name)[source]¶ Look-up a symbol name across all the contained symbol tables.
- Return type
-
abstract
get_symbols_by_location
(offset, size=0, table_name=None)[source]¶ Returns all symbols that exist at a specific relative address.
-
abstract
get_symbols_by_type
(type_name)[source]¶ Returns all symbols based on the type of the symbol.
-
abstract
get_type
(type_name)[source]¶ Look-up a type name across all the contained symbol tables.
- Return type
-
abstract
has_enumeration
(name)[source]¶ Determines whether an enumeration choice exists in the contained symbol tables.
- Return type
-
abstract
has_symbol
(name)[source]¶ Determines whether a symbol exists in the contained symbol tables.
- Return type
-
abstract
has_type
(name)[source]¶ Determines whether a type exists in the contained symbol tables.
- Return type
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
values
() → an object providing a view on D's values¶
-
-
class
SymbolTableInterface
(context, config_path, name, native_types, table_mapping=None, class_types=None)[source]¶ Bases:
volatility.framework.interfaces.symbols.BaseSymbolTableInterface
,volatility.framework.interfaces.configuration.ConfigurableInterface
,abc.ABC
Handles a table of symbols.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
NativeTableInterface
) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types (
Optional
[Dict
[str
,Type
[ObjectInterface
]]]) – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()[source]¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(name)¶ Resolves a symbol name into a symbol object.
If the symbol isn’t found, it raises a SymbolError exception
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(name)¶ Resolves a symbol name into an object template.
If the symbol isn’t found it raises a SymbolError exception
- Return type
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
volatility.framework.layers package¶
-
class
BytesScanner
(needle)[source]¶ Bases:
volatility.framework.interfaces.layers.ScannerInterface
-
property
context
¶ - Return type
-
thread_safe
= True¶
-
property
-
class
MultiStringScanner
(patterns)[source]¶ Bases:
volatility.framework.interfaces.layers.ScannerInterface
-
property
context
¶ - Return type
-
thread_safe
= True¶
-
property
-
class
RegExScanner
(pattern, flags=0)[source]¶ Bases:
volatility.framework.interfaces.layers.ScannerInterface
-
property
context
¶ - Return type
-
thread_safe
= True¶
-
property
-
exception
WindowsCrashDump32FormatException
(layer_name, *args)[source]¶ Bases:
volatility.framework.exceptions.LayerException
Thrown when an error occurs with the underlying Crash file format.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
WindowsCrashDump32Layer
(context, config_path, name)[source]¶ Bases:
volatility.framework.layers.segmented.SegmentedLayer
A Windows crash format TranslationLayer.
This TranslationLayer supports Microsoft complete memory dump files. It currently does not support kernel or small memory dump files.
Basic initializer that allows configurables to access their own config settings.
-
SIGNATURE
= 1162297680¶
-
VALIDDUMP
= 1347245380¶
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layers that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
headerpages
= 1¶
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
priority
= 23¶
-
provides
= {'type': 'physical'}¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
-
class
WindowsCrashDump32Stacker
[source]¶ Bases:
volatility.framework.interfaces.automagic.StackerLayerInterface
-
classmethod
stack
(context, layer_name, progress_callback=None)[source]¶ Method to determine whether this builder can operate on the named layer. If so, modify the context appropriately.
Returns the name of any new layer stacked on top of this layer or None. The stacking is therefore strictly linear rather than tree driven.
Configuration options provided by the context are ignored, and defaults are to be used by this method to build a space where possible.
- Parameters
- Return type
-
stack_order
= 11¶
-
classmethod
-
class
Intel
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.linear.LinearlyMappedLayer
Translation Layer for the Intel IA32 memory mapping.
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 32¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)[source]¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)[source]¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 4294967295¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 40¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page directory', 10, False), ('page table', 10, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
Intel32e
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.intel.Intel
Class for handling 64-bit (32-bit extensions) for Intel architectures.
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 64¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 281474976710655¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 30¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page map layer 4', 9, False), ('page directory pointer', 9, True), ('page directory', 9, True), ('page table', 9, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
IntelPAE
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.intel.Intel
Class for handling Physical Address Extensions for Intel architectures.
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 32¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 4294967295¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 35¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page directory pointer', 2, False), ('page directory', 9, True), ('page table', 9, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
WindowsIntel
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.intel.WindowsMixin
,volatility.framework.layers.intel.Intel
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 32¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 4294967295¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 40¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page directory', 10, False), ('page table', 10, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
WindowsIntel32e
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.intel.WindowsMixin
,volatility.framework.layers.intel.Intel32e
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 64¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 281474976710655¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 30¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page map layer 4', 9, False), ('page directory pointer', 9, True), ('page directory', 9, True), ('page table', 9, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
WindowsIntelPAE
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.intel.WindowsMixin
,volatility.framework.layers.intel.IntelPAE
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 32¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 4294967295¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 35¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page directory pointer', 2, False), ('page directory', 9, True), ('page table', 9, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
WindowsMixin
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.intel.Intel
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
bits_per_register
= 32¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layer names that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
This allows translation layers to provide maps of contiguous regions in one layer
-
maximum_address
= 4294967295¶
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
minimum_address
= 0¶
-
page_size
= 4096¶
-
priority
= 40¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
structure
= [('page directory', 10, False), ('page table', 10, True)]¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
exception
LimeFormatException
(layer_name, *args)[source]¶ Bases:
volatility.framework.exceptions.LayerException
Thrown when an error occurs with the underlying Lime file format.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
LimeLayer
(context, config_path, name)[source]¶ Bases:
volatility.framework.layers.segmented.SegmentedLayer
A Lime format TranslationLayer.
Lime is generally used to store physical memory images where there are large holes in the physical layer
Basic initializer that allows configurables to access their own config settings.
-
MAGIC
= 1281969477¶
-
VERSION
= 1¶
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layers that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
priority
= 21¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
-
class
LimeStacker
[source]¶ Bases:
volatility.framework.interfaces.automagic.StackerLayerInterface
-
classmethod
stack
(context, layer_name, progress_callback=None)[source]¶ Method to determine whether this builder can operate on the named layer. If so, modify the context appropriately.
Returns the name of any new layer stacked on top of this layer or None. The stacking is therefore strictly linear rather than tree driven.
Configuration options provided by the context are ignored, and defaults are to be used by this method to build a space where possible.
- Parameters
- Return type
-
stack_order
= 10¶
-
classmethod
-
class
LinearlyMappedLayer
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.interfaces.layers.TranslationLayerInterface
Class to differentiate Linearly Mapped layers (where a => b implies that a + c => b + c)
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
abstract property
dependencies
¶ Returns a list of layer names that this layer translates onto.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
abstract
is_valid
(offset, length=1)¶ Returns a boolean based on whether the entire chunk of data (from offset to length) is valid or not.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
abstract
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
ignore_errors will provide all available maps with gaps, but their total length may not add up to the requested length This allows translation layers to provide maps of contiguous regions in one layer
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
read
(self, offset, length, pad=False)[source]¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
property
-
class
PdbMSFStream
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.linear.LinearlyMappedLayer
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of layer names that this layer translates onto.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)[source]¶ Returns a boolean based on whether the entire chunk of data (from offset to length) is valid or not.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)[source]¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
ignore_errors will provide all available maps with gaps, but their total length may not add up to the requested length This allows translation layers to provide maps of contiguous regions in one layer
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
PdbMultiStreamFormat
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.linear.LinearlyMappedLayer
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layers that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)[source]¶ Returns a boolean based on whether the entire chunk of data (from offset to length) is valid or not.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)[source]¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
ignore_errors will provide all available maps with gaps, but their total length may not add up to the requested length This allows translation layers to provide maps of contiguous regions in one layer
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
property
page_size
¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
BufferDataLayer
(context, config_path, name, buffer, metadata=None)[source]¶ Bases:
volatility.framework.interfaces.layers.DataLayerInterface
A DataLayer class backed by a buffer in memory, designed for testing and swift data access.
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ A list of other layer names required by this layer.
Note
DataLayers must never define other layers
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
priority
= 10¶
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
property
-
class
FileLayer
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.interfaces.layers.DataLayerInterface
a DataLayer backed by a file on the filesystem.
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ A list of other layer names required by this layer.
Note
DataLayers must never define other layers
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
priority
= 20¶
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
property
-
exception
RegistryFormatException
(layer_name, *args)[source]¶ Bases:
volatility.framework.exceptions.LayerException
Thrown when an error occurs with the underlying Registry file format.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
RegistryHive
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.linear.LinearlyMappedLayer
Basic initializer that allows configurables to access their own config settings.
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of layer names that this layer translates onto.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
get_key
(key, return_list=False)[source]¶ Gets a specific registry key by key path.
return_list specifies whether the return result will be a single node (default) or a list of nodes from root to the current node (if return_list is true).
- Return type
-
get_node
(cell_offset)[source]¶ Returns the appropriate Node, interpreted from the Cell based on its Signature.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)[source]¶ Returns a boolean based on whether the offset is valid or not.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)[source]¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
ignore_errors will provide all available maps with gaps, but their total length may not add up to the requested length This allows translation layers to provide maps of contiguous regions in one layer
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
visit_nodes
(visitor, node=None)[source]¶ Applies a callable (visitor) to all nodes within the registry tree from a given node.
- Return type
None
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
-
exception
RegistryInvalidIndex
(layer_name, *args)[source]¶ Bases:
volatility.framework.exceptions.LayerException
Thrown when an index that doesn’t exist or can’t be found occurs.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
JarHandler
[source]¶ Bases:
urllib.request.BaseHandler
Handles the jar scheme for URIs.
Reference used for the schema syntax: http://docs.netkernel.org/book/view/book:mod:reference/doc:layer1:schemes:jar
Actual reference (found from https://www.w3.org/wiki/UriSchemes/jar) seemed not to return: http://developer.java.sun.com/developer/onlineTraining/protocolhandlers/
-
add_parent
(parent)¶
-
close
()¶
-
handler_order
= 500¶
-
-
class
SegmentedLayer
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.linear.LinearlyMappedLayer
A class to handle a single run-based layer-to-layer mapping.
In the documentation “mapped address” or “mapped offset” refers to an offset once it has been mapped to the underlying layer
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layers that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this type of layer.
- Return type
-
is_valid
(offset, length=1)[source]¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)[source]¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
-
class
VmwareLayer
(context, config_path, name, metadata=None)[source]¶ Bases:
volatility.framework.layers.segmented.SegmentedLayer
Basic initializer that allows configurables to access their own config settings.
-
property
address_mask
¶ Returns a mask which encapsulates all the active bits of an address for this layer.
- Return type
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
property
dependencies
¶ Returns a list of the lower layers that this layer is dependent upon.
-
destroy
()¶ Causes a DataLayer to close any open handles, etc.
Systems that make use of Data Layers should call destroy when they are done with them. This will close all handles, and make the object unreadable (exceptions will be thrown using a DataLayer after destruction)
- Return type
None
-
classmethod
get_requirements
()[source]¶ This vmware translation layer always requires a separate metadata layer.
- Return type
-
group_structure
= '64sQQ'¶
-
header_structure
= '<4sII'¶
-
is_valid
(offset, length=1)¶ Returns whether the address offset can be translated to a valid address.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
mapping
(offset, length, ignore_errors=False)¶ Returns a sorted iterable of (offset, mapped_offset, length, layer) mappings.
-
property
metadata
¶ Returns a ReadOnly copy of the metadata published by this layer.
- Return type
Mapping
[~KT, +VT_co]
-
priority
= 22¶
-
read
(self, offset, length, pad=False)¶ Reads an offset for length bytes and returns ‘bytes’ (not ‘str’) of length size.
- Return type
-
scan
(context, scanner, progress_callback=None, sections=None)¶ Scans a Translation layer by chunk.
Note: this will skip missing/unmappable chunks of memory
- Parameters
context (
ContextInterface
) – The context containing the data layerscanner (
ScannerInterface
) – The constructed Scanner object to be appliedprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – Method that is called periodically during scanning to update progresssections (
Optional
[Iterable
[Tuple
[int
,int
]]]) – A list of (start, size) tuples defining the portions of the layer to scan
- Return type
- Returns
The output iterable from the scanner object having been run against the layer
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
write
(offset, value)¶ Writes a value at offset, distributing the writing across any underlying mapping.
- Return type
None
-
property
volatility.framework.objects package¶
-
class
AggregateType
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
Object which can contain members that are other objects.
Keep the number of methods in this class low or very specific, since each one could overload a valid member.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)[source]¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)[source]¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)[source]¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
class
Array
(context, type_name, object_info, count=0, subtype=None)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
,collections.abc.Sequence
Object which can contain a fixed number of an object type.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)[source]¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
index
(value[, start[, stop]]) → integer -- return first index of value.¶ Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
class
BitField
(context, type_name, object_info, base_type, start_bit=0, end_bit=0)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
,int
Object containing a field which is made up of bits rather than whole bytes.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
imag
¶ the imaginary part of a complex number
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
class
Boolean
(context, type_name, object_info, data_format)[source]¶ Bases:
volatility.framework.objects.PrimitiveObject
,int
Primitive Object that handles boolean types.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
imag
¶ the imaginary part of a complex number
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
class
Bytes
(context, type_name, object_info, length=1)[source]¶ Bases:
volatility.framework.objects.PrimitiveObject
,bytes
Primitive Object that handles specific series of bytes.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
capitalize
() → copy of B¶ Return a copy of B with only its first character capitalized (ASCII) and the rest lower-cased.
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
center
(width[, fillchar]) → copy of B¶ Return B centered in a string of length width. Padding is done using the specified fill character (default is a space).
-
count
(sub[, start[, end]]) → int¶ Return the number of non-overlapping occurrences of subsection sub in bytes B[start:end]. Optional arguments start and end are interpreted as in slice notation.
-
decode
()¶ Decode the bytes using the codec registered for encoding.
- encoding
The encoding with which to decode the bytes.
- errors
The error handling scheme to use for the handling of decoding errors. The default is ‘strict’ meaning that decoding errors raise a UnicodeDecodeError. Other possible values are ‘ignore’ and ‘replace’ as well as any other name registered with codecs.register_error that can handle UnicodeDecodeErrors.
-
endswith
(suffix[, start[, end]]) → bool¶ Return True if B ends with the specified suffix, False otherwise. With optional start, test B beginning at that position. With optional end, stop comparing B at that position. suffix can also be a tuple of bytes to try.
-
expandtabs
(tabsize=8) → copy of B¶ Return a copy of B where all tab characters are expanded using spaces. If tabsize is not given, a tab size of 8 characters is assumed.
-
find
(sub[, start[, end]]) → int¶ Return the lowest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
-
fromhex
()¶ Create a bytes object from a string of hexadecimal numbers.
Spaces between two numbers are accepted. Example: bytes.fromhex(‘B9 01EF’) -> b’\xb9\x01\xef’.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
hex
() → string¶ Create a string of hexadecimal numbers from a bytes object. Example: b’xb9x01xef’.hex() -> ‘b901ef’.
-
index
(sub[, start[, end]]) → int¶ Return the lowest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Raises ValueError when the subsection is not found.
-
isalnum
() → bool¶ Return True if all characters in B are alphanumeric and there is at least one character in B, False otherwise.
-
isalpha
() → bool¶ Return True if all characters in B are alphabetic and there is at least one character in B, False otherwise.
-
isascii
() → bool¶ Return True if B is empty or all characters in B are ASCII, False otherwise.
-
isdigit
() → bool¶ Return True if all characters in B are digits and there is at least one character in B, False otherwise.
-
islower
() → bool¶ Return True if all cased characters in B are lowercase and there is at least one cased character in B, False otherwise.
-
isspace
() → bool¶ Return True if all characters in B are whitespace and there is at least one character in B, False otherwise.
-
istitle
() → bool¶ Return True if B is a titlecased string and there is at least one character in B, i.e. uppercase characters may only follow uncased characters and lowercase characters only cased ones. Return False otherwise.
-
isupper
() → bool¶ Return True if all cased characters in B are uppercase and there is at least one cased character in B, False otherwise.
-
join
()¶ Concatenate any number of bytes objects.
The bytes whose method is called is inserted in between each pair.
The result is returned as a new bytes object.
Example: b’.’.join([b’ab’, b’pq’, b’rs’]) -> b’ab.pq.rs’.
-
ljust
(width[, fillchar]) → copy of B¶ Return B left justified in a string of length width. Padding is done using the specified fill character (default is a space).
-
lower
() → copy of B¶ Return a copy of B with all ASCII characters converted to lowercase.
-
lstrip
()¶ Strip leading bytes contained in the argument.
If the argument is omitted or None, strip leading ASCII whitespace.
-
static
maketrans
()¶ Return a translation table useable for the bytes or bytearray translate method.
The returned table will be one where each byte in frm is mapped to the byte at the same position in to.
The bytes objects frm and to must be of the same length.
-
partition
()¶ Partition the bytes into three parts using the given separator.
This will search for the separator sep in the bytes. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.
If the separator is not found, returns a 3-tuple containing the original bytes object and two empty bytes objects.
-
replace
()¶ Return a copy with all occurrences of substring old replaced by new.
- count
Maximum number of occurrences to replace. -1 (the default value) means replace all occurrences.
If the optional argument count is given, only the first count occurrences are replaced.
-
rfind
(sub[, start[, end]]) → int¶ Return the highest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
-
rindex
(sub[, start[, end]]) → int¶ Return the highest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Raise ValueError when the subsection is not found.
-
rjust
(width[, fillchar]) → copy of B¶ Return B right justified in a string of length width. Padding is done using the specified fill character (default is a space)
-
rpartition
()¶ Partition the bytes into three parts using the given separator.
This will search for the separator sep in the bytes, starting at the end. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.
If the separator is not found, returns a 3-tuple containing two empty bytes objects and the original bytes object.
-
rsplit
()¶ Return a list of the sections in the bytes, using sep as the delimiter.
- sep
The delimiter according which to split the bytes. None (the default value) means split on ASCII whitespace characters (space, tab, return, newline, formfeed, vertical tab).
- maxsplit
Maximum number of splits to do. -1 (the default value) means no limit.
Splitting is done starting at the end of the bytes and working to the front.
-
rstrip
()¶ Strip trailing bytes contained in the argument.
If the argument is omitted or None, strip trailing ASCII whitespace.
-
split
()¶ Return a list of the sections in the bytes, using sep as the delimiter.
- sep
The delimiter according which to split the bytes. None (the default value) means split on ASCII whitespace characters (space, tab, return, newline, formfeed, vertical tab).
- maxsplit
Maximum number of splits to do. -1 (the default value) means no limit.
-
splitlines
()¶ Return a list of the lines in the bytes, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends is given and true.
-
startswith
(prefix[, start[, end]]) → bool¶ Return True if B starts with the specified prefix, False otherwise. With optional start, test B beginning at that position. With optional end, stop comparing B at that position. prefix can also be a tuple of bytes to try.
-
strip
()¶ Strip leading and trailing bytes contained in the argument.
If the argument is omitted or None, strip leading and trailing ASCII whitespace.
-
swapcase
() → copy of B¶ Return a copy of B with uppercase ASCII characters converted to lowercase ASCII and vice versa.
-
title
() → copy of B¶ Return a titlecased version of B, i.e. ASCII words start with uppercase characters, all remaining cased characters have lowercase.
-
translate
()¶ Return a copy with each character mapped by the given translation table.
- table
Translation table, which must be a bytes object of length 256.
All characters occurring in the optional argument delete are removed. The remaining characters are mapped through the given translation table.
-
upper
() → copy of B¶ Return a copy of B with all ASCII characters converted to uppercase.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
zfill
(width) → copy of B¶ Pad a numeric string B with zeros on the left, to fill a field of the specified width. B is never truncated.
-
class
Char
(context, type_name, object_info, data_format)[source]¶ Bases:
volatility.framework.objects.PrimitiveObject
,int
Primitive Object that handles characters.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
imag
¶ the imaginary part of a complex number
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
class
ClassType
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.AggregateType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
DataFormatInfo
(length, byteorder, signed)¶ Bases:
tuple
Create new instance of DataFormatInfo(length, byteorder, signed)
-
property
byteorder
¶ Alias for field number 1
-
count
()¶ Return number of occurrences of value.
-
index
()¶ Return first index of value.
Raises ValueError if the value is not present.
-
property
length
¶ Alias for field number 0
-
property
signed
¶ Alias for field number 2
-
property
-
class
Enumeration
(context, type_name, object_info, base_type, choices)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
,int
Returns an object made up of choices.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
lookup
(template, value)[source]¶ Looks up an individual value and returns the associated name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
imag
¶ the imaginary part of a complex number
-
lookup
(value=None)[source]¶ Looks up an individual value and returns the associated name.
- Return type
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
class
Float
(context, type_name, object_info, data_format)[source]¶ Bases:
volatility.framework.objects.PrimitiveObject
,float
Primitive Object that handles double or floating point numbers.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
as_integer_ratio
()¶ Return integer ratio.
Return a pair of integers, whose ratio is exactly equal to the original float and with a positive denominator.
Raise OverflowError on infinities and a ValueError on NaNs.
>>> (10.0).as_integer_ratio() (10, 1) >>> (0.0).as_integer_ratio() (0, 1) >>> (-.25).as_integer_ratio() (-1, 4)
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Return self, the complex conjugate of any float.
-
fromhex
()¶ Create a floating-point number from a hexadecimal string.
>>> float.fromhex('0x1.ffffp10') 2047.984375 >>> float.fromhex('-0x1p-1074') -5e-324
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
hex
()¶ Return a hexadecimal representation of a floating-point number.
>>> (-0.1).hex() '-0x1.999999999999ap-4' >>> 3.14159.hex() '0x1.921f9f01b866ep+1'
-
imag
¶ the imaginary part of a complex number
-
is_integer
()¶ Return True if the float is an integer.
-
real
¶ the real part of a complex number
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
class
Function
(context, type_name, object_info, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
object
A container for proxied methods that the ObjectTemplate of this object will call. This is primarily to keep methods together for easy organization/management, there is no significant need for it to be a separate class.
The methods of this class must be class methods rather than standard methods, to allow for code reuse. Each method also takes a template since the templates may contain the necessary data about the yet-to-be-constructed object. It allows objects to control how their templates respond without needing to write new templates for each and every potental object type.
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
abstract
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
Integer
(context, type_name, object_info, data_format)[source]¶ Bases:
volatility.framework.objects.PrimitiveObject
,int
Primitive Object that handles standard numeric types.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
imag
¶ the imaginary part of a complex number
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
class
Pointer
(context, type_name, object_info, data_format, subtype=None)[source]¶ Bases:
volatility.framework.objects.Integer
Pointer which points to another object.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)[source]¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
classmethod
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
dereference
(layer_name=None)[source]¶ Dereferences the pointer.
Layer_name is identifies the appropriate layer within the context that the pointer points to. If layer_name is None, it defaults to the same layer that the pointer is currently instantiated in.
- Return type
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
imag
¶ the imaginary part of a complex number
-
is_readable
(layer_name=None)[source]¶ Determines whether the address of this pointer can be read from memory.
- Return type
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
class
PrimitiveObject
(context, type_name, object_info, data_format)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
PrimitiveObject is an interface for any objects that should simulate a Python primitive.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
class
String
(context, type_name, object_info, max_length=1, encoding='utf-8', errors='strict')[source]¶ Bases:
volatility.framework.objects.PrimitiveObject
,str
Primitive Object that handles string values.
- Parameters
max_length (
int
) – specifies the maximum possible length that the string could hold within memory (for multibyte characters, this will not be the maximum length of the string)
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
capitalize
()¶ Return a capitalized version of the string.
More specifically, make the first character have upper case and the rest lower case.
-
casefold
()¶ Return a version of the string suitable for caseless comparisons.
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
center
()¶ Return a centered string of length width.
Padding is done using the specified fill character (default is a space).
-
count
(sub[, start[, end]]) → int¶ Return the number of non-overlapping occurrences of substring sub in string S[start:end]. Optional arguments start and end are interpreted as in slice notation.
-
encode
()¶ Encode the string using the codec registered for encoding.
- encoding
The encoding in which to encode the string.
- errors
The error handling scheme to use for encoding errors. The default is ‘strict’ meaning that encoding errors raise a UnicodeEncodeError. Other possible values are ‘ignore’, ‘replace’ and ‘xmlcharrefreplace’ as well as any other name registered with codecs.register_error that can handle UnicodeEncodeErrors.
-
endswith
(suffix[, start[, end]]) → bool¶ Return True if S ends with the specified suffix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. suffix can also be a tuple of strings to try.
-
expandtabs
()¶ Return a copy where all tab characters are expanded using spaces.
If tabsize is not given, a tab size of 8 characters is assumed.
-
find
(sub[, start[, end]]) → int¶ Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
-
format
(*args, **kwargs) → str¶ Return a formatted version of S, using substitutions from args and kwargs. The substitutions are identified by braces (‘{‘ and ‘}’).
-
format_map
(mapping) → str¶ Return a formatted version of S, using substitutions from mapping. The substitutions are identified by braces (‘{‘ and ‘}’).
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
index
(sub[, start[, end]]) → int¶ Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
-
isalnum
()¶ Return True if the string is an alpha-numeric string, False otherwise.
A string is alpha-numeric if all characters in the string are alpha-numeric and there is at least one character in the string.
-
isalpha
()¶ Return True if the string is an alphabetic string, False otherwise.
A string is alphabetic if all characters in the string are alphabetic and there is at least one character in the string.
-
isascii
()¶ Return True if all characters in the string are ASCII, False otherwise.
ASCII characters have code points in the range U+0000-U+007F. Empty string is ASCII too.
-
isdecimal
()¶ Return True if the string is a decimal string, False otherwise.
A string is a decimal string if all characters in the string are decimal and there is at least one character in the string.
-
isdigit
()¶ Return True if the string is a digit string, False otherwise.
A string is a digit string if all characters in the string are digits and there is at least one character in the string.
-
isidentifier
()¶ Return True if the string is a valid Python identifier, False otherwise.
Use keyword.iskeyword() to test for reserved identifiers such as “def” and “class”.
-
islower
()¶ Return True if the string is a lowercase string, False otherwise.
A string is lowercase if all cased characters in the string are lowercase and there is at least one cased character in the string.
-
isnumeric
()¶ Return True if the string is a numeric string, False otherwise.
A string is numeric if all characters in the string are numeric and there is at least one character in the string.
-
isprintable
()¶ Return True if the string is printable, False otherwise.
A string is printable if all of its characters are considered printable in repr() or if it is empty.
-
isspace
()¶ Return True if the string is a whitespace string, False otherwise.
A string is whitespace if all characters in the string are whitespace and there is at least one character in the string.
-
istitle
()¶ Return True if the string is a title-cased string, False otherwise.
In a title-cased string, upper- and title-case characters may only follow uncased characters and lowercase characters only cased ones.
-
isupper
()¶ Return True if the string is an uppercase string, False otherwise.
A string is uppercase if all cased characters in the string are uppercase and there is at least one cased character in the string.
-
join
()¶ Concatenate any number of strings.
The string whose method is called is inserted in between each given string. The result is returned as a new string.
Example: ‘.’.join([‘ab’, ‘pq’, ‘rs’]) -> ‘ab.pq.rs’
-
ljust
()¶ Return a left-justified string of length width.
Padding is done using the specified fill character (default is a space).
-
lower
()¶ Return a copy of the string converted to lowercase.
-
lstrip
()¶ Return a copy of the string with leading whitespace removed.
If chars is given and not None, remove characters in chars instead.
-
static
maketrans
()¶ Return a translation table usable for str.translate().
If there is only one argument, it must be a dictionary mapping Unicode ordinals (integers) or characters to Unicode ordinals, strings or None. Character keys will be then converted to ordinals. If there are two arguments, they must be strings of equal length, and in the resulting dictionary, each character in x will be mapped to the character at the same position in y. If there is a third argument, it must be a string, whose characters will be mapped to None in the result.
-
partition
()¶ Partition the string into three parts using the given separator.
This will search for the separator in the string. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.
If the separator is not found, returns a 3-tuple containing the original string and two empty strings.
-
replace
()¶ Return a copy with all occurrences of substring old replaced by new.
- count
Maximum number of occurrences to replace. -1 (the default value) means replace all occurrences.
If the optional argument count is given, only the first count occurrences are replaced.
-
rfind
(sub[, start[, end]]) → int¶ Return the highest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
-
rindex
(sub[, start[, end]]) → int¶ Return the highest index in S where substring sub is found, such that sub is contained within S[start:end]. Optional arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
-
rjust
()¶ Return a right-justified string of length width.
Padding is done using the specified fill character (default is a space).
-
rpartition
()¶ Partition the string into three parts using the given separator.
This will search for the separator in the string, starting at the end. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.
If the separator is not found, returns a 3-tuple containing two empty strings and the original string.
-
rsplit
()¶ Return a list of the words in the string, using sep as the delimiter string.
- sep
The delimiter according which to split the string. None (the default value) means split according to any whitespace, and discard empty strings from the result.
- maxsplit
Maximum number of splits to do. -1 (the default value) means no limit.
Splits are done starting at the end of the string and working to the front.
-
rstrip
()¶ Return a copy of the string with trailing whitespace removed.
If chars is given and not None, remove characters in chars instead.
-
split
()¶ Return a list of the words in the string, using sep as the delimiter string.
- sep
The delimiter according which to split the string. None (the default value) means split according to any whitespace, and discard empty strings from the result.
- maxsplit
Maximum number of splits to do. -1 (the default value) means no limit.
-
splitlines
()¶ Return a list of the lines in the string, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends is given and true.
-
startswith
(prefix[, start[, end]]) → bool¶ Return True if S starts with the specified prefix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. prefix can also be a tuple of strings to try.
-
strip
()¶ Return a copy of the string with leading and trailing whitespace remove.
If chars is given and not None, remove characters in chars instead.
-
swapcase
()¶ Convert uppercase characters to lowercase and lowercase characters to uppercase.
-
title
()¶ Return a version of the string where each word is titlecased.
More specifically, words start with uppercased characters and all remaining cased characters have lower case.
-
translate
()¶ Replace each character in the string using the given translation table.
- table
Translation table, which must be a mapping of Unicode ordinals to Unicode ordinals, strings, or None.
The table must implement lookup/indexing via __getitem__, for instance a dictionary or list. If this operation raises LookupError, the character is left untouched. Characters mapped to None are deleted.
-
upper
()¶ Return a copy of the string converted to uppercase.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the object into the layer of the context at the current offset.
- Return type
None
-
zfill
()¶ Pad a numeric string with zeros on the left, to fill a field of the given width.
The string is never truncated.
-
class
StructType
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.AggregateType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
UnionType
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.AggregateType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
Void
(context, type_name, object_info, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
Returns an object to represent void/unknown types.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
[source]¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
convert_data_to_value
(data, struct_type, data_format)[source]¶ Converts a series of bytes to a particular type of value.
-
convert_value_to_data
(value, struct_type, data_format)[source]¶ Converts a particular value to a series of bytes.
- Return type
-
class
ObjectTemplate
(object_class, type_name, **arguments)[source]¶ Bases:
volatility.framework.interfaces.objects.Template
Factory class that produces objects that adhere to the Object interface on demand.
This is effectively a method of currying, but adds more structure to avoid abuse. It also allows inspection of information that should already be known:
Type size
Members
etc
Stores the keyword arguments for later object creation.
-
property
children
¶ ~volatilit y.framework.interfaces.objects.ObjectInterface.VolTemplateProxy)
-
clone
()¶ Returns a copy of the original Template as constructed (without update_vol additions having been made)
- Return type
-
has_member
(member_name)[source]¶ Returns whether the object would contain a member called member_name.
- Return type
-
relative_child_offset
(child)[source]¶ Returns the relative offset of a child of the templated object (see
VolTem plateProxy
)- Return type
-
replace_child
(old_child, new_child)[source]¶ Replaces old_child for new_child in the templated object’s child list (see
VolTemplateProxy
)- Return type
None
-
property
size
¶ ~volatilit y.framework.interfaces.objects.ObjectInterface.VolTemplateProxy)
- Type
Returns the children of the templated object (see
- Type
class
- Return type
-
update_vol
(**new_arguments)¶ Updates the keyword arguments with values that will not be carried across to clones.
- Return type
None
-
property
vol
¶ Returns a volatility information object, much like the
ObjectInformation
provides.- Return type
-
class
ReferenceTemplate
(type_name, **arguments)[source]¶ Bases:
volatility.framework.interfaces.objects.Template
Factory class that produces objects based on a delayed reference type.
Attempts to access any standard attributes of a resolved template will result in a
SymbolError
.Stores the keyword arguments for later object creation.
-
property
children
¶ The children of this template (such as member types, sub-types and base-types where they are relevant).
Used to traverse the template tree.
-
clone
()¶ Returns a copy of the original Template as constructed (without update_vol additions having been made)
- Return type
-
has_member
(*args, **kwargs)¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
relative_child_offset
(*args, **kwargs)¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
replace_child
(*args, **kwargs)¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
property
size
¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
update_vol
(**new_arguments)¶ Updates the keyword arguments with values that will not be carried across to clones.
- Return type
None
-
property
vol
¶ Returns a volatility information object, much like the
ObjectInformation
provides.- Return type
-
property
-
array_of_pointers
(array, count, subtype, context)[source]¶ Takes an object, and recasts it as an array of pointers to subtype.
- Return type
volatility.plugins package¶
Defines the plugin architecture.
This is the namespace for all volatility plugins, and determines the path for loading plugins
NOTE: This file is important for core plugins to run (which certain components such as the windows registry layers) are dependent upon, please DO NOT alter or remove this file unless you know the consequences of doing so.
The framework is configured this way to allow plugin developers/users to override any plugin functionality whether existing or new.
All Linux-related plugins.
NOTE: This file is important for core plugins to run (which certain components such as the windows registry layers) are dependent upon, please DO NOT alter or remove this file unless you know the consequences of doing so.
The framework is configured this way to allow plugin developers/users to override any plugin functionality whether existing or new.
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Bash
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
,volatility.plugins.timeliner.TimeLinerInterface
Recovers bash command history from memory.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
generate_timeline
()[source]¶ Method generates Tuples of (description, timestamp_type, timestamp)
These need not be generated in any particular order, sorting will be done later
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Check_afinfo
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Verifies the operation function pointers of network protocols.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Check_syscall
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Check system call table for hooks.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Elfs
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists all memory mapped ELF files for all processes.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Lsmod
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists loaded kernel modules.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
list_modules
(context, layer_name, vmlinux_symbols)[source]¶ Lists all the modules in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatevmlinux_symbols (
str
) – The name of the table containing the kernel symbols
- Yields
The modules present in the layer_name layer’s modules list
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Lsof
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists all memory maps for all processes.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Malfind
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process memory ranges that potentially contain injected code.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Linux’s /proc file system.
-
class
Maps
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists all memory maps for all processes.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
PsList
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the processes present in a particular linux memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
list_tasks
(context, layer_name, vmlinux_symbols, filter_func=<function PsList.<lambda>>)[source]¶ Lists all the tasks in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatevmlinux_symbols (
str
) – The name of the table containing the kernel symbols
- Yields
Process objects
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
PsTree
(*args, **kwargs)[source]¶ Bases:
volatility.plugins.linux.pslist.PsList
Plugin for listing processes in a tree based on their parent process ID.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create_pid_filter
(pid_list=None)¶ Constructs a filter function for process IDs.
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
list_tasks
(context, layer_name, vmlinux_symbols, filter_func=<function PsList.<lambda>>)¶ Lists all the tasks in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatevmlinux_symbols (
str
) – The name of the table containing the kernel symbols
- Yields
Process objects
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
All Mac-related plugins.
NOTE: This file is important for core plugins to run (which certain components such as the windows registry layers) are dependent upon, please DO NOT alter or remove this file unless you know the consequences of doing so.
The framework is configured this way to allow plugin developers/users to override any plugin functionality whether existing or new.
A module containing a collection of plugins that produce data typically found in mac’s /proc file system.
-
class
Bash
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
,volatility.plugins.timeliner.TimeLinerInterface
Recovers bash command history from memory.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
generate_timeline
()[source]¶ Method generates Tuples of (description, timestamp_type, timestamp)
These need not be generated in any particular order, sorting will be done later
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Check_syscall
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Check system call table for hooks.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Check_sysctl
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Check sysctl handlers for hooks.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Check_trap_table
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Check mach trap table for hooks.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Ifconfig
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists loaded kernel modules
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
A module containing a collection of plugins that produce data typically found in Mac’s lsmod command.
-
class
Lsmod
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists loaded kernel modules.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
list_modules
(context, layer_name, darwin_symbols)[source]¶ Lists all the modules in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatedarwin_symbols (
str
) – The name of the table containing the kernel symbols
- Returns
A list of modules from the layer_name layer
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
lsof
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists all open file descriptors for all processes.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Malfind
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process memory ranges that potentially contain injected code.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Netstat
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists all network connections for all processes.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Maps
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process memory ranges that potentially contain injected code.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
In-memory artifacts from OSX systems.
-
class
Psaux
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Recovers program command line arguments.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Return type
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
PsList
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the processes present in a particular mac memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
list_tasks
(context, layer_name, darwin_symbols, filter_func=<function PsList.<lambda>>)[source]¶ Lists all the processes in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatedarwin_symbols (
str
) – The name of the table containing the kernel symbolsfilter_func (
Callable
[[int
],bool
]) – A function which takes a process object and returns True if the process should be ignored/filtered
- Return type
- Returns
The list of process objects from the processes linked list after filtering
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
PsTree
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Plugin for listing processes in a tree based on their parent process ID.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
-
class
Tasks
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.plugins.mac.pslist.PsList
Lists the processes present in a particular mac memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this plugin.
-
classmethod
list_tasks
(context, layer_name, darwin_symbols, filter_func=<function Tasks.<lambda>>)[source]¶ Lists all the tasks in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatedarwin_symbols (
str
) – The name of the table containing the kernel symbolsfilter_func (
Callable
[[int
],bool
]) – A function which takes a task object and returns True if the task should be ignored/filtered
- Return type
- Returns
The list of task objects from the layer_name layer’s tasks list after filtering
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
Check_syscall
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Check system call table for hooks.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
All Windows OS plugins.
NOTE: This file is important for core plugins to run (which certain components such as the windows registry layers) are dependent upon, please DO NOT alter or remove this file unless you know the consequences of doing so.
The framework is configured this way to allow plugin developers/users to override any plugin functionality whether existing or new.
Windows registry plugins.
NOTE: This file is important for core plugins to run (which certain components such as the windows registry layers) are dependent upon, please DO NOT alter or remove this file unless you know the consequences of doing so.
The framework is configured this way to allow plugin developers/users to override any plugin functionality whether existing or new.
-
class
Certificates
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the certificates in the registry’s Certificate Store.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Return type
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
HiveList
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the registry hives present in a particular memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
list_hive_objects
(context, layer_name, symbol_table, filter_string=None)[source]¶ Lists all the hives in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolsfilter_string (
Optional
[str
]) – A string which must be present in the hive name if specified
- Return type
- Returns
The list of registry hives from the layer_name layer as filtered against using the filter_string
-
classmethod
list_hives
(context, base_config_path, layer_name, symbol_table, filter_string=None, hive_offsets=None)[source]¶ Walks through a registry, hive by hive returning the constructed registry layer name.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolsfilter_string (
Optional
[str
]) – An optional string which must be present in the hive name if specifiedoffset – An optional offset to specify a specific hive to iterate over (takes precedence over filter_string)
- Yields
A registry hive layer name
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Return type
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
HiveScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Scans for registry hives present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_hives
(context, layer_name, symbol_table)[source]¶ Scans for hives using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of Hive objects as found from the layer_name layer based on Hive pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
PrintKey
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the registry keys under a hive or specific key value.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
key_iterator
(hive, node_path=None, recurse=False)[source]¶ Walks through a set of nodes from a given node (last one in node_path). Avoids loops by not traversing into nodes already present in the node_path.
- Parameters
hive (
RegistryHive
) – The registry hive to walknode_path (
Optional
[Sequence
[StructType
]]) – The list of nodes that make up therecurse (
bool
) – Traverse down the node tree or stay only on the same level
- Yields
A tuple of results (depth, is_key, last write time, path, volatile, and the node).
- Return type
Iterable
[Tuple
[int
,bool
,datetime
,str
,bool
,ObjectInterface
]]
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
UserAssist
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Print userassist registry keys and information.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
parse_userassist_data
(reg_val)[source]¶ Reads the raw data of a _CM_KEY_VALUE and returns a dict of userassist fields.
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
-
class
Statistics
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
CmdLine
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process command line arguments.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
DllDump
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Dumps process memory ranges as DLLs.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
DllList
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the loaded modules in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
DriverIrp
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
List IRPs for drivers in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
DriverScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Scans for drivers present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_drivers
(context, layer_name, symbol_table)[source]¶ Scans for drivers using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of Driver objects as found from the layer_name layer based on Driver pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
FileScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Scans for file objects present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_files
(context, layer_name, symbol_table)[source]¶ Scans for file objects using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of File objects as found from the layer_name layer based on File pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Handles
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process open handles.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
Find the ObHeaderCookie value (if it exists)
- Return type
-
find_sar_value
()[source]¶ Locate ObpCaptureHandleInformationEx if it exists in the sample.
Once found, parse it for the SAR value that we need to decode pointers in the _HANDLE_TABLE_ENTRY which allows us to find the associated _OBJECT_HEADER.
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
get_type_map
(context, layer_name, symbol_table)[source]¶ List the executive object types (_OBJECT_TYPE) using the ObTypeIndexTable or ObpObjectTypes symbol (differs per OS). This method will be necessary for determining what type of object we have given an object header.
Note
The object type index map was hard coded into profiles in previous versions of volatility. It is now generated dynamically.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A mapping of type indicies to type names
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
-
class
Info
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Show OS & kernel details of the memory sample being analyzed.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_depends
(context, layer_name, index=0)[source]¶ List the dependencies of a given layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required layers fromlayer_name (
str
) – the name of the starting layerindex (
int
) – the index/order of the layer
- Return type
- Returns
An iterable containing the levels and layer objects for all dependent layers
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Malfind
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process memory ranges that potentially contain injected code.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
is_vad_empty
(proc_layer, vad)[source]¶ Check if a VAD region is either entirely unavailable due to paging, entirely consisting of zeros, or a combination of the two. This helps ignore false positives whose VAD flags match task._injection_filter requirements but there’s no data and thus not worth reporting it.
- Parameters
proc_layer – the process layer
vad – the MMVAD structure to test
- Returns
A boolean indicating whether a vad is empty or not
-
classmethod
list_injections
(context, symbol_table, proc)[source]¶ Generate memory regions for a process that may contain injected code.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromsymbol_table (
str
) – The name of the table containing the kernel symbolsproc (
ObjectInterface
) – an _EPROCESS instance
- Return type
- Returns
An iterable of VAD instances and the first 64 bytes of data containing in that region
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
ModDump
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Dumps kernel modules.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
find_session_layer
(context, session_layers, base_address)[source]¶ Given a base address and a list of layer names, find a layer that can access the specified address.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name – The name of the layer on which to operate
symbol_table – The name of the table containing the kernel symbols
session_layers (
Iterable
[str
]) – A list of session layer namesbase_address (
int
) – The base address to identify the layers that can access it
- Returns
Layer name or None if no layers that contain the base address can be found
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
get_session_layers
(context, layer_name, symbol_table, pids=None)[source]¶ Build a cache of possible virtual layers, in priority starting with the primary/kernel layer. Then keep one layer per session by cycling through the process list.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolspids (
Optional
[List
[int
]]) – A list of process identifiers to include exclusively or None for no filter
- Return type
- Returns
A list of session layer names
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
ModScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Scans for modules present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_modules
(context, layer_name, symbol_table)[source]¶ Scans for modules using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of Driver objects as found from the layer_name layer based on Driver pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
Modules
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the loaded kernel modules.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
list_modules
(context, layer_name, symbol_table)[source]¶ Lists all the modules in the primary layer.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of Modules as retrieved from PsLoadedModuleList
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
MutantScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Scans for mutexes present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_mutants
(context, layer_name, symbol_table)[source]¶ Scans for mutants using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of Mutant objects found by scanning memory for the Mutant pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
PoolConstraint
(tag, type_name, object_type=None, page_type=None, size=None, index=None, alignment=1)[source]¶ Bases:
object
Class to maintain tag/size/index/type information about Pool header tags.
-
class
PoolHeaderScanner
(module, constraint_lookup, alignment)[source]¶ Bases:
volatility.framework.interfaces.layers.ScannerInterface
-
property
context
¶ - Return type
-
thread_safe
= False¶
-
property
-
class
PoolScanner
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
A generic pool scanner plugin.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
static
builtin_constraints
(symbol_table, tags_filter=None)[source]¶ Get built-in PoolConstraints given a list of pool tags.
The tags_filter is a list of pool tags, and the associated PoolConstraints are returned. If tags_filter is empty or not supplied, then all builtin constraints are returned.
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
generate_pool_scan
(context, layer_name, symbol_table, constraints)[source]¶ - Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolsconstraints (
List
[PoolConstraint
]) – List of pool constraints used to limit the scan results
- Return type
Generator
[Tuple
[PoolConstraint
,ObjectInterface
,ObjectInterface
],None
,None
]- Returns
Iterable of tuples, containing the constraint that matched, the object from memory, the object header used to determine the object
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
is_windows_10
(symbol_table: str) → bool¶ - Parameters
context (
ContextInterface
) – The context that contains the symbol table named symbol_tablesymbol_table (
str
) – Name of the symbol table within the context to distinguish the version of
- Return type
- Returns
True if the symbol table is of the required version
-
is_windows_7
(symbol_table: str) → bool¶ - Parameters
context (
ContextInterface
) – The context that contains the symbol table named symbol_tablesymbol_table (
str
) – Name of the symbol table within the context to distinguish the version of
- Return type
- Returns
True if the symbol table is of the required version
-
is_windows_8_or_later
(symbol_table: str) → bool¶ - Parameters
context (
ContextInterface
) – The context that contains the symbol table named symbol_tablesymbol_table (
str
) – Name of the symbol table within the context to distinguish the version of
- Return type
- Returns
True if the symbol table is of the required version
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
classmethod
pool_scan
(context, layer_name, symbol_table, pool_constraints, alignment=8, progress_callback=None)[source]¶ Returns the _POOL_HEADER object (based on the symbol_table template) after scanning through layer_name returning all headers that match any of the constraints provided. Only one constraint can be provided per tag.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolspool_constraints (
List
[PoolConstraint
]) – List of pool constraints used to limit the scan resultsalignment (
int
) – An optional value that all pool headers will be aligned toprogress_callback (
Optional
[Callable
[[float
,str
],None
]]) – An optional function to provide progress feedback whilst scanning
- Return type
Generator
[Tuple
[PoolConstraint
,ObjectInterface
],None
,None
]- Returns
An Iterable of pool constraints and the pool headers associated with them
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Return type
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
PoolType
[source]¶ Bases:
enum.IntEnum
Class to maintain the different possible PoolTypes The values must be integer powers of 2.
-
FREE
= 4¶
-
NONPAGED
= 2¶
-
PAGED
= 1¶
-
-
os_distinguisher
(version_check, fallback_checks)[source]¶ Distinguishes a symbol table as being above a particular version or point.
This will primarily check the version metadata first and foremost. If that metadata isn’t available then each item in the fallback_checks is tested. If invert is specified then the result will be true if the version is less than that specified, or in the case of fallback, if any of the fallback checks is successful.
- A fallback check is made up of:
a symbol or type name
a member name (implying that the value before was a type name)
whether that symbol, type or member must be present or absent for the symbol table to be more above the required point
Note
Specifying that a member must not be present includes the whole type not being present too (ie, either will pass the test)
- Parameters
version_check (
Callable
[[Tuple
[int
, …]],bool
]) – Function that takes a 4-tuple version and returns whether whether the provided version is above a particular pointfallback_checks (
List
[Tuple
[str
,Optional
[str
],bool
]]) – A list of symbol/types/members of types, and whether they must be present to be above the required point
- Return type
Callable
[[ContextInterface
,str
],bool
]- Returns
A function that takes a context and a symbol table name and determines whether that symbol table passes the distinguishing checks
-
class
ProcDump
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Dumps process executable images.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
PsList
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
,volatility.plugins.timeliner.TimeLinerInterface
Lists the processes present in a particular windows memory image.
- Parameters
-
PHYSICAL_DEFAULT
= False¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create_name_filter
(name_list=None)[source]¶ A factory for producing filter functions that filter based on a list of process names.
-
classmethod
create_pid_filter
(pid_list=None)[source]¶ A factory for producing filter functions that filter based on a list of process IDs.
-
generate_timeline
()[source]¶ Method generates Tuples of (description, timestamp_type, timestamp)
These need not be generated in any particular order, sorting will be done later
-
classmethod
list_processes
(context, layer_name, symbol_table, filter_func=<function PsList.<lambda>>)[source]¶ Lists all the processes in the primary layer that are in the pid config option.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolsfilter_func (
Callable
[[ObjectInterface
],bool
]) – A function which takes an EPROCESS object and returns True if the process should be ignored/filtered
- Return type
- Returns
The list of EPROCESS objects from the layer_name layer’s PsActiveProcessHead list after filtering
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
PsScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
,volatility.plugins.timeliner.TimeLinerInterface
Scans for processes present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
generate_timeline
()[source]¶ Method generates Tuples of (description, timestamp_type, timestamp)
These need not be generated in any particular order, sorting will be done later
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_processes
(context, layer_name, symbol_table)[source]¶ Scans for processes using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of processes found by scanning the layer_name layer for process pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
PsTree
(*args, **kwargs)[source]¶ Bases:
volatility.plugins.windows.pslist.PsList
Plugin for listing processes in a tree based on their parent process ID.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
PHYSICAL_DEFAULT
= False¶
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create_name_filter
(name_list=None)¶ A factory for producing filter functions that filter based on a list of process names.
-
classmethod
create_pid_filter
(pid_list=None)¶ A factory for producing filter functions that filter based on a list of process IDs.
-
generate_timeline
()¶ Method generates Tuples of (description, timestamp_type, timestamp)
These need not be generated in any particular order, sorting will be done later
-
classmethod
get_requirements
()¶ Returns a list of Requirement objects for this plugin.
-
classmethod
list_processes
(context, layer_name, symbol_table, filter_func=<function PsList.<lambda>>)¶ Lists all the processes in the primary layer that are in the pid config option.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbolsfilter_func (
Callable
[[ObjectInterface
],bool
]) – A function which takes an EPROCESS object and returns True if the process should be ignored/filtered
- Return type
- Returns
The list of EPROCESS objects from the layer_name layer’s PsActiveProcessHead list after filtering
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
-
class
SSDT
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists the system call table.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
classmethod
build_module_collection
(context, layer_name, symbol_table)[source]¶ Builds a collection of modules.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A Module collection of available modules based on Modules.list_modules
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Return type
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
class
Strings
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Reads output from the strings command and indicates which process(es) each string belongs to.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
generate_mapping
(layer_name)[source]¶ Creates a reverse mapping between virtual addresses and physical addresses.
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
SymlinkScan
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
,volatility.plugins.timeliner.TimeLinerInterface
Scans for links present in a particular windows memory image.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
generate_timeline
()[source]¶ Method generates Tuples of (description, timestamp_type, timestamp)
These need not be generated in any particular order, sorting will be done later
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
classmethod
scan_symlinks
(context, layer_name, symbol_table)[source]¶ Scans for links using the poolscanner module and constraints.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
- Returns
A list of symlink objects found by scanning memory for the Symlink pool signatures
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
VadDump
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Dumps process memory ranges.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
VadInfo
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists process memory ranges.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
list_vads
(proc, filter_func=<function VadInfo.<lambda>>)[source]¶ Lists the Virtual Address Descriptors of a specific process.
- Parameters
proc (
ObjectInterface
) – _EPROCESS object from which to list the VADsfilter_func (
Callable
[[ObjectInterface
],bool
]) – Function to take a virtual address descriptor value and return True if it should be filtered out
- Return type
Generator
[ObjectInterface
,None
,None
]- Returns
A list of virtual address descriptors based on the process and filtered based on the filter function
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
classmethod
protect_values
(context, layer_name, symbol_table)[source]¶ Look up the array of memory protection constants from the memory sample. These don’t change often, but if they do in the future, then finding them dynamically versus hard-coding here will ensure we parse them properly.
- Parameters
context (
ContextInterface
) – The context to retrieve required elements (layers, symbol tables) fromlayer_name (
str
) – The name of the layer on which to operatesymbol_table (
str
) – The name of the table containing the kernel symbols
- Return type
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (1, 0, 0)¶
-
-
class
VerInfo
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists version information from PE files.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
get_version_information
(context, pe_table_name, layer_name, base_address)[source]¶ Get File and Product version information from PE files.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
VirtMap
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Lists virtual mapped sections.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
-
class
ConfigWriter
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Runs the automagics and both prints and outputs configuration in the output directory.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
LayerWriter
(context, config_path, progress_callback=None)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Runs the automagics and lists out the generated layers if no layer name is specified, otherwise writes out the named layer.
- Parameters
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
default_block_size
= 5242880¶
-
default_output_name
= 'output.raw'¶
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
run
()[source]¶ Executes the functionality of the code.
Note
This method expects self.validate to have been called to ensure all necessary options have been provided
- Returns
A TreeGrid object that can then be passed to a Renderer.
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
TimeLinerInterface
[source]¶ Bases:
object
Interface defining methods that timeliner will use to generate a body file.
-
class
TimeLinerType
[source]¶ Bases:
enum.IntEnum
An enumeration.
-
ACCESSED
= 3¶
-
CHANGED
= 4¶
-
CREATED
= 1¶
-
MODIFIED
= 2¶
-
-
class
Timeliner
(*args, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.plugins.PluginInterface
Runs all relevant plugins that provide time related information and orders the results by time.
Args: context: The context that the plugin will operate within config_path: The path to configuration data within the context configuration data progress_callback: A callable that can provide feedback at progress points
-
build_configuration
()[source]¶ Builds the configuration to save for the plugin such that it can be reconstructed.
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
get_requirements
()[source]¶ Returns a list of Requirement objects for this plugin.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
produce_file
(filedata)¶ Adds a file to the plugin’s file store and returns the chosen filename for the file.
- Return type
None
-
set_file_consumer
(consumer)¶ Sets the file consumer to be used by this plugin.
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
volatility.framework.renderers package¶
Renderers.
Renderers display the unified output format in some manner (be it text or file or graphical output
-
class
ColumnSortKey
(treegrid, column_name, ascending=True)[source]¶ Bases:
volatility.framework.interfaces.renderers.ColumnSortKey
-
ascending
= True¶
-
-
class
NotApplicableValue
[source]¶ Bases:
volatility.framework.interfaces.renderers.BaseAbsentValue
Class that represents values which are empty because they don’t make sense for this node.
-
class
NotAvailableValue
[source]¶ Bases:
volatility.framework.interfaces.renderers.BaseAbsentValue
Class that represents values which cannot be provided now (but might in a future run)
This might occur when information packed with volatility (such as symbol information) is not available, but a future version or a different run may later have that information available (ie, it could be applicable, but we can’t get it and it’s not because it’s unreadable or unparsable). Unreadable and Unparsable should be used in preference, and only if neither fits should this be used.
-
class
TreeGrid
(columns, generator)[source]¶ Bases:
volatility.framework.interfaces.renderers.TreeGrid
Class providing the interface for a TreeGrid (which contains TreeNodes)
The structure of a TreeGrid is designed to maintain the structure of the tree in a single object. For this reason each TreeNode does not hold its children, they are managed by the top level object. This leaves the Nodes as simple data carries and prevents them being used to manipulate the tree as a whole. This is a data structure, and is not expected to be modified much once created.
Carrying the children under the parent makes recursion easier, but then every node is its own little tree and must have all the supporting tree functions. It also allows for a node to be present in several different trees, and to create cycles.
Constructs a TreeGrid object using a specific set of columns.
The TreeGrid itself is a root element, that can have children but no values. The TreeGrid does not contain any information about formatting, these are up to the renderers and plugins.
- Parameters
columns (
List
[Tuple
[str
,Union
[Type
[int
],Type
[str
],Type
[float
],Type
[bytes
],Type
[datetime
],Type
[BaseAbsentValue
],Type
[Disassembly
]]]]) – A list of column tuples made up of (name, type).generator (
Optional
[Iterable
[Tuple
[int
,Tuple
]]]) – An iterable containing row for a tree grid, each row contains a indent level followed by the values for each column in order.
-
base_types
= (<class 'int'>, <class 'str'>, <class 'float'>, <class 'bytes'>, <class 'datetime.datetime'>, <class 'volatility.framework.interfaces.renderers.Disassembly'>)¶
-
property
columns
¶ Returns the available columns and their ordering and types.
-
is_ancestor
(node, descendant)[source]¶ Returns true if descendent is a child, grandchild, etc of node.
-
path_sep
= '|'¶
-
populate
(function=None, initial_accumulator=None)[source]¶ Populates the tree by consuming the TreeGrid’s construction generator Func is called on every node, so can be used to create output on demand.
This is equivalent to a one-time visit.
- Return type
None
-
property
populated
¶ Indicates that population has completed and the tree may now be manipulated separately.
-
visit
(node, function, initial_accumulator, sort_key=None)[source]¶ Visits all the nodes in a tree, calling function on each one.
function should have the signature function(node, accumulator) and return new_accumulator If accumulators are not needed, the function must still accept a second parameter.
The order of that the nodes are visited is always depth first, however, the order children are traversed can be set based on a sort_key function which should accept a node’s values and return something that can be sorted to receive the desired order (similar to the sort/sorted key).
We use the private _find_children function so that we don’t have to re-traverse the tree for every node we descend further down
-
class
TreeNode
(path, treegrid, parent, values)[source]¶ Bases:
volatility.framework.interfaces.renderers.TreeNode
Class representing a particular node in a tree grid.
Initializes the TreeNode.
-
count
(value) → integer -- return number of occurrences of value¶
-
index
(value[, start[, stop]]) → integer -- return first index of value.¶ Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
-
property
path
¶ Returns a path identifying string.
This should be seen as opaque by external classes, Parsing of path locations based on this string are not guaranteed to remain stable.
- Return type
-
-
class
UnparsableValue
[source]¶ Bases:
volatility.framework.interfaces.renderers.BaseAbsentValue
Class that represents values which are empty because the data cannot be interpreted correctly.
-
class
UnreadableValue
[source]¶ Bases:
volatility.framework.interfaces.renderers.BaseAbsentValue
Class that represents values which are empty because the data cannot be read.
-
convert_network_four_tuple
(family, four_tuple)[source]¶ Converts the connection four_tuple: (source ip, source port, dest ip, dest port)
into their string equivalents. IP addresses are expected as a tuple of unsigned shorts Ports are converted to proper endianess as well
The official list of format hints that text renderers and plugins can rely upon existing within the framework.
These hints allow a plugin to indicate how they would like data from a particular column to be represented.
Text renderers should attempt to honour all hints provided in this module where possible
-
class
Bin
[source]¶ Bases:
int
A class to indicate that the integer value should be represented as a binary value.
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
imag
¶ the imaginary part of a complex number
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
-
class
Hex
[source]¶ Bases:
int
A class to indicate that the integer value should be represented as a hexidecimal value.
-
bit_length
()¶ Number of bits necessary to represent self in binary.
>>> bin(37) '0b100101' >>> (37).bit_length() 6
-
conjugate
()¶ Returns self, the complex conjugate of any int.
-
denominator
¶ the denominator of a rational number in lowest terms
-
from_bytes
()¶ Return the integer represented by the given array of bytes.
- bytes
Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Indicates whether two’s complement is used to represent the integer.
-
imag
¶ the imaginary part of a complex number
-
numerator
¶ the numerator of a rational number in lowest terms
-
real
¶ the real part of a complex number
-
to_bytes
()¶ Return an array of bytes representing an integer.
- length
Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes.
- byteorder
The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value.
- signed
Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.
-
-
class
HexBytes
[source]¶ Bases:
bytes
A class to indicate that the bytes should be display in an extended format showing hexadecimal and ascii printable display.
-
capitalize
() → copy of B¶ Return a copy of B with only its first character capitalized (ASCII) and the rest lower-cased.
-
center
(width[, fillchar]) → copy of B¶ Return B centered in a string of length width. Padding is done using the specified fill character (default is a space).
-
count
(sub[, start[, end]]) → int¶ Return the number of non-overlapping occurrences of subsection sub in bytes B[start:end]. Optional arguments start and end are interpreted as in slice notation.
-
decode
()¶ Decode the bytes using the codec registered for encoding.
- encoding
The encoding with which to decode the bytes.
- errors
The error handling scheme to use for the handling of decoding errors. The default is ‘strict’ meaning that decoding errors raise a UnicodeDecodeError. Other possible values are ‘ignore’ and ‘replace’ as well as any other name registered with codecs.register_error that can handle UnicodeDecodeErrors.
-
endswith
(suffix[, start[, end]]) → bool¶ Return True if B ends with the specified suffix, False otherwise. With optional start, test B beginning at that position. With optional end, stop comparing B at that position. suffix can also be a tuple of bytes to try.
-
expandtabs
(tabsize=8) → copy of B¶ Return a copy of B where all tab characters are expanded using spaces. If tabsize is not given, a tab size of 8 characters is assumed.
-
find
(sub[, start[, end]]) → int¶ Return the lowest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
-
fromhex
()¶ Create a bytes object from a string of hexadecimal numbers.
Spaces between two numbers are accepted. Example: bytes.fromhex(‘B9 01EF’) -> b’\xb9\x01\xef’.
-
hex
() → string¶ Create a string of hexadecimal numbers from a bytes object. Example: b’xb9x01xef’.hex() -> ‘b901ef’.
-
index
(sub[, start[, end]]) → int¶ Return the lowest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Raises ValueError when the subsection is not found.
-
isalnum
() → bool¶ Return True if all characters in B are alphanumeric and there is at least one character in B, False otherwise.
-
isalpha
() → bool¶ Return True if all characters in B are alphabetic and there is at least one character in B, False otherwise.
-
isascii
() → bool¶ Return True if B is empty or all characters in B are ASCII, False otherwise.
-
isdigit
() → bool¶ Return True if all characters in B are digits and there is at least one character in B, False otherwise.
-
islower
() → bool¶ Return True if all cased characters in B are lowercase and there is at least one cased character in B, False otherwise.
-
isspace
() → bool¶ Return True if all characters in B are whitespace and there is at least one character in B, False otherwise.
-
istitle
() → bool¶ Return True if B is a titlecased string and there is at least one character in B, i.e. uppercase characters may only follow uncased characters and lowercase characters only cased ones. Return False otherwise.
-
isupper
() → bool¶ Return True if all cased characters in B are uppercase and there is at least one cased character in B, False otherwise.
-
join
()¶ Concatenate any number of bytes objects.
The bytes whose method is called is inserted in between each pair.
The result is returned as a new bytes object.
Example: b’.’.join([b’ab’, b’pq’, b’rs’]) -> b’ab.pq.rs’.
-
ljust
(width[, fillchar]) → copy of B¶ Return B left justified in a string of length width. Padding is done using the specified fill character (default is a space).
-
lower
() → copy of B¶ Return a copy of B with all ASCII characters converted to lowercase.
-
lstrip
()¶ Strip leading bytes contained in the argument.
If the argument is omitted or None, strip leading ASCII whitespace.
-
static
maketrans
()¶ Return a translation table useable for the bytes or bytearray translate method.
The returned table will be one where each byte in frm is mapped to the byte at the same position in to.
The bytes objects frm and to must be of the same length.
-
partition
()¶ Partition the bytes into three parts using the given separator.
This will search for the separator sep in the bytes. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.
If the separator is not found, returns a 3-tuple containing the original bytes object and two empty bytes objects.
-
replace
()¶ Return a copy with all occurrences of substring old replaced by new.
- count
Maximum number of occurrences to replace. -1 (the default value) means replace all occurrences.
If the optional argument count is given, only the first count occurrences are replaced.
-
rfind
(sub[, start[, end]]) → int¶ Return the highest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
-
rindex
(sub[, start[, end]]) → int¶ Return the highest index in B where subsection sub is found, such that sub is contained within B[start,end]. Optional arguments start and end are interpreted as in slice notation.
Raise ValueError when the subsection is not found.
-
rjust
(width[, fillchar]) → copy of B¶ Return B right justified in a string of length width. Padding is done using the specified fill character (default is a space)
-
rpartition
()¶ Partition the bytes into three parts using the given separator.
This will search for the separator sep in the bytes, starting at the end. If the separator is found, returns a 3-tuple containing the part before the separator, the separator itself, and the part after it.
If the separator is not found, returns a 3-tuple containing two empty bytes objects and the original bytes object.
-
rsplit
()¶ Return a list of the sections in the bytes, using sep as the delimiter.
- sep
The delimiter according which to split the bytes. None (the default value) means split on ASCII whitespace characters (space, tab, return, newline, formfeed, vertical tab).
- maxsplit
Maximum number of splits to do. -1 (the default value) means no limit.
Splitting is done starting at the end of the bytes and working to the front.
-
rstrip
()¶ Strip trailing bytes contained in the argument.
If the argument is omitted or None, strip trailing ASCII whitespace.
-
split
()¶ Return a list of the sections in the bytes, using sep as the delimiter.
- sep
The delimiter according which to split the bytes. None (the default value) means split on ASCII whitespace characters (space, tab, return, newline, formfeed, vertical tab).
- maxsplit
Maximum number of splits to do. -1 (the default value) means no limit.
-
splitlines
()¶ Return a list of the lines in the bytes, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends is given and true.
-
startswith
(prefix[, start[, end]]) → bool¶ Return True if B starts with the specified prefix, False otherwise. With optional start, test B beginning at that position. With optional end, stop comparing B at that position. prefix can also be a tuple of bytes to try.
-
strip
()¶ Strip leading and trailing bytes contained in the argument.
If the argument is omitted or None, strip leading and trailing ASCII whitespace.
-
swapcase
() → copy of B¶ Return a copy of B with uppercase ASCII characters converted to lowercase ASCII and vice versa.
-
title
() → copy of B¶ Return a titlecased version of B, i.e. ASCII words start with uppercase characters, all remaining cased characters have lowercase.
-
translate
()¶ Return a copy with each character mapped by the given translation table.
- table
Translation table, which must be a bytes object of length 256.
All characters occurring in the optional argument delete are removed. The remaining characters are mapped through the given translation table.
-
upper
() → copy of B¶ Return a copy of B with all ASCII characters converted to uppercase.
-
zfill
(width) → copy of B¶ Pad a numeric string B with zeros on the left, to fill a field of the specified width. B is never truncated.
-
volatility.framework.symbols package¶
-
class
SymbolSpace
[source]¶ Bases:
volatility.framework.interfaces.symbols.SymbolSpaceInterface
Handles an ordered collection of SymbolTables.
This collection is ordered so that resolution of symbols can proceed down through the ranks if a namespace isn’t specified.
-
class
UnresolvedTemplate
(type_name, **kwargs)[source]¶ Bases:
volatility.framework.objects.templates.ReferenceTemplate
Class to highlight when missing symbols are present.
This class is identical to a reference template, but differentiable by its classname. It will output a debug log to indicate when it has been instantiated and with what name.
This class is designed to be output ONLY as part of the SymbolSpace resolution system. Individual SymbolTables that cannot resolve a symbol should still return a SymbolError to indicate this failure in resolution.
Stores the keyword arguments for later object creation.
-
property
children
¶ The children of this template (such as member types, sub-types and base-types where they are relevant).
Used to traverse the template tree.
-
clone
()¶ Returns a copy of the original Template as constructed (without update_vol additions having been made)
- Return type
-
has_member
(*args, **kwargs)¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
relative_child_offset
(*args, **kwargs)¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
replace_child
(*args, **kwargs)¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
property
size
¶ Referenced symbols must be appropriately resolved before they can provide information such as size This is because the size request has no context within which to determine the actual symbol structure.
- Return type
-
update_vol
(**new_arguments)¶ Updates the keyword arguments with values that will not be carried across to clones.
- Return type
None
-
property
vol
¶ Returns a volatility information object, much like the
ObjectInformation
provides.- Return type
-
property
-
free_table_name
(prefix='layer')[source]¶ Returns an unused table name to ensure no collision occurs when inserting a symbol table.
- Return type
-
get
(k[, d]) → D[k] if k in D, else d. d defaults to None.¶
-
get_enumeration
(enum_name)[source]¶ Look-up a set of enumeration choices from a specific symbol table.
- Return type
-
get_symbol
(symbol_name)[source]¶ Look-up a symbol name across all the contained symbol spaces.
- Return type
-
get_symbols_by_location
(offset, size=0, table_name=None)[source]¶ Returns all symbols that exist at a specific relative address.
-
get_type
(type_name)[source]¶ Takes a symbol name and resolves it.
This method ensures that all referenced templates (including self-referential templates) are satisfied as ObjectTemplates
- Return type
-
has_enumeration
(name)[source]¶ Determines whether an enumeration choice exists in the contained symbol tables.
- Return type
-
has_symbol
(name)[source]¶ Determines whether a symbol exists in the contained symbol tables.
- Return type
-
has_type
(name)[source]¶ Determines whether a type exists in the contained symbol tables.
- Return type
-
items
() → a set-like object providing a view on D's items¶
-
keys
() → a set-like object providing a view on D's keys¶
-
values
() → an object providing a view on D's values¶
-
class
-
mask_symbol_table
(symbol_table, address_mask=0, table_aslr_shift=0)[source]¶ Alters a symbol table, such that all symbols returned have their address masked by the address mask.
-
symbol_table_is_64bit
(context, symbol_table_name)[source]¶ Returns a boolean as to whether a particular symbol table within a context is 64-bit or not.
- Return type
-
class
GenericIntelProcess
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
LinuxKernelIntermedSymbols
(context, config_path, name, isf_url)[source]¶ Bases:
volatility.framework.symbols.intermed.IntermediateSymbolTable
Instantiates a SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url (
str
) – The URL pointing to the ISF file locationnative_types – The NativeSymbolTable that contains the native types for this symbol table
table_mapping – A dictionary linking names referenced in the file with symbol tables in the context
validate – Determines whether the ISF file will be validated against the appropriate schema
class_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create
(context, config_path, sub_path, filename, native_types=None, table_mapping=None, class_types=None)¶ Takes a context and loads an intermediate symbol table based on a filename.
- Parameters
context (
ContextInterface
) – The context that the current plugin is being run withinconfig_path (
str
) – The configuration path for reading/storing configuration information this symbol table may usesub_path (
str
) – The path under a suitable symbol path (defaults to volatility/symbols and volatility/framework/symbols) to checkfilename (
str
) – Basename of the file to find under the sub_pathnative_types (
Optional
[NativeTableInterface
]) – Set of native types, defaults to native types read from the intermediate symbol format filetable_mapping (
Optional
[Dict
[str
,str
]]) – a dictionary of table names mentioned within the ISF file, and the tables within the context which they map to
- Return type
- Returns
the name of the added symbol table
-
del_type_class
(*args, **kwargs)¶
-
property
enumerations
¶
-
classmethod
file_symbol_url
(sub_path, filename=None)¶ Returns an iterator of appropriate file-scheme symbol URLs that can be opened by a ResourceAccessor class.
Filter reduces the number of results returned to only those URLs containing that string
-
get_enumeration
(*args, **kwargs)¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(*args, **kwargs)¶
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(*args, **kwargs)¶
-
get_type_class
(*args, **kwargs)¶
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
provides
= {'type': 'interface'}¶
-
set_type_class
(*args, **kwargs)¶
-
property
symbols
¶
-
property
types
¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
dentry
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
files_struct
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
fs_struct
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
list_head
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,collections.abc.Iterable
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
to_list
(symbol_type, member, forward=True, sentinel=True, layer=None)[source]¶ Returns an iterator of the entries in the list.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
mm_struct
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
module
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.symbols.generic.GenericIntelProcess
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
mount
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
qstr
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
struct_file
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
super_block
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
MINORBITS
= 20¶
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
task_struct
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.symbols.generic.GenericIntelProcess
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
add_process_layer
(config_prefix=None, preferred_name=None)[source]¶ Constructs a new layer based on the process’s DTB.
Returns the name of the Layer or None.
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_process_memory_sections
(heap_only=False)[source]¶ Returns a list of sections based on the memory manager’s view of this task’s virtual memory.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
vfsmount
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
vm_area_struct
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
extended_flags
= {1: 'VM_READ', 2: 'VM_WRITE', 4: 'VM_EXEC', 8: 'VM_SHARED', 16: 'VM_MAYREAD', 32: 'VM_MAYWRITE', 64: 'VM_MAYEXEC', 128: 'VM_MAYSHARE', 256: 'VM_GROWSDOWN', 512: 'VM_NOHUGEPAGE', 1024: 'VM_PFNMAP', 2048: 'VM_DENYWRITE', 4096: 'VM_EXECUTABLE', 8192: 'VM_LOCKED', 16384: 'VM_IO', 32768: 'VM_SEQ_READ', 65536: 'VM_RAND_READ', 131072: 'VM_DONTCOPY', 262144: 'VM_DONTEXPAND', 524288: 'VM_RESERVED', 1048576: 'VM_ACCOUNT', 2097152: 'VM_NORESERVE', 4194304: 'VM_HUGETLB', 8388608: 'VM_NONLINEAR', 16777216: 'VM_MAPPED_COP__VM_HUGEPAGE', 33554432: 'VM_INSERTPAGE', 67108864: 'VM_ALWAYSDUMP', 134217728: 'VM_CAN_NONLINEAR', 268435456: 'VM_MIXEDMAP', 536870912: 'VM_SAO', 1073741824: 'VM_PFN_AT_MMAP', 2147483648: 'VM_MERGEABLE'}¶
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
perm_flags
= {1: 'r', 2: 'w', 4: 'x'}¶
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
hist_entry
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
BashIntermedSymbols
(*args, **kwargs)[source]¶ Bases:
volatility.framework.symbols.intermed.IntermediateSymbolTable
Instantiates a SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context – The volatility context for the symbol table
config_path – The configuration path for the symbol table
name – The name for the symbol table (this is used in symbols e.g. table!symbol )
isf_url – The URL pointing to the ISF file location
native_types – The NativeSymbolTable that contains the native types for this symbol table
table_mapping – A dictionary linking names referenced in the file with symbol tables in the context
validate – Determines whether the ISF file will be validated against the appropriate schema
class_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create
(context, config_path, sub_path, filename, native_types=None, table_mapping=None, class_types=None)¶ Takes a context and loads an intermediate symbol table based on a filename.
- Parameters
context (
ContextInterface
) – The context that the current plugin is being run withinconfig_path (
str
) – The configuration path for reading/storing configuration information this symbol table may usesub_path (
str
) – The path under a suitable symbol path (defaults to volatility/symbols and volatility/framework/symbols) to checkfilename (
str
) – Basename of the file to find under the sub_pathnative_types (
Optional
[NativeTableInterface
]) – Set of native types, defaults to native types read from the intermediate symbol format filetable_mapping (
Optional
[Dict
[str
,str
]]) – a dictionary of table names mentioned within the ISF file, and the tables within the context which they map to
- Return type
- Returns
the name of the added symbol table
-
del_type_class
(*args, **kwargs)¶
-
property
enumerations
¶
-
classmethod
file_symbol_url
(sub_path, filename=None)¶ Returns an iterator of appropriate file-scheme symbol URLs that can be opened by a ResourceAccessor class.
Filter reduces the number of results returned to only those URLs containing that string
-
get_enumeration
(*args, **kwargs)¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(*args, **kwargs)¶
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(*args, **kwargs)¶
-
get_type_class
(*args, **kwargs)¶
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(*args, **kwargs)¶
-
property
symbols
¶
-
property
types
¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
MacKernelIntermedSymbols
(context, config_path, name, isf_url)[source]¶ Bases:
volatility.framework.symbols.intermed.IntermediateSymbolTable
Instantiates a SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url (
str
) – The URL pointing to the ISF file locationnative_types – The NativeSymbolTable that contains the native types for this symbol table
table_mapping – A dictionary linking names referenced in the file with symbol tables in the context
validate – Determines whether the ISF file will be validated against the appropriate schema
class_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create
(context, config_path, sub_path, filename, native_types=None, table_mapping=None, class_types=None)¶ Takes a context and loads an intermediate symbol table based on a filename.
- Parameters
context (
ContextInterface
) – The context that the current plugin is being run withinconfig_path (
str
) – The configuration path for reading/storing configuration information this symbol table may usesub_path (
str
) – The path under a suitable symbol path (defaults to volatility/symbols and volatility/framework/symbols) to checkfilename (
str
) – Basename of the file to find under the sub_pathnative_types (
Optional
[NativeTableInterface
]) – Set of native types, defaults to native types read from the intermediate symbol format filetable_mapping (
Optional
[Dict
[str
,str
]]) – a dictionary of table names mentioned within the ISF file, and the tables within the context which they map to
- Return type
- Returns
the name of the added symbol table
-
del_type_class
(*args, **kwargs)¶
-
property
enumerations
¶
-
classmethod
file_symbol_url
(sub_path, filename=None)¶ Returns an iterator of appropriate file-scheme symbol URLs that can be opened by a ResourceAccessor class.
Filter reduces the number of results returned to only those URLs containing that string
-
get_enumeration
(*args, **kwargs)¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(*args, **kwargs)¶
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(*args, **kwargs)¶
-
get_type_class
(*args, **kwargs)¶
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
provides
= {'type': 'interface'}¶
-
set_type_class
(*args, **kwargs)¶
-
property
symbols
¶
-
property
types
¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
fileglob
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
ifnet
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
inpcb
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
proc
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.symbols.generic.GenericIntelProcess
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
add_process_layer
(config_prefix=None, preferred_name=None)[source]¶ Constructs a new layer based on the process’s DTB.
Returns the name of the Layer or None.
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_process_memory_sections
(context, config_prefix, rw_no_file=False)[source]¶ Returns a list of sections based on the memory manager’s view of this task’s virtual memory.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
queue_entry
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
sockaddr
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
sockaddr_dl
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
socket
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
vm_map_entry
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
is_suspicious
(context, config_prefix)[source]¶ Flags memory regions that are mapped rwx or that map an executable not back from a file on disk.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
vm_map_object
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
vnode
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
WindowsKernelIntermedSymbols
(context, config_path, name, isf_url)[source]¶ Bases:
volatility.framework.symbols.intermed.IntermediateSymbolTable
Instantiates a SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url (
str
) – The URL pointing to the ISF file locationnative_types – The NativeSymbolTable that contains the native types for this symbol table
table_mapping – A dictionary linking names referenced in the file with symbol tables in the context
validate – Determines whether the ISF file will be validated against the appropriate schema
class_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create
(context, config_path, sub_path, filename, native_types=None, table_mapping=None, class_types=None)¶ Takes a context and loads an intermediate symbol table based on a filename.
- Parameters
context (
ContextInterface
) – The context that the current plugin is being run withinconfig_path (
str
) – The configuration path for reading/storing configuration information this symbol table may usesub_path (
str
) – The path under a suitable symbol path (defaults to volatility/symbols and volatility/framework/symbols) to checkfilename (
str
) – Basename of the file to find under the sub_pathnative_types (
Optional
[NativeTableInterface
]) – Set of native types, defaults to native types read from the intermediate symbol format filetable_mapping (
Optional
[Dict
[str
,str
]]) – a dictionary of table names mentioned within the ISF file, and the tables within the context which they map to
- Return type
- Returns
the name of the added symbol table
-
del_type_class
(*args, **kwargs)¶
-
property
enumerations
¶
-
classmethod
file_symbol_url
(sub_path, filename=None)¶ Returns an iterator of appropriate file-scheme symbol URLs that can be opened by a ResourceAccessor class.
Filter reduces the number of results returned to only those URLs containing that string
-
get_enumeration
(*args, **kwargs)¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(*args, **kwargs)¶
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(*args, **kwargs)¶
-
get_type_class
(*args, **kwargs)¶
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(*args, **kwargs)¶
-
property
symbols
¶
-
property
types
¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
DEVICE_OBJECT
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,volatility.framework.symbols.windows.extensions.ExecutiveObject
A class for kernel device objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
object_header
()¶ - Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
DRIVER_OBJECT
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,volatility.framework.symbols.windows.extensions.ExecutiveObject
A class for kernel driver objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
object_header
()¶ - Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
EPROCESS
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.symbols.generic.GenericIntelProcess
,volatility.framework.symbols.windows.extensions.ExecutiveObject
A class for executive kernel processes objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
add_process_layer
(config_prefix=None, preferred_name=None)[source]¶ Constructs a new layer based on the process’s DirectoryTableBase.
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
object_header
()¶ - Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
ETHREAD
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A class for executive thread objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
EX_FAST_REF
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
This is a standard Windows structure that stores a pointer to an object but also leverages the least significant bits to encode additional details.
When dereferencing the pointer, we need to strip off the extra bits.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
ExecutiveObject
(context, type_name, object_info, **kwargs)[source]¶ Bases:
volatility.framework.interfaces.objects.ObjectInterface
This is used as a “mixin” that provides all kernel executive objects with a means of finding their own object header.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
object
A container for proxied methods that the ObjectTemplate of this object will call. This is primarily to keep methods together for easy organization/management, there is no significant need for it to be a separate class.
The methods of this class must be class methods rather than standard methods, to allow for code reuse. Each method also takes a template since the templates may contain the necessary data about the yet-to-be-constructed object. It allows objects to control how their templates respond without needing to write new templates for each and every potental object type.
-
abstract classmethod
children
(template)¶ Returns the children of the template.
-
abstract classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
abstract classmethod
relative_child_offset
(template, child)¶ Returns the relative offset from the head of the parent data to the child member.
- Return type
-
abstract classmethod
replace_child
(template, old_child, new_child)¶ Substitutes the old_child for the new_child.
- Return type
None
-
abstract classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
abstract
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
FILE_OBJECT
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,volatility.framework.symbols.windows.extensions.ExecutiveObject
A class for windows file objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
object_header
()¶ - Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
KMUTANT
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,volatility.framework.symbols.windows.extensions.ExecutiveObject
A class for windows mutant objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
object_header
()¶ - Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
KSYSTEM_TIME
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A system time structure that stores a high and low part.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
LIST_ENTRY
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,collections.abc.Iterable
A class for double-linked lists on Windows.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
to_list
(symbol_type, member, forward=True, sentinel=True, layer=None)[source]¶ Returns an iterator of the entries in the list.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
MMVAD
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.symbols.windows.extensions.MMVAD_SHORT
A version of the process virtual memory range structure that contains additional fields necessary to map files from disk.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_commit_charge
()¶ Get the VAD’s commit charge (number of committed pages)
-
get_end
()¶ Get the VAD’s ending virtual address.
-
get_left_child
()¶ Get the left child member.
-
get_parent
()¶ Get the VAD’s parent member.
-
get_private_memory
()¶ Get the VAD’s private memory setting.
-
get_protection
(protect_values, winnt_protections)¶ Get the VAD’s protection constants as a string.
-
get_right_child
()¶ Get the right child member.
-
get_start
()¶ Get the VAD’s starting virtual address.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
get_tag
¶
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
traverse
(visited=None, depth=0)¶ Traverse the VAD tree, determining each underlying VAD node type by looking up the pool tag for the structure and then casting into a new object.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
MMVAD_SHORT
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A class that represents process virtual memory ranges.
Each instance is a node in a binary tree structure and is pointed to by VadRoot.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_protection
(protect_values, winnt_protections)[source]¶ Get the VAD’s protection constants as a string.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
traverse
(visited=None, depth=0)[source]¶ Traverse the VAD tree, determining each underlying VAD node type by looking up the pool tag for the structure and then casting into a new object.
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
OBJECT_HEADER
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A class for the headers for executive kernel objects, which contains quota information, ownership details, naming data, and ACLs.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
property
NameInfo
¶ - Return type
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_object_type
(type_map, cookie=None)[source]¶ Across all Windows versions, the _OBJECT_HEADER embeds details on the type of object (i.e. process, file) but the way its embedded differs between versions.
This API abstracts away those details.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
OBJECT_SYMBOLIC_LINK
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
,volatility.framework.symbols.windows.extensions.ExecutiveObject
A class for kernel link objects.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
object_header
()¶ - Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
POOL_HEADER
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A kernel pool allocation header.
Exists at the base of the allocation and provides a tag that we can scan for.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_object
(type_name, type_map, use_top_down, native_layer_name=None, object_type=None, cookie=None)[source]¶ Carve an object or data structure from a kernel pool allocation.
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
UNICODE_STRING
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A class for Windows unicode string structures.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
property
String
¶ - Return type
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
KDDEBUGGER_DATA64
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
IMAGE_DOS_HEADER
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
fix_image_base
(raw_data, nt_header)[source]¶ Fix the _OPTIONAL_HEADER.ImageBase value (which is either an unsigned long for 32-bit PE’s or unsigned long long for 64-bit PE’s) to match the address where the PE file was carved out of memory.
- Parameters
raw_data (
bytes
) – a bytes object of the PE’s datant_header (
ObjectInterface
) – <_IMAGE_NT_HEADERS> or <_IMAGE_NT_HEADERS64> instance
- Return type
- Returns
<bytes> patched with the correct address
-
get_nt_header
()[source]¶ Carve out the NT header from this DOS header. This reflects on the PE file’s Machine type to create a 32- or 64-bit NT header structure.
- Return type
- Returns
<_IMAGE_NT_HEADERS> or <_IMAGE_NT_HEADERS64> instance
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
reconstruct
()[source]¶ This method generates the content necessary to reconstruct a PE file from memory. It preserves slack space (similar to the old –memory) and automatically fixes the ImageBase in the output PE file.
-
replace_header_field
(sect, header, item, value)[source]¶ Replaces a member in an _IMAGE_SECTION_HEADER structure.
- Parameters
sect (
ObjectInterface
) – the section instanceheader (
bytes
) – raw data for the sectionitem (
ObjectInterface
) – the member of the section to replacevalue (
int
) – new value for the member
- Return type
- Returns
The raw data with the replaced header field
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
IMAGE_NT_HEADERS
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_sections
()[source]¶ Iterate through the section headers for this PE file.
- Yields
<_IMAGE_SECTION_HEADER> objects
- Return type
Generator
[ObjectInterface
,None
,None
]
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
CMHIVE
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_name
()[source]¶ Determine a name for the hive.
Note that some attributes are unpredictably blank across different OS versions while others are populated, so we check all possibilities and take the first one that’s not empty
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
name
¶ Determine a name for the hive.
Note that some attributes are unpredictably blank across different OS versions while others are populated, so we check all possibilities and take the first one that’s not empty
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
CM_KEY_BODY
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
This represents an open handle to a registry key and is not tied to the registry hive file format on disk.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
CM_KEY_NODE
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Extension to allow traversal of registry keys.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
CM_KEY_VALUE
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Extensions to extract data from CM_KEY_VALUE nodes.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
HMAP_ENTRY
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
RegKeyFlags
[source]¶ Bases:
enum.IntEnum
An enumeration.
-
KEY_COMP_NAME
= 32¶
-
KEY_HIVE_ENTRY
= 4¶
-
KEY_HIVE_EXIT
= 2¶
-
KEY_IS_VOLATILE
= 1¶
-
KEY_NO_DELETE
= 8¶
-
KEY_PREFEF_HANDLE
= 64¶
-
KEY_SYM_LINK
= 16¶
-
KEY_VIRTUAL_STORE
= 512¶
-
KEY_VIRT_MIRRORED
= 128¶
-
KEY_VIRT_TARGET
= 256¶
-
-
class
RegValueTypes
[source]¶ Bases:
enum.Enum
An enumeration.
-
REG_BINARY
= 3¶
-
REG_DWORD
= 4¶
-
REG_DWORD_BIG_ENDIAN
= 5¶
-
REG_EXPAND_SZ
= 2¶
-
REG_FULL_RESOURCE_DESCRIPTOR
= 9¶
-
REG_LINK
= 6¶
-
REG_MULTI_SZ
= 7¶
-
REG_NONE
= 0¶
-
REG_QWORD
= 11¶
-
REG_RESOURCE_LIST
= 8¶
-
REG_RESOURCE_REQUIREMENTS_LIST
= 10¶
-
REG_SZ
= 1¶
-
REG_UNKNOWN
= 99999¶
-
-
class
SERVICE_HEADER
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A service header structure.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
SERVICE_RECORD
(context, type_name, object_info, size, members)[source]¶ Bases:
volatility.framework.objects.StructType
A service record structure.
Constructs an Object adhering to the ObjectInterface.
- Parameters
context (
ContextInterface
) – The context associated with the objecttype_name (
str
) – The name of the type structure for the objectobject_info (
ObjectInformation
) – Basic information relevant to the object (layer, offset, member_name, parent, etc)
-
class
VolTemplateProxy
¶ Bases:
volatility.framework.interfaces.objects.VolTemplateProxy
-
classmethod
has_member
(template, member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
classmethod
relative_child_offset
(template, child)¶ Returns the relative offset of a child to its parent.
- Return type
-
classmethod
replace_child
(template, old_child, new_child)¶ Replace a child elements within the arguments handed to the template.
- Return type
None
-
classmethod
-
cast
(new_type_name, **additional)¶ Returns a new object at the offset and from the layer that the current object inhabits.
Note
If new type name does not include a symbol table, the symbol table for the current object is used
- Return type
-
get_symbol_table
()¶ Returns the symbol table for this particular object.
Returns none if the symbol table cannot be identified.
- Return type
-
has_member
(member_name)¶ Returns whether the object would contain a member called member_name.
- Return type
-
property
vol
¶ Returns the volatility specific object information.
- Return type
-
write
(value)¶ Writes the new value into the format at the offset the object currently resides at.
-
class
PdbReader
(context, location, progress_callback=None)[source]¶ Bases:
object
Class to read Microsoft PDB files.
This reads the various streams according to various sources as to how pdb should be read. These sources include:
https://docs.rs/crate/pdb/0.5.0/source/src/ https://github.com/moyix/pdbparse https://llvm.org/docs/PDB/index.html https://github.com/Microsoft/microsoft-pdb/
In order to generate ISF files, we need the type stream (2), and the symbols stream (variable). The MultiStream Format wrapper is handled as a volatility layer, which constructs sublayers for each stream. The streams can then be read contiguously allowing the data to be accessed.
Volatility’s type system is strong when everything must be laid out in advance, but PDB data is reasonably dynamic, particularly when it comes to names. We must therefore parse it after we’ve collected other information already. This is in comparison to something such as Construct/pdbparse which can use just-parsed data to determine dynamically sized data following.
-
consume_padding
(layer_name, offset)[source]¶ Returns the amount of padding used between fields.
- Return type
-
consume_type
(module, offset, length)[source]¶ Returns a (leaf_type, name, object) Tuple for a type, and the number of bytes consumed.
- Return type
Tuple
[Tuple
[Optional
[ObjectInterface
],Optional
[str
],Union
[None
,List
[~T],ObjectInterface
]],int
]
-
property
context
¶
-
convert_bytes_to_guid
(original)[source]¶ Convert the bytes to the correct ordering for a GUID.
- Return type
-
determine_extended_value
(leaf_type, value, module, length)[source]¶ Reads a value and potentially consumes more data to construct the value.
- Return type
-
get_size_from_index
(index)[source]¶ Returns the size of the structure based on the type index provided.
- Return type
-
classmethod
load_pdb_layer
(context, location)[source]¶ Loads a PDB file into a layer within the context and returns the name of the new layer.
Note: the context may be changed by this method
- Return type
-
static
parse_string
(structure, parse_as_pascal=False, size=0)[source]¶ Consumes either a c-string or a pascal string depending on the leaf_type.
- Return type
-
property
pdb_layer_name
¶
-
process_types
(type_references)[source]¶ Reads the TPI and symbol streams to populate the reader’s variables.
- Return type
None
-
read_necessary_streams
()[source]¶ Read streams to populate the various internal components for a PDB table.
-
-
class
ISFormatTable
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.interfaces.symbols.SymbolTableInterface
Provide a base class to identify all subclasses.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(name)¶ Resolves a symbol name into a symbol object.
If the symbol isn’t found, it raises a SymbolError exception
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(name)¶ Resolves a symbol name into an object template.
If the symbol isn’t found it raises a SymbolError exception
- Return type
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a metadata object containing information about the symbol table.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 0)¶
-
class
IntermediateSymbolTable
(context, config_path, name, isf_url, native_types=None, table_mapping=None, validate=True, class_types=None)[source]¶ Bases:
volatility.framework.interfaces.symbols.SymbolTableInterface
The IntermediateSymbolTable class reads a JSON file and conducts common tasks such as validation, construction by looking up a JSON file from the available files and ensuring the appropriate version of the schema and proxy are chosen.
- The JSON format itself is made up of various groups (symbols, user_types, base_types, enums and metadata)
Symbols link a name to a particular offset relative to the start of a section of memory
Base types define the simplest primitive data types, these can make more complex structure
User types define the more complex types by specifying members at a relative offset from the start of the type
Enums can specify a list of names and values and a type inside which the numeric encoding will fit
Metadata defines information about the originating file
These are documented in JSONSchema JSON files located in volatility/schemas.
Instantiates a SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url (
str
) – The URL pointing to the ISF file locationnative_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextvalidate (
bool
) – Determines whether the ISF file will be validated against the appropriate schemaclass_types (
Optional
[Dict
[str
,Type
[ObjectInterface
]]]) – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
classmethod
create
(context, config_path, sub_path, filename, native_types=None, table_mapping=None, class_types=None)[source]¶ Takes a context and loads an intermediate symbol table based on a filename.
- Parameters
context (
ContextInterface
) – The context that the current plugin is being run withinconfig_path (
str
) – The configuration path for reading/storing configuration information this symbol table may usesub_path (
str
) – The path under a suitable symbol path (defaults to volatility/symbols and volatility/framework/symbols) to checkfilename (
str
) – Basename of the file to find under the sub_pathnative_types (
Optional
[NativeTableInterface
]) – Set of native types, defaults to native types read from the intermediate symbol format filetable_mapping (
Optional
[Dict
[str
,str
]]) – a dictionary of table names mentioned within the ISF file, and the tables within the context which they map to
- Return type
- Returns
the name of the added symbol table
-
del_type_class
(*args, **kwargs)¶
-
property
enumerations
¶
-
classmethod
file_symbol_url
(sub_path, filename=None)[source]¶ Returns an iterator of appropriate file-scheme symbol URLs that can be opened by a ResourceAccessor class.
Filter reduces the number of results returned to only those URLs containing that string
-
get_enumeration
(*args, **kwargs)¶
-
classmethod
get_requirements
()[source]¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(*args, **kwargs)¶
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(*args, **kwargs)¶
-
get_type_class
(*args, **kwargs)¶
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(*args, **kwargs)¶
-
property
symbols
¶
-
property
types
¶
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
class
Version1Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.ISFormatTable
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)[source]¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a metadata object containing information about the symbol table.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)[source]¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (0, 0, 1)¶
-
class
Version2Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.Version1Format
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(name)¶ Returns the location offset given by the symbol name.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a metadata object containing information about the symbol table.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (2, 0, 0)¶
-
class
Version3Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.Version2Format
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a metadata object containing information about the symbol table.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (2, 1, 0)¶
-
class
Version4Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.Version3Format
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
format_mapping
= {'bool': <class 'volatility.framework.objects.Boolean'>, 'char': <class 'volatility.framework.objects.Char'>, 'float': <class 'volatility.framework.objects.Float'>, 'int': <class 'volatility.framework.objects.Integer'>, 'void': <class 'volatility.framework.objects.Integer'>}¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(name)¶ Returns the symbol given by the symbol name.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a metadata object containing information about the symbol table.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (4, 0, 0)¶
-
class
Version5Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.Version4Format
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
format_mapping
= {'bool': <class 'volatility.framework.objects.Boolean'>, 'char': <class 'volatility.framework.objects.Char'>, 'float': <class 'volatility.framework.objects.Float'>, 'int': <class 'volatility.framework.objects.Integer'>, 'void': <class 'volatility.framework.objects.Integer'>}¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a metadata object containing information about the symbol table.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (4, 1, 0)¶
-
class
Version6Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.Version5Format
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
format_mapping
= {'bool': <class 'volatility.framework.objects.Boolean'>, 'char': <class 'volatility.framework.objects.Char'>, 'float': <class 'volatility.framework.objects.Float'>, 'int': <class 'volatility.framework.objects.Integer'>, 'void': <class 'volatility.framework.objects.Integer'>}¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(name)¶ Returns the symbol given by the symbol name.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a MetadataInterface object.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (6, 0, 0)¶
-
class
Version7Format
(context, config_path, name, json_object, native_types=None, table_mapping=None)[source]¶ Bases:
volatility.framework.symbols.intermed.Version6Format
Class for storing intermediate debugging data as objects and classes.
Instantiates an SymbolTable based on an IntermediateSymbolFormat JSON file. This is validated against the appropriate schema. The validation can be disabled by passing validate = False, but this should almost never be done.
- Parameters
context (
ContextInterface
) – The volatility context for the symbol tableconfig_path (
str
) – The configuration path for the symbol tablename (
str
) – The name for the symbol table (this is used in symbols e.g. table!symbol )isf_url – The URL pointing to the ISF file location
native_types (
Optional
[NativeTableInterface
]) – The NativeSymbolTable that contains the native types for this symbol tabletable_mapping (
Optional
[Dict
[str
,str
]]) – A dictionary linking names referenced in the file with symbol tables in the contextclass_types – A dictionary of type names and classes that override StructType when they are instantiated
-
build_configuration
()¶ Constructs a HierarchicalDictionary of all the options required to build this component in the current context.
Ensures that if the class has been created, it can be recreated using the configuration built Inheriting classes must override this to ensure any dependent classes update their configurations too
- Return type
-
property
config
¶ The Hierarchical configuration Dictionary for this Configurable object.
- Return type
-
property
context
¶ The context object that this configurable belongs to/configuration is stored in.
- Return type
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
format_mapping
= {'bool': <class 'volatility.framework.objects.Boolean'>, 'char': <class 'volatility.framework.objects.Char'>, 'float': <class 'volatility.framework.objects.Float'>, 'int': <class 'volatility.framework.objects.Integer'>, 'void': <class 'volatility.framework.objects.Integer'>}¶
-
classmethod
get_requirements
()¶ Returns a list of RequirementInterface objects required by this object.
- Return type
-
get_symbol
(name)¶ Returns the symbol given by the symbol name.
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type_class
(name)¶ Returns the class associated with a Symbol type.
- Return type
-
classmethod
make_subconfig
(context, base_config_path, **kwargs)¶ Convenience function to allow constructing a new randomly generated sub-configuration path, containing each element from kwargs.
- Parameters
context (
ContextInterface
) – The context in which to store the new configurationbase_config_path (
str
) – The base configuration path on which to build the new configurationkwargs – Keyword arguments that are used to populate the new configuration path
- Returns
The newly generated full configuration path
- Return type
-
property
metadata
¶ Returns a MetadataInterface object.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
classmethod
unsatisfied
(context, config_path)¶ Returns a list of the names of all unsatisfied requirements.
Since a satisfied set of requirements will return [], it can be used in tests as follows:
unmet = configurable.unsatisfied(context, config_path) if unmet: raise RuntimeError("Unsatisfied requirements: {}".format(unmet)
- Return type
-
version
= (6, 1, 0)¶
-
class
LinuxMetadata
(json_data)[source]¶ Bases:
volatility.framework.interfaces.symbols.MetadataInterface
Class to handle the etadata from a Linux symbol table.
Constructor that accepts json_data.
-
class
WindowsMetadata
(json_data)[source]¶ Bases:
volatility.framework.interfaces.symbols.MetadataInterface
Class to handle the metadata from a Windows symbol table.
Constructor that accepts json_data.
-
class
NativeTable
(name, native_dictionary)[source]¶ Bases:
volatility.framework.interfaces.symbols.NativeTableInterface
Symbol List that handles Native types.
Args: name: Name of the symbol table native_types: The native symbol table used to resolve any base/native types table_mapping: A dictionary mapping names of tables (which when present within the table will be changed to the mapped table) class_types: A dictionary of types and classes that should be instantiated instead of Struct to construct them
-
del_type_class
(name)¶ Removes the associated class override for a specific Symbol type.
- Return type
None
-
get_symbol
(name)¶ Resolves a symbol name into a symbol object.
If the symbol isn’t found, it raises a SymbolError exception
- Return type
-
get_symbol_type
(name)¶ Resolves a symbol name into a symbol and then resolves the symbol’s type.
-
get_symbols_by_location
(offset, size=0)¶ Returns the name of all symbols in this table that live at a particular offset.
-
get_symbols_by_type
(type_name)¶ Returns the name of all symbols in this table that have type matching type_name.
-
get_type
(type_name)[source]¶ Resolves a symbol name into an object template.
This always construct a new python object, rather than using a cached value otherwise changes made later may affect the cached copy. Calling clone after every native type construction was extremely slow.
- Return type
-
property
natives
¶ Returns None or a NativeTable for handling space specific native types.
- Return type
-
set_type_class
(name, clazz)¶ Overrides the object class for a specific Symbol type.
Name must be present in self.types
- Parameters
name (
str
) – The name of the type to override the class forclazz (
Type
[ObjectInterface
]) – The actual class to override for the provided type name
- Return type
None
-
Submodules¶
volatility.framework.exceptions module¶
A list of potential exceptions that volatility can throw.
These include exceptions that can be thrown on errors by the symbol
space or symbol tables, and by layers when an address is invalid. The
PagedInvalidAddressException
contains information about the
size of the invalid page.
-
exception
InvalidAddressException
(layer_name, invalid_address, *args)[source]¶ Bases:
volatility.framework.exceptions.LayerException
Thrown when an address is not valid in the layer it was requested.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
LayerException
(layer_name, *args)[source]¶ Bases:
volatility.framework.exceptions.VolatilityException
Thrown when an error occurs dealing with memory and layers.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
PagedInvalidAddressException
(layer_name, invalid_address, invalid_bits, entry, *args)[source]¶ Bases:
volatility.framework.exceptions.InvalidAddressException
Thrown when an address is not valid in the paged space in which it was request. This is a subclass of InvalidAddressException and is only thrown from a paged layer. In most circumstances
InvalidAddressException
is the correct exception to throw, since this will catch all invalid mappings (including paged ones).Includes the invalid address and the number of bits of the address that are invalid
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
PluginRequirementException
[source]¶ Bases:
volatility.framework.exceptions.VolatilityException
Class to allow plugins to indicate that a requirement has not been fulfilled.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
PluginVersionException
[source]¶ Bases:
volatility.framework.exceptions.VolatilityException
Class to allow determining that a required plugin has an invalid version.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
SwappedInvalidAddressException
(layer_name, invalid_address, invalid_bits, entry, swap_offset, *args)[source]¶ Bases:
volatility.framework.exceptions.PagedInvalidAddressException
Thrown when an address is not valid in the paged layer in which it was requested, but expected to be in an associated swap layer.
Includes the swap lookup, as well as the invalid address and the bits of the lookup that were invalid.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
SymbolError
[source]¶ Bases:
volatility.framework.exceptions.VolatilityException
Thrown when a symbol lookup has failed.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
SymbolSpaceError
[source]¶ Bases:
volatility.framework.exceptions.VolatilityException
Thrown when an error occurs dealing with Symbolspaces and SymbolTables.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
exception
UnsatisfiedException
(unsatisfied)[source]¶ Bases:
volatility.framework.exceptions.VolatilityException
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
volatility.schemas package¶
-
create_json_hash
(input, schema)[source]¶ Constructs the hash of the input and schema to create a unique indentifier for a particular JSON file.
- Return type
-
load_cached_validations
()[source]¶ Loads up the list of successfully cached json objects, so we don’t need to revalidate them.
volatility.symbols package¶
Defines the symbols architecture.
This is the namespace for all volatility symbols, and determines the path for loading symbol ISF files