dissect.cobaltstrike 1.2.1.dev1__tar.gz → 1.2.1.dev3__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 (66) hide show
  1. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/PKG-INFO +1 -1
  2. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/_version.py +2 -2
  3. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/beacon.py +1 -1
  4. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/conftest.py +8 -17
  5. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_beacon.py +8 -8
  6. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tox.ini +1 -1
  7. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/.github/workflows/dissect-ci.yml +0 -0
  8. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/.gitignore +0 -0
  9. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/.lfs-assets-id +0 -0
  10. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/.pre-commit-config.yaml +0 -0
  11. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/.readthedocs.yml +0 -0
  12. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/LICENSE +0 -0
  13. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/README.rst +0 -0
  14. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/codecov.yml +0 -0
  15. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/__init__.py +0 -0
  16. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/artifact.py +0 -0
  17. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/c2.py +0 -0
  18. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/c2profile.lark +0 -0
  19. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/c2profile.py +0 -0
  20. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/c_c2.py +0 -0
  21. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/client.py +0 -0
  22. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/pcap.py +0 -0
  23. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/pe.py +0 -0
  24. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/utils.py +0 -0
  25. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/version.py +0 -0
  26. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/dissect/cobaltstrike/xordecode.py +0 -0
  27. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/Makefile +0 -0
  28. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/c2profile-grammar.rst +0 -0
  29. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/codespell-ignore-words.txt +0 -0
  30. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/conf.py +0 -0
  31. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/examples.rst +0 -0
  32. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/images/beacon-client.png +0 -0
  33. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/images/teamserver-echoclient.png +0 -0
  34. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/images/teamserver_ls.png +0 -0
  35. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/images/vt-cobaltstrike-43-zip.png +0 -0
  36. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/index.rst +0 -0
  37. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/installation.rst +0 -0
  38. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/license.rst +0 -0
  39. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/scripts/checksum8-accesslogs.rst +0 -0
  40. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/scripts/dump_beacon_keys.rst +0 -0
  41. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/scripts/example_client.rst +0 -0
  42. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/scripts/index.rst +0 -0
  43. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/structures/c2_def.rst +0 -0
  44. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/structures/cs_def.rst +0 -0
  45. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/structures/index.rst +0 -0
  46. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/structures/pe_def.rst +0 -0
  47. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tools/beacon-artifact.rst +0 -0
  48. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tools/beacon-client.rst +0 -0
  49. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tools/beacon-dump.rst +0 -0
  50. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tools/beacon-pcap.rst +0 -0
  51. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tools/beacon-xordecode.rst +0 -0
  52. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tools/c2profile-dump.rst +0 -0
  53. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tutorials/decrypt_cobaltstrike_pcaps.rst +0 -0
  54. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tutorials/index.rst +0 -0
  55. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/docs/tutorials/minimal_beacon_client.rst +0 -0
  56. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/pyproject.toml +0 -0
  57. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/scripts/checksum8-accesslogs.py +0 -0
  58. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/scripts/dump_beacon_keys.py +0 -0
  59. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/scripts/example_client.py +0 -0
  60. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_c2.py +0 -0
  61. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_c2profile.py +0 -0
  62. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_client.py +0 -0
  63. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_pe.py +0 -0
  64. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_utils.py +0 -0
  65. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_version.py +0 -0
  66. {dissect_cobaltstrike-1.2.1.dev1 → dissect_cobaltstrike-1.2.1.dev3}/tests/test_xordecode.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dissect.cobaltstrike
3
- Version: 1.2.1.dev1
3
+ Version: 1.2.1.dev3
4
4
  Summary: a Python library for dissecting Cobalt Strike related data
5
5
  Project-URL: Homepage, https://github.com/fox-it/dissect.cobaltstrike
6
6
  Project-URL: Documentation, https://dissect-cobaltstrike.readthedocs.io/
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.2.1.dev1'
16
- __version_tuple__ = version_tuple = (1, 2, 1, 'dev1')
15
+ __version__ = version = '1.2.1.dev3'
16
+ __version_tuple__ = version_tuple = (1, 2, 1, 'dev3')
@@ -794,7 +794,7 @@ class BeaconConfig:
794
794
  for setting in self.settings_tuple:
795
795
  val = setting.value
796
796
  if index_type == "name":
797
- key = setting.index.name or str(setting.index)
797
+ key = setting.index.name or str(setting.index).replace(".", "_")
798
798
  elif index_type == "const":
799
799
  key = setting.index.value
800
800
  else:
@@ -1,6 +1,5 @@
1
1
  import io
2
2
  import zipfile
3
- from contextlib import contextmanager
4
3
  from pathlib import Path
5
4
 
6
5
  import pytest
@@ -31,15 +30,14 @@ def generate_beacon_file_fixture(filename):
31
30
  beacon_zip_path = testpath / "beacons" / filename
32
31
  if not beacon_zip_path.exists():
33
32
  pytest.skip(f"Beacon {beacon_zip_path!r} not found")
34
- with unzip_beacon_as_fh(beacon_zip_path) as beacon_file:
35
- # ZipExtFile.seek() raises io.UnsupportedOperation on Python 3.6
36
- try:
37
- beacon_file.seek(0)
38
- yield beacon_file
39
- except io.UnsupportedOperation:
40
- # fallback to BytesIO
41
- with io.BytesIO(beacon_file.read()) as fh:
42
- yield fh
33
+
34
+ # Extract the beacon file from the zip archive
35
+ with zipfile.ZipFile(beacon_zip_path) as zf:
36
+ data = zf.read(beacon_zip_path.stem, pwd=b"dissect.cobaltstrike")
37
+
38
+ # Return the beacon file as a BytesIO object
39
+ with io.BytesIO(data) as fh:
40
+ yield fh
43
41
 
44
42
  return my_fixture
45
43
 
@@ -86,13 +84,6 @@ for name, filename in beacons.items():
86
84
  inject_beacon_bconfig_fixture(name)
87
85
 
88
86
 
89
- @contextmanager
90
- def unzip_beacon_as_fh(zip_file, pwd=b"dissect.cobaltstrike"):
91
- """Return file object of beacon from zipfile"""
92
- with zipfile.ZipFile(zip_file) as zf:
93
- yield zf.open(zip_file.stem, pwd=pwd)
94
-
95
-
96
87
  @pytest.fixture()
97
88
  def beacon_x64_config_block(beacon_x64_file):
98
89
  return beacon.BeaconConfig.from_file(beacon_x64_file).config_block
@@ -314,12 +314,12 @@ def test_beacon_domains_punycode(punycode_beacon_file):
314
314
 
315
315
 
316
316
  def test_beacon_setting_unknown_enum():
317
- setting = (
318
- beacon.cs_struct.uint16(6969).dumps(),
319
- beacon.SettingsType.TYPE_PTR.dumps(),
320
- beacon.cs_struct.uint16(3).dumps(),
321
- b"foo",
322
- )
323
- config = beacon.BeaconConfig(b"".join(setting))
317
+ data = beacon.Setting(
318
+ index=beacon.BeaconSetting(6969),
319
+ type=beacon.SettingsType.TYPE_PTR,
320
+ length=3,
321
+ value=b"foo",
322
+ ).dumps()
323
+ config = beacon.BeaconConfig(data)
324
324
  assert None not in config.settings
325
- assert dict(config.settings) == {"BeaconSetting.6969": b"foo"}
325
+ assert dict(config.settings) == {"BeaconSetting_6969": b"foo"}
@@ -4,7 +4,7 @@ envlist = py3,pypy3
4
4
  [testenv]
5
5
  usedevelop = true
6
6
  extras = test
7
- commands = pytest --cov=dissect.cobaltstrike --cov-context=test --cov-report=xml {posargs}
7
+ commands = pytest -v --cov=dissect.cobaltstrike --cov-context=test --cov-report=xml {posargs}
8
8
 
9
9
  [testenv:docs]
10
10
  extras = docs