diff --git a/README.md b/README.md index 373d85d41..2e01b3b03 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,24 @@ the Volatility Software License (VSL). See the [LICENSE](LICENSE.txt) file for m ## Requirements -- Python 3.6.0 or later. -- Pefile 2017.8.1 or later. +Volatility 3 requires Python 3.6.0 or later. To install the most minimal set of dependencies (some plugins will not work) use a command such as: -## Optional Dependencies +```shell +pip3 install requirements-minimal.txt +``` -- yara-python 3.8.0 or later. -- capstone 3.0.0 or later. +Alternately, the minimal packages can be installed automatically when Volatility 3 is installed. However, as noted in the Quick Start section below, Volatility 3 does not *need* to be installed prior to using it. + +```shell +python3 setup.py build +python3 setup.py install +``` + +To enable the full range of Volatility 3 functionality, use a command like the one below. For partial functionality, comment out any unnecessary packages in [requirements.txt](requirements.txt) prior to running the command. + +```shell +pip3 install requirements.txt +``` ## Downloading Volatility diff --git a/doc/requirements.txt b/doc/requirements.txt new file mode 100644 index 000000000..d646d22ce --- /dev/null +++ b/doc/requirements.txt @@ -0,0 +1,4 @@ +# These packages are required for building the documentation. +sphinx>=1.8.2 +sphinx_autodoc_typehints>=1.4.0 +sphinx-rtd-theme>=0.4.3 \ No newline at end of file diff --git a/requirements-minimal.txt b/requirements-minimal.txt new file mode 100644 index 000000000..31ac02814 --- /dev/null +++ b/requirements-minimal.txt @@ -0,0 +1,2 @@ +# These packages are required for core functionality. +pefile>=2017.8.1 #foo \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..f9ec9d3d1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,24 @@ +# The following packages are required for core functionality. +pefile>=2017.8.1 + +# The following packages are optional. +# If certain packages are not necessary, place a comment (#) at the start of the line. + +# This is required for the yara plugins +yara-python>=3.8.0 + +# This is required for several plugins that perform malware analysis and disassemble code. +# It can also improve accuracy of Windows 8 and later memory samples. +capstone>=3.0.5 + +# This is required by plugins that decrypt passwords, password hashes, etc. +pycryptodome + +# This can improve error messages regarding improperly configured ISF files. +jsonschema>=2.3.0 + +# This is required for memory acquisition via leech. +leechcorepyc>=2.4.0 + +# This is required for analyzing Linux samples acquired with AVML. +python-snappy==0.6.0 \ No newline at end of file diff --git a/setup.py b/setup.py index 8e9f88217..f6bb687f2 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,16 @@ from volatility3.framework import constants with open("README.md", "r", encoding = "utf-8") as fh: long_description = fh.read() +def get_install_requires(): + requirements = [] + with open("requirements-minimal.txt", "r", encoding="utf-8") as fh: + for line in fh.readlines(): + stripped_line = line.strip() + if stripped_line == "" or stripped_line.startswith("#"): + continue + requirements.append(stripped_line) + return requirements + setuptools.setup(name = "volatility3", description = "Memory forensics framework", version = constants.PACKAGE_VERSION, @@ -24,7 +34,7 @@ setuptools.setup(name = "volatility3", "Documentation": "https://volatility3.readthedocs.io/", "Source Code": "https://github.com/volatilityfoundation/volatility3", }, - python_requires = '>=3.5.3', + python_requires = '>=3.6.0', include_package_data = True, exclude_package_data = { '': ['development', 'development.*'], @@ -37,13 +47,4 @@ setuptools.setup(name = "volatility3", 'volshell = volatility3.cli.volshell:main', ], }, - install_requires = ["pefile"], - extras_require = { - 'leechcorepyc': ["leechcorepyc>=2.4.0"], - 'jsonschema': ["jsonschema>=2.3.0"], - 'yara': ["yara-python>=3.8.0"], - 'crypto': ["pycryptodome>=3"], - 'disasm': ["capstone;platform_system=='Linux'", "capstone-windows;platform_system=='Windows'"], - 'doc': ["sphinx>=1.8.2", "sphinx_autodoc_typehints>=1.4.0", "sphinx-rtd-theme>=0.4.3"], - 'avml': ["python-snappy==0.6.0"], - }) + install_requires = get_install_requires())