acquire 3.18.dev6__tar.gz → 3.18.dev9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. acquire-3.18.dev9/.git-blame-ignore-revs +6 -0
  2. acquire-3.18.dev9/.gitattributes +1 -0
  3. {acquire-3.18.dev6/acquire.egg-info → acquire-3.18.dev9}/PKG-INFO +1 -1
  4. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/acquire.py +22 -9
  5. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/collector.py +4 -7
  6. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/gui/win32.py +0 -1
  7. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/hashes.py +2 -1
  8. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/version.py +2 -2
  9. {acquire-3.18.dev6 → acquire-3.18.dev9/acquire.egg-info}/PKG-INFO +1 -1
  10. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire.egg-info/SOURCES.txt +8 -5
  11. {acquire-3.18.dev6/tests/docs → acquire-3.18.dev9/tests/_docs}/Makefile +1 -1
  12. acquire-3.18.dev9/tests/_docs/__init__.py +0 -0
  13. {acquire-3.18.dev6/tests/docs → acquire-3.18.dev9/tests/_docs}/conf.py +7 -0
  14. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/conftest.py +1 -1
  15. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_outputs_tar.py +1 -1
  16. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_outputs_zip.py +1 -1
  17. {acquire-3.18.dev6 → acquire-3.18.dev9}/tox.ini +4 -4
  18. {acquire-3.18.dev6 → acquire-3.18.dev9}/COPYRIGHT +0 -0
  19. {acquire-3.18.dev6 → acquire-3.18.dev9}/LICENSE +0 -0
  20. {acquire-3.18.dev6 → acquire-3.18.dev9}/MANIFEST.in +0 -0
  21. {acquire-3.18.dev6 → acquire-3.18.dev9}/README.md +0 -0
  22. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/__init__.py +0 -0
  23. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/crypt.py +0 -0
  24. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/__init__.py +0 -0
  25. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/__init__.py +0 -0
  26. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/collect.py +0 -0
  27. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/exceptions.py +0 -0
  28. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/handles.py +0 -0
  29. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/named_objects.py +0 -0
  30. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/ntdll.py +0 -0
  31. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/dynamic/windows/types.py +0 -0
  32. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/esxi.py +0 -0
  33. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/gui/__init__.py +0 -0
  34. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/gui/base.py +0 -0
  35. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/log.py +0 -0
  36. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/outputs/__init__.py +0 -0
  37. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/outputs/base.py +0 -0
  38. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/outputs/dir.py +0 -0
  39. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/outputs/tar.py +0 -0
  40. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/outputs/zip.py +0 -0
  41. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/tools/__init__.py +0 -0
  42. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/tools/decrypter.py +0 -0
  43. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/uploaders/__init__.py +0 -0
  44. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/uploaders/minio.py +0 -0
  45. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/uploaders/plugin.py +0 -0
  46. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/uploaders/plugin_registry.py +0 -0
  47. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/utils.py +0 -0
  48. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire/volatilestream.py +0 -0
  49. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire.egg-info/dependency_links.txt +0 -0
  50. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire.egg-info/entry_points.txt +0 -0
  51. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire.egg-info/requires.txt +0 -0
  52. {acquire-3.18.dev6 → acquire-3.18.dev9}/acquire.egg-info/top_level.txt +0 -0
  53. {acquire-3.18.dev6 → acquire-3.18.dev9}/pyproject.toml +0 -0
  54. {acquire-3.18.dev6 → acquire-3.18.dev9}/setup.cfg +0 -0
  55. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/__init__.py +0 -0
  56. {acquire-3.18.dev6/tests/data → acquire-3.18.dev9/tests/_data}/private_key.pem +0 -0
  57. {acquire-3.18.dev6/tests/data → acquire-3.18.dev9/tests/_data}/public_key.pem +0 -0
  58. {acquire-3.18.dev6/tests/docs → acquire-3.18.dev9/tests/_docs}/index.rst +0 -0
  59. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_acquire_command.py +0 -0
  60. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_acquire_modules.py +0 -0
  61. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_collector.py +0 -0
  62. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_decryptor_funcs.py +0 -0
  63. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_esxi_memory.py +0 -0
  64. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_file_sorting.py +0 -0
  65. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_gui.py +0 -0
  66. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_minio_uploader.py +0 -0
  67. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_misc_users.py +0 -0
  68. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_outputs_dir.py +0 -0
  69. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_plugin.py +0 -0
  70. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_utils.py +0 -0
  71. {acquire-3.18.dev6 → acquire-3.18.dev9}/tests/test_volatile.py +0 -0
@@ -0,0 +1,6 @@
1
+ # Formatting commits. You can ignore them during git-blame with `--ignore-rev` or `--ignore-revs-file`.
2
+ #
3
+ # $ git config --add 'blame.ignoreRevsFile' '.git-blame-ignore-revs'
4
+ #
5
+ # Change linter to Ruff (#213)
6
+ 9223cf135e3a95cf9687a01c745b9b6740459296
@@ -0,0 +1 @@
1
+ tests/_data/** filter=lfs diff=lfs merge=lfs -text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: acquire
3
- Version: 3.18.dev6
3
+ Version: 3.18.dev9
4
4
  Summary: A tool to quickly gather forensic artifacts from disk images or a live system into a lightweight container
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -302,6 +302,18 @@ class Proc(Module):
302
302
  collector.collect(spec, follow=False, volatile=True)
303
303
 
304
304
 
305
+ @register_module("--proc-net")
306
+ @local_module
307
+ class ProcNet(Module):
308
+ DESC = "Procfs network files (live systems only)"
309
+ EXEC_ORDER = ExecutionOrder.BOTTOM
310
+
311
+ @classmethod
312
+ def _run(cls, target: Target, cli_args: argparse.Namespace, collector: Collector) -> None:
313
+ spec = [("dir", "/proc/net")]
314
+ collector.collect(spec, follow=False, volatile=True)
315
+
316
+
305
317
  @register_module("-n", "--ntfs")
306
318
  class NTFS(Module):
307
319
  DESC = "NTFS filesystem metadata"
@@ -2090,27 +2102,28 @@ class VolatileProfile:
2090
2102
  WinArpCache,
2091
2103
  WinRDPSessions,
2092
2104
  WinDnsClientCache,
2105
+ ProcNet,
2093
2106
  )
2094
- EXTENSIVE = (
2107
+ FULL = (
2095
2108
  Proc,
2096
2109
  Sys,
2097
2110
  )
2098
2111
 
2099
2112
 
2100
2113
  VOLATILE = {
2101
- "default": {
2114
+ "full": {
2102
2115
  "windows": VolatileProfile.DEFAULT,
2103
- "linux": [],
2104
- "bsd": [],
2105
- "esxi": [],
2116
+ "linux": VolatileProfile.FULL,
2117
+ "bsd": VolatileProfile.FULL,
2118
+ "esxi": VolatileProfile.FULL,
2106
2119
  "osx": [],
2107
2120
  "proxmox": [],
2108
2121
  },
2109
- "extensive": {
2122
+ "default": {
2110
2123
  "windows": VolatileProfile.DEFAULT,
2111
- "linux": VolatileProfile.EXTENSIVE,
2112
- "bsd": VolatileProfile.EXTENSIVE,
2113
- "esxi": VolatileProfile.EXTENSIVE,
2124
+ "linux": [],
2125
+ "bsd": [],
2126
+ "esxi": [],
2114
2127
  "osx": [],
2115
2128
  "proxmox": [],
2116
2129
  },
@@ -330,13 +330,10 @@ class Collector:
330
330
  used.
331
331
  base: A different base path to use to store the file, it is prepended to the given or
332
332
  generated ``outpath``.
333
- volatile: When this flag is set, the collection of a number of artefacts is done
334
- slightly different:
335
- - symlinks at the end of a path will not be collected,
336
- - empty directories will be collected,
337
- - files will be collected in a slower but more robust way, any errors while
338
- reading the bytes will not fail the collection of the file and all bytes
339
- already retrieved will be stored.
333
+ volatile: When this flag is set, the collection of a number of artefacts is performed slightly different.
334
+ Symlinks at the end of a path will not be collected, empty directories will be collected,
335
+ files will be collected in a slower but more robust way, any errors while reading the bytes
336
+ will not fail the collection of the file and all bytes already retrieved will be stored.
340
337
  seen_paths: A list of normalized path strings, used when calling this function
341
338
  recursively to collect directories to break out of symlink loops.
342
339
  """
@@ -83,7 +83,6 @@ PBM_SETRANGE32 = WM_USER + 6
83
83
  PBS_SMOOTH = 0x01
84
84
  BN_CLICKED = 0
85
85
  BM_SETCHECK = 241
86
- WHITE_BRUSH = 0
87
86
  WM_CTLCOLORSTATIC = 312
88
87
  SS_LEFT = 0
89
88
 
@@ -162,7 +162,8 @@ def collect_hashes(
162
162
  Walk through the paths, calculate hashes and return details per path.
163
163
 
164
164
  Spec contains a path selector and a list of hash functions to compute against the paths.
165
- For example:
165
+ For example::
166
+
166
167
  [
167
168
  ("dir", ("sysvol/Windows/", ("exe", "dll", "sys"))),
168
169
  (HashFunc.MD5, HashFunc.SHA1)
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.18.dev6'
16
- __version_tuple__ = version_tuple = (3, 18, 'dev6')
15
+ __version__ = version = '3.18.dev9'
16
+ __version_tuple__ = version_tuple = (3, 18, 'dev9')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: acquire
3
- Version: 3.18.dev6
3
+ Version: 3.18.dev9
4
4
  Summary: A tool to quickly gather forensic artifacts from disk images or a live system into a lightweight container
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -1,3 +1,5 @@
1
+ .git-blame-ignore-revs
2
+ .gitattributes
1
3
  COPYRIGHT
2
4
  LICENSE
3
5
  MANIFEST.in
@@ -59,8 +61,9 @@ tests/test_outputs_zip.py
59
61
  tests/test_plugin.py
60
62
  tests/test_utils.py
61
63
  tests/test_volatile.py
62
- tests/data/private_key.pem
63
- tests/data/public_key.pem
64
- tests/docs/Makefile
65
- tests/docs/conf.py
66
- tests/docs/index.rst
64
+ tests/_data/private_key.pem
65
+ tests/_data/public_key.pem
66
+ tests/_docs/Makefile
67
+ tests/_docs/__init__.py
68
+ tests/_docs/conf.py
69
+ tests/_docs/index.rst
@@ -3,7 +3,7 @@
3
3
 
4
4
  # You can set these variables from the command line, and also
5
5
  # from the environment for the first two.
6
- SPHINXOPTS ?= -jauto
6
+ SPHINXOPTS ?= -jauto -w $(BUILDDIR)/warnings.log --fail-on-warning
7
7
  SPHINXBUILD ?= sphinx-build
8
8
  SOURCEDIR = .
9
9
  BUILDDIR = build
File without changes
@@ -1,3 +1,5 @@
1
+ project = "acquire"
2
+
1
3
  extensions = [
2
4
  "autoapi.extension",
3
5
  "sphinx.ext.autodoc",
@@ -32,3 +34,8 @@ autodoc_typehints = "signature"
32
34
  autodoc_member_order = "groupwise"
33
35
 
34
36
  autosectionlabel_prefix_document = True
37
+
38
+ suppress_warnings = [
39
+ # https://github.com/readthedocs/sphinx-autoapi/issues/285
40
+ "autoapi.python_import_resolution",
41
+ ]
@@ -40,4 +40,4 @@ def mock_target(mock_fs: VirtualFilesystem) -> Target:
40
40
 
41
41
  @pytest.fixture
42
42
  def public_key() -> str:
43
- return Path("tests/data/public_key.pem").read_text()
43
+ return Path("tests/_data/public_key.pem").read_text()
@@ -56,7 +56,7 @@ def test_tar_output_encrypt(mock_fs: VirtualFilesystem, public_key: bytes, tmp_p
56
56
  tar_output.write_entry(entry_name, entry)
57
57
  tar_output.close()
58
58
 
59
- encrypted_stream = EncryptedFile(tar_output.path.open("rb"), Path("tests/data/private_key.pem"))
59
+ encrypted_stream = EncryptedFile(tar_output.path.open("rb"), Path("tests/_data/private_key.pem"))
60
60
  decrypted_path = tmp_path / "decrypted.tar"
61
61
  # Direct streaming is not an option because tarfile needs seek when reading from encrypted files directly
62
62
  Path(decrypted_path).write_bytes(encrypted_stream.read())
@@ -60,7 +60,7 @@ def test_zip_output_encrypt(mock_fs: VirtualFilesystem, public_key: bytes, tmp_p
60
60
  zip_output.write_entry(entry_name, entry)
61
61
  zip_output.close()
62
62
 
63
- encrypted_stream = EncryptedFile(zip_output.path.open("rb"), Path("tests/data/private_key.pem"))
63
+ encrypted_stream = EncryptedFile(zip_output.path.open("rb"), Path("tests/_data/private_key.pem"))
64
64
  decrypted_path = tmp_path / "decrypted.zip"
65
65
  # Direct streaming is not an option because zipfile needs seek when reading from encrypted files directly
66
66
  Path(decrypted_path).write_bytes(encrypted_stream.read())
@@ -55,12 +55,12 @@ deps =
55
55
  sphinx-design
56
56
  furo
57
57
  commands =
58
- make -C tests/docs clean
59
- make -C tests/docs html
58
+ make -C tests/_docs clean
59
+ make -C tests/_docs html
60
60
 
61
61
  [testenv:docs-linkcheck]
62
62
  allowlist_externals = make
63
63
  deps = {[testenv:docs-build]deps}
64
64
  commands =
65
- make -C tests/docs clean
66
- make -C tests/docs linkcheck
65
+ make -C tests/_docs clean
66
+ make -C tests/_docs linkcheck
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes