Skip to content

Commit 298570a

Browse files
authored
Merge branch 'develop' into issue_985
2 parents 9b5c4b0 + a08b780 commit 298570a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1033
-284
lines changed

.github/workflows/install.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Install Volatility3 test
2+
on: [push, pull_request]
3+
jobs:
4+
5+
install_test:
6+
runs-on: ${{ matrix.host }}
7+
strategy:
8+
fail-fast: false
9+
matrix:
10+
host: [ ubuntu-latest, windows-latest ]
11+
python-version: [ "3.7", "3.8", "3.9", "3.10", "3.11" ]
12+
steps:
13+
- uses: actions/checkout@v3
14+
15+
- name: Set up Python ${{ matrix.python-version }}
16+
uses: actions/setup-python@v4
17+
with:
18+
python-version: ${{ matrix.python-version }}
19+
20+
- name: Setup python-pip
21+
run: python -m pip install --upgrade pip
22+
23+
- name: Install dependencies
24+
run: |
25+
pip install -r requirements.txt
26+
27+
- name: Install volatility3
28+
run: pip install .
29+
30+
- name: Run volatility3
31+
run: vol --help

CITATION.cff

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# This CITATION.cff file was generated with cffinit.
2+
# Visit https://bit.ly/cffinit to generate yours today!
3+
4+
cff-version: 1.2.0
5+
title: Volatility 3
6+
message: >-
7+
If you reference this software, please feel free to cite
8+
it using the information below.
9+
type: software
10+
authors:
11+
- name: Volatility Foundation
12+
country: US
13+
website: 'https://www.volatilityfoundation.org/'
14+
identifiers:
15+
- type: url
16+
value: 'https://github.com/volatilityfoundation/volatility3'
17+
description: Volatility 3 source code respository
18+
repository-code: 'https://github.com/volatilityfoundation/volatility3'
19+
url: 'https://github.com/volatilityfoundation/volatility3'
20+
abstract: >-
21+
Volatility is the world's most widely used framework for
22+
extracting digital artifacts from volatile memory (RAM)
23+
samples. The extraction techniques are performed
24+
completely independent of the system being investigated
25+
but offer visibility into the runtime state of the system.
26+
The framework is intended to introduce people to the
27+
techniques and complexities associated with extracting
28+
digital artifacts from volatile memory samples and provide
29+
a platform for further work into this exciting area of
30+
research.
31+
keywords:
32+
- malware
33+
- forensics
34+
- memory
35+
- python
36+
- ram
37+
- volatility

doc/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def setup(app):
2727

2828
source_dir = os.path.abspath(os.path.dirname(__file__))
2929
sphinx.ext.apidoc.main(
30-
argv=["-e", "-M", "-f", "-T", "-o", source_dir, volatility_directory]
30+
["-e", "-M", "-f", "-T", "-o", source_dir, volatility_directory]
3131
)
3232

3333
# Go through the volatility3.framework.plugins files and change them to volatility3.plugins

doc/source/using-as-a-library.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ also be included, which can be found in `volatility3.constants.PLUGINS_PATH`.
5454
volatility3.plugins.__path__ = <new_plugin_path> + constants.PLUGINS_PATH
5555
failures = framework.import_files(volatility3.plugins, True)
5656

57+
.. note::
58+
59+
Volatility uses the `volatility3.plugins` namespace for all plugins (including those in `volatility3.framework.plugins`).
60+
Please ensure you only use `volatility3.plugins` and only ever import plugins from this namespace.
61+
This ensures the ability of users to override core plugins without needing write access to the framework directory.
62+
5763
Once the plugins have been imported, we can interrogate which plugins are available. The
5864
:py:func:`~volatility3.framework.list_plugins` call will
5965
return a dictionary of plugin names and the plugin classes.

requirements-dev.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# The following packages are required for core functionality.
2-
pefile>=2017.8.1
2+
pefile>=2023.2.7
33

44
# The following packages are optional.
55
# If certain packages are not necessary, place a comment (#) at the start of the line.

requirements-minimal.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# These packages are required for core functionality.
2-
pefile>=2017.8.1 #foo
2+
pefile>=2023.2.7 #foo

requirements.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# The following packages are required for core functionality.
2-
pefile>=2017.8.1
2+
pefile>=2023.2.7
33

44
# The following packages are optional.
55
# If certain packages are not necessary, place a comment (#) at the start of the line.
@@ -16,3 +16,7 @@ pycryptodome
1616

1717
# This is required for memory acquisition via leechcore/pcileech.
1818
leechcorepyc>=2.4.0
19+
20+
# This is required for memory analysis on a Amazon/MinIO S3 and Google Cloud object storage
21+
gcsfs>=2023.1.0
22+
s3fs>=2023.1.0

setup.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@
1212

1313
def get_install_requires():
1414
requirements = []
15-
with open("requirements-minimal.txt", "r", encoding = "utf-8") as fh:
15+
with open("requirements-minimal.txt", "r", encoding="utf-8") as fh:
1616
for line in fh.readlines():
1717
stripped_line = line.strip()
1818
if stripped_line == "" or stripped_line.startswith("#"):
1919
continue
2020
requirements.append(stripped_line)
2121
return requirements
2222

23+
2324
setuptools.setup(
2425
name="volatility3",
2526
description="Memory forensics framework",
@@ -36,12 +37,12 @@ def get_install_requires():
3637
"Documentation": "https://volatility3.readthedocs.io/",
3738
"Source Code": "https://github.com/volatilityfoundation/volatility3",
3839
},
39-
python_requires=">=3.7.0",
40-
include_package_data=True,
41-
exclude_package_data={"": ["development", "development.*"], "development": ["*"]},
4240
packages=setuptools.find_namespace_packages(
43-
exclude=["development", "development.*"]
41+
include=["volatility3", "volatility3.*"]
4442
),
43+
package_dir={"volatility3": "volatility3"},
44+
python_requires=">=3.7.0",
45+
include_package_data=True,
4546
entry_points={
4647
"console_scripts": [
4748
"vol = volatility3.cli:main",

volatility3/cli/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,7 @@ def __init__(self, filename: str):
662662
def close(self):
663663
# Don't overcommit
664664
if self.closed:
665-
return
665+
return None
666666

667667
self.seek(0)
668668

@@ -712,7 +712,7 @@ def close(self):
712712
"""Closes and commits the file (by moving the temporary file to the correct name"""
713713
# Don't overcommit
714714
if self._file.closed:
715-
return
715+
return None
716716

717717
self._file.close()
718718
output_filename = self._get_final_filename()

volatility3/cli/volshell/generic.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def help(self, *args):
108108
"""Describes the available commands"""
109109
if args:
110110
help(*args)
111-
return
111+
return None
112112

113113
variables = []
114114
print("\nMethods:")
@@ -325,7 +325,7 @@ def display_type(
325325
(str, interfaces.objects.ObjectInterface, interfaces.objects.Template),
326326
):
327327
print("Cannot display information about non-type object")
328-
return
328+
return None
329329

330330
if not isinstance(object, str):
331331
# Mypy requires us to order things this way
@@ -453,7 +453,7 @@ def display_symbols(self, symbol_table: str = None):
453453
"""Prints an alphabetical list of symbols for a symbol table"""
454454
if symbol_table is None:
455455
print("No symbol table provided")
456-
return
456+
return None
457457
longest_offset = longest_name = 0
458458

459459
table = self.context.symbol_space[symbol_table]

0 commit comments

Comments
 (0)