secator 0.3.5__tar.gz → 0.3.6__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.

Potentially problematic release.


This version of secator might be problematic. Click here for more details.

Files changed (161) hide show
  1. {secator-0.3.5 → secator-0.3.6}/CHANGELOG.md +8 -0
  2. {secator-0.3.5 → secator-0.3.6}/PKG-INFO +1 -1
  3. {secator-0.3.5 → secator-0.3.6}/pyproject.toml +1 -1
  4. {secator-0.3.5 → secator-0.3.6}/secator/celery.py +2 -2
  5. {secator-0.3.5 → secator-0.3.6}/secator/decorators.py +16 -9
  6. {secator-0.3.5 → secator-0.3.6}/secator/runners/_base.py +1 -2
  7. {secator-0.3.5 → secator-0.3.6}/secator/runners/scan.py +0 -1
  8. {secator-0.3.5 → secator-0.3.6}/secator/runners/task.py +0 -1
  9. {secator-0.3.5 → secator-0.3.6}/secator/runners/workflow.py +0 -1
  10. {secator-0.3.5 → secator-0.3.6}/secator/tasks/searchsploit.py +0 -1
  11. {secator-0.3.5 → secator-0.3.6}/.flake8 +0 -0
  12. {secator-0.3.5 → secator-0.3.6}/.gitignore +0 -0
  13. {secator-0.3.5 → secator-0.3.6}/CONTRIBUTING.md +0 -0
  14. {secator-0.3.5 → secator-0.3.6}/Dockerfile +0 -0
  15. {secator-0.3.5 → secator-0.3.6}/LICENSE +0 -0
  16. {secator-0.3.5 → secator-0.3.6}/README.md +0 -0
  17. {secator-0.3.5 → secator-0.3.6}/SECURITY.md +0 -0
  18. {secator-0.3.5 → secator-0.3.6}/cloudbuild.yaml +0 -0
  19. {secator-0.3.5 → secator-0.3.6}/images/aliases.cast +0 -0
  20. {secator-0.3.5 → secator-0.3.6}/images/aliases.gif +0 -0
  21. {secator-0.3.5 → secator-0.3.6}/images/demo.cast +0 -0
  22. {secator-0.3.5 → secator-0.3.6}/images/demo.gif +0 -0
  23. {secator-0.3.5 → secator-0.3.6}/images/fmt.cast +0 -0
  24. {secator-0.3.5 → secator-0.3.6}/images/fmt.gif +0 -0
  25. {secator-0.3.5 → secator-0.3.6}/images/help.png +0 -0
  26. {secator-0.3.5 → secator-0.3.6}/images/input.cast +0 -0
  27. {secator-0.3.5 → secator-0.3.6}/images/input.gif +0 -0
  28. {secator-0.3.5 → secator-0.3.6}/images/pipe.cast +0 -0
  29. {secator-0.3.5 → secator-0.3.6}/images/pipe.gif +0 -0
  30. {secator-0.3.5 → secator-0.3.6}/images/short_demo.cast +0 -0
  31. {secator-0.3.5 → secator-0.3.6}/images/short_demo.gif +0 -0
  32. {secator-0.3.5 → secator-0.3.6}/scripts/download_cves.sh +0 -0
  33. {secator-0.3.5 → secator-0.3.6}/scripts/install.sh +0 -0
  34. {secator-0.3.5 → secator-0.3.6}/scripts/install_asciinema.sh +0 -0
  35. {secator-0.3.5 → secator-0.3.6}/scripts/install_go.sh +0 -0
  36. {secator-0.3.5 → secator-0.3.6}/scripts/install_ruby.sh +0 -0
  37. {secator-0.3.5 → secator-0.3.6}/scripts/msf/exploit_cve.rc +0 -0
  38. {secator-0.3.5 → secator-0.3.6}/scripts/msf/ftp_anonymous.rc +0 -0
  39. {secator-0.3.5 → secator-0.3.6}/scripts/msf/ftp_version.rc +0 -0
  40. {secator-0.3.5 → secator-0.3.6}/scripts/msf/ftp_vsftpd_234_backdoor.rc +0 -0
  41. {secator-0.3.5 → secator-0.3.6}/scripts/msf/redis.rc +0 -0
  42. {secator-0.3.5 → secator-0.3.6}/scripts/msfinstall.sh +0 -0
  43. {secator-0.3.5 → secator-0.3.6}/scripts/stories/STORY.md +0 -0
  44. {secator-0.3.5 → secator-0.3.6}/scripts/stories/aliases.sh +0 -0
  45. {secator-0.3.5 → secator-0.3.6}/scripts/stories/demo.sh +0 -0
  46. {secator-0.3.5 → secator-0.3.6}/scripts/stories/fmt.sh +0 -0
  47. {secator-0.3.5 → secator-0.3.6}/scripts/stories/input.sh +0 -0
  48. {secator-0.3.5 → secator-0.3.6}/scripts/stories/pipe.sh +0 -0
  49. {secator-0.3.5 → secator-0.3.6}/scripts/stories/short_demo.sh +0 -0
  50. {secator-0.3.5 → secator-0.3.6}/secator/.gitignore +0 -0
  51. {secator-0.3.5 → secator-0.3.6}/secator/__init__.py +0 -0
  52. {secator-0.3.5 → secator-0.3.6}/secator/cli.py +0 -0
  53. {secator-0.3.5 → secator-0.3.6}/secator/config.py +0 -0
  54. {secator-0.3.5 → secator-0.3.6}/secator/configs/__init__.py +0 -0
  55. {secator-0.3.5 → secator-0.3.6}/secator/configs/profiles/__init__.py +0 -0
  56. {secator-0.3.5 → secator-0.3.6}/secator/configs/profiles/aggressive.yaml +0 -0
  57. {secator-0.3.5 → secator-0.3.6}/secator/configs/profiles/default.yaml +0 -0
  58. {secator-0.3.5 → secator-0.3.6}/secator/configs/profiles/stealth.yaml +0 -0
  59. {secator-0.3.5 → secator-0.3.6}/secator/configs/scans/__init__.py +0 -0
  60. {secator-0.3.5 → secator-0.3.6}/secator/configs/scans/domain.yaml +0 -0
  61. {secator-0.3.5 → secator-0.3.6}/secator/configs/scans/host.yaml +0 -0
  62. {secator-0.3.5 → secator-0.3.6}/secator/configs/scans/network.yaml +0 -0
  63. {secator-0.3.5 → secator-0.3.6}/secator/configs/scans/subdomain.yaml +0 -0
  64. {secator-0.3.5 → secator-0.3.6}/secator/configs/scans/url.yaml +0 -0
  65. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/__init__.py +0 -0
  66. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/cidr_recon.yaml +0 -0
  67. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/code_scan.yaml +0 -0
  68. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/host_recon.yaml +0 -0
  69. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/port_scan.yaml +0 -0
  70. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/subdomain_recon.yaml +0 -0
  71. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/url_crawl.yaml +0 -0
  72. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/url_dirsearch.yaml +0 -0
  73. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/url_fuzz.yaml +0 -0
  74. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/url_nuclei.yaml +0 -0
  75. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/url_vuln.yaml +0 -0
  76. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/user_hunt.yaml +0 -0
  77. {secator-0.3.5 → secator-0.3.6}/secator/configs/workflows/wordpress.yaml +0 -0
  78. {secator-0.3.5 → secator-0.3.6}/secator/definitions.py +0 -0
  79. {secator-0.3.5 → secator-0.3.6}/secator/exporters/__init__.py +0 -0
  80. {secator-0.3.5 → secator-0.3.6}/secator/exporters/_base.py +0 -0
  81. {secator-0.3.5 → secator-0.3.6}/secator/exporters/csv.py +0 -0
  82. {secator-0.3.5 → secator-0.3.6}/secator/exporters/gdrive.py +0 -0
  83. {secator-0.3.5 → secator-0.3.6}/secator/exporters/json.py +0 -0
  84. {secator-0.3.5 → secator-0.3.6}/secator/exporters/table.py +0 -0
  85. {secator-0.3.5 → secator-0.3.6}/secator/exporters/txt.py +0 -0
  86. {secator-0.3.5 → secator-0.3.6}/secator/hooks/__init__.py +0 -0
  87. {secator-0.3.5 → secator-0.3.6}/secator/hooks/mongodb.py +0 -0
  88. {secator-0.3.5 → secator-0.3.6}/secator/installer.py +0 -0
  89. {secator-0.3.5 → secator-0.3.6}/secator/output_types/__init__.py +0 -0
  90. {secator-0.3.5 → secator-0.3.6}/secator/output_types/_base.py +0 -0
  91. {secator-0.3.5 → secator-0.3.6}/secator/output_types/exploit.py +0 -0
  92. {secator-0.3.5 → secator-0.3.6}/secator/output_types/ip.py +0 -0
  93. {secator-0.3.5 → secator-0.3.6}/secator/output_types/port.py +0 -0
  94. {secator-0.3.5 → secator-0.3.6}/secator/output_types/progress.py +0 -0
  95. {secator-0.3.5 → secator-0.3.6}/secator/output_types/record.py +0 -0
  96. {secator-0.3.5 → secator-0.3.6}/secator/output_types/subdomain.py +0 -0
  97. {secator-0.3.5 → secator-0.3.6}/secator/output_types/tag.py +0 -0
  98. {secator-0.3.5 → secator-0.3.6}/secator/output_types/target.py +0 -0
  99. {secator-0.3.5 → secator-0.3.6}/secator/output_types/url.py +0 -0
  100. {secator-0.3.5 → secator-0.3.6}/secator/output_types/user_account.py +0 -0
  101. {secator-0.3.5 → secator-0.3.6}/secator/output_types/vulnerability.py +0 -0
  102. {secator-0.3.5 → secator-0.3.6}/secator/report.py +0 -0
  103. {secator-0.3.5 → secator-0.3.6}/secator/rich.py +0 -0
  104. {secator-0.3.5 → secator-0.3.6}/secator/runners/__init__.py +0 -0
  105. {secator-0.3.5 → secator-0.3.6}/secator/runners/_helpers.py +0 -0
  106. {secator-0.3.5 → secator-0.3.6}/secator/runners/command.py +0 -0
  107. {secator-0.3.5 → secator-0.3.6}/secator/serializers/__init__.py +0 -0
  108. {secator-0.3.5 → secator-0.3.6}/secator/serializers/dataclass.py +0 -0
  109. {secator-0.3.5 → secator-0.3.6}/secator/serializers/json.py +0 -0
  110. {secator-0.3.5 → secator-0.3.6}/secator/serializers/regex.py +0 -0
  111. {secator-0.3.5 → secator-0.3.6}/secator/tasks/__init__.py +0 -0
  112. {secator-0.3.5 → secator-0.3.6}/secator/tasks/_categories.py +0 -0
  113. {secator-0.3.5 → secator-0.3.6}/secator/tasks/cariddi.py +0 -0
  114. {secator-0.3.5 → secator-0.3.6}/secator/tasks/dalfox.py +0 -0
  115. {secator-0.3.5 → secator-0.3.6}/secator/tasks/dirsearch.py +0 -0
  116. {secator-0.3.5 → secator-0.3.6}/secator/tasks/dnsx.py +0 -0
  117. {secator-0.3.5 → secator-0.3.6}/secator/tasks/dnsxbrute.py +0 -0
  118. {secator-0.3.5 → secator-0.3.6}/secator/tasks/feroxbuster.py +0 -0
  119. {secator-0.3.5 → secator-0.3.6}/secator/tasks/ffuf.py +0 -0
  120. {secator-0.3.5 → secator-0.3.6}/secator/tasks/fping.py +0 -0
  121. {secator-0.3.5 → secator-0.3.6}/secator/tasks/gau.py +0 -0
  122. {secator-0.3.5 → secator-0.3.6}/secator/tasks/gf.py +0 -0
  123. {secator-0.3.5 → secator-0.3.6}/secator/tasks/gospider.py +0 -0
  124. {secator-0.3.5 → secator-0.3.6}/secator/tasks/grype.py +0 -0
  125. {secator-0.3.5 → secator-0.3.6}/secator/tasks/h8mail.py +0 -0
  126. {secator-0.3.5 → secator-0.3.6}/secator/tasks/httpx.py +0 -0
  127. {secator-0.3.5 → secator-0.3.6}/secator/tasks/katana.py +0 -0
  128. {secator-0.3.5 → secator-0.3.6}/secator/tasks/maigret.py +0 -0
  129. {secator-0.3.5 → secator-0.3.6}/secator/tasks/mapcidr.py +0 -0
  130. {secator-0.3.5 → secator-0.3.6}/secator/tasks/msfconsole.py +0 -0
  131. {secator-0.3.5 → secator-0.3.6}/secator/tasks/naabu.py +0 -0
  132. {secator-0.3.5 → secator-0.3.6}/secator/tasks/nmap.py +0 -0
  133. {secator-0.3.5 → secator-0.3.6}/secator/tasks/nuclei.py +0 -0
  134. {secator-0.3.5 → secator-0.3.6}/secator/tasks/subfinder.py +0 -0
  135. {secator-0.3.5 → secator-0.3.6}/secator/tasks/wpscan.py +0 -0
  136. {secator-0.3.5 → secator-0.3.6}/secator/utils.py +0 -0
  137. {secator-0.3.5 → secator-0.3.6}/secator/utils_test.py +0 -0
  138. {secator-0.3.5 → secator-0.3.6}/tests/__init__.py +0 -0
  139. {secator-0.3.5 → secator-0.3.6}/tests/fixtures/h8mail_breach.txt +0 -0
  140. {secator-0.3.5 → secator-0.3.6}/tests/fixtures/msfconsole_input.rc +0 -0
  141. {secator-0.3.5 → secator-0.3.6}/tests/fixtures/nmap_output.xml +0 -0
  142. {secator-0.3.5 → secator-0.3.6}/tests/integration/__init__.py +0 -0
  143. {secator-0.3.5 → secator-0.3.6}/tests/integration/inputs.py +0 -0
  144. {secator-0.3.5 → secator-0.3.6}/tests/integration/outputs.py +0 -0
  145. {secator-0.3.5 → secator-0.3.6}/tests/integration/setup.sh +0 -0
  146. {secator-0.3.5 → secator-0.3.6}/tests/integration/teardown.sh +0 -0
  147. {secator-0.3.5 → secator-0.3.6}/tests/integration/test_scans.py +0 -0
  148. {secator-0.3.5 → secator-0.3.6}/tests/integration/test_tasks.py +0 -0
  149. {secator-0.3.5 → secator-0.3.6}/tests/integration/test_workflows.py +0 -0
  150. {secator-0.3.5 → secator-0.3.6}/tests/integration/wordlist.txt +0 -0
  151. {secator-0.3.5 → secator-0.3.6}/tests/integration/wordlist_dns.txt +0 -0
  152. {secator-0.3.5 → secator-0.3.6}/tests/integration/wordpress_toolbox/Dockerfile +0 -0
  153. {secator-0.3.5 → secator-0.3.6}/tests/integration/wordpress_toolbox/Makefile +0 -0
  154. {secator-0.3.5 → secator-0.3.6}/tests/performance/__init__.py +0 -0
  155. {secator-0.3.5 → secator-0.3.6}/tests/performance/loadtester.py +0 -0
  156. {secator-0.3.5 → secator-0.3.6}/tests/unit/__init__.py +0 -0
  157. {secator-0.3.5 → secator-0.3.6}/tests/unit/test_celery.py +0 -0
  158. {secator-0.3.5 → secator-0.3.6}/tests/unit/test_scans.py +0 -0
  159. {secator-0.3.5 → secator-0.3.6}/tests/unit/test_serializers.py +0 -0
  160. {secator-0.3.5 → secator-0.3.6}/tests/unit/test_tasks.py +0 -0
  161. {secator-0.3.5 → secator-0.3.6}/tests/unit/test_workflows.py +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.3.6](https://github.com/freelabz/secator/compare/v0.3.5...v0.3.6) (2024-04-17)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * broken reports folder on remote workers ([#307](https://github.com/freelabz/secator/issues/307)) ([9a7a1f1](https://github.com/freelabz/secator/commit/9a7a1f1c449c688701b02be66e98d3434073bbb0))
9
+ * searchsploit install ([#306](https://github.com/freelabz/secator/issues/306)) ([040cfaf](https://github.com/freelabz/secator/commit/040cfaf6968ae120241fdd6a74a9a6cd5fa0631d))
10
+
3
11
  ## [0.3.5](https://github.com/freelabz/secator/compare/v0.3.4...v0.3.5) (2024-04-17)
4
12
 
5
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: secator
3
- Version: 0.3.5
3
+ Version: 0.3.6
4
4
  Summary: The pentester's swiss knife.
5
5
  Project-URL: Homepage, https://github.com/freelabz/secator
6
6
  Project-URL: Issues, https://github.com/freelabz/secator/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "secator"
7
- version = "0.3.5"
7
+ version = "0.3.6"
8
8
  authors = [{ name = "FreeLabz", email = "sales@freelabz.com" }]
9
9
  readme = "README.md"
10
10
  description = "The pentester's swiss knife."
@@ -417,6 +417,6 @@ def is_celery_worker_alive():
417
417
  result = bool(result)
418
418
  if result:
419
419
  console.print('Celery worker is alive !', style='bold green')
420
- # else:
421
- # console.print('No Celery worker alive.', style='bold red')
420
+ else:
421
+ console.print('No Celery worker alive.', style='bold orange1')
422
422
  return result
@@ -24,7 +24,6 @@ RUNNER_OPTS = {
24
24
 
25
25
  RUNNER_GLOBAL_OPTS = {
26
26
  'sync': {'is_flag': True, 'help': 'Run tasks synchronously (automatic if no worker is alive)'},
27
- 'worker': {'is_flag': True, 'help': 'Run tasks in worker (automatic if worker is alive)'},
28
27
  'proxy': {'type': str, 'help': 'HTTP proxy'},
29
28
  'driver': {'type': str, 'help': 'Export real-time results. E.g: "mongodb"'}
30
29
  # 'debug': {'type': int, 'default': 0, 'help': 'Debug mode'},
@@ -264,7 +263,6 @@ def register_runner(cli_endpoint, config):
264
263
  def func(ctx, **opts):
265
264
  opts.update(fmt_opts)
266
265
  sync = opts['sync']
267
- worker = opts['worker']
268
266
  # debug = opts['debug']
269
267
  ws = opts.pop('workspace')
270
268
  driver = opts.pop('driver', '')
@@ -275,13 +273,22 @@ def register_runner(cli_endpoint, config):
275
273
  # opts.update(unknown_opts)
276
274
  targets = opts.pop(input_type)
277
275
  targets = expand_input(targets)
278
- if sync or show or not ADDONS_ENABLED['worker']:
276
+ if sync or show:
279
277
  sync = True
280
- elif worker:
281
- sync = False
282
- else: # automatically run in worker if it's alive
278
+ else:
283
279
  from secator.celery import is_celery_worker_alive
284
- sync = not is_celery_worker_alive()
280
+ worker_alive = is_celery_worker_alive()
281
+ if not worker_alive:
282
+ sync = True
283
+ else:
284
+ sync = False
285
+ from secator.definitions import CELERY_BROKER_URL, CELERY_RESULT_BACKEND
286
+ broker_protocol = CELERY_BROKER_URL.split('://')[0]
287
+ backend_protocol = CELERY_RESULT_BACKEND.split('://')[0]
288
+ if CELERY_BROKER_URL:
289
+ if (broker_protocol == 'redis' or backend_protocol == 'redis') and not ADDONS_ENABLED['redis']:
290
+ _get_rich_console().print('[bold red]Missing `redis` addon: please run `secator install addons redis`[/].')
291
+ sys.exit(1)
285
292
  opts['sync'] = sync
286
293
  opts.update({
287
294
  'print_item': not sync,
@@ -293,8 +300,8 @@ def register_runner(cli_endpoint, config):
293
300
  # Build hooks from driver name
294
301
  hooks = {}
295
302
  if driver == 'mongodb':
296
- if not ADDONS_ENABLED['mongo']:
297
- _get_rich_console().print('[bold red]Missing MongoDB dependencies: please run `secator install addons mongodb`[/].')
303
+ if not ADDONS_ENABLED['mongodb']:
304
+ _get_rich_console().print('[bold red]Missing `mongodb` addon: please run `secator install addons mongodb`[/].')
298
305
  sys.exit(1)
299
306
  from secator.hooks.mongodb import MONGODB_HOOKS
300
307
  hooks = MONGODB_HOOKS
@@ -111,8 +111,7 @@ class Runner:
111
111
  # Determine report folder
112
112
  default_reports_folder_base = f'{REPORTS_FOLDER}/{self.workspace_name}/{self.config.type}s'
113
113
  _id = get_task_folder_id(default_reports_folder_base)
114
- default_report_folder = f'{default_reports_folder_base}/{_id}'
115
- self.reports_folder = run_opts.get('reports_folder') or default_report_folder
114
+ self.reports_folder = f'{default_reports_folder_base}/{_id}'
116
115
 
117
116
  # Make reports folders
118
117
  os.makedirs(self.reports_folder, exist_ok=True)
@@ -44,7 +44,6 @@ class Scan(Runner):
44
44
 
45
45
  # Workflow opts
46
46
  run_opts = self.run_opts.copy()
47
- run_opts['reports_folder'] = self.reports_folder
48
47
  fmt_opts = {
49
48
  'json': run_opts.get('json', False),
50
49
  'print_item': False,
@@ -52,7 +52,6 @@ class Task(Runner):
52
52
  hooks = {task_cls: self.hooks}
53
53
  run_opts['hooks'] = hooks
54
54
  run_opts['context'] = self.context
55
- run_opts['reports_folder'] = self.reports_folder
56
55
 
57
56
  # Run task
58
57
  if self.sync:
@@ -47,7 +47,6 @@ class Workflow(Runner):
47
47
 
48
48
  # Construct run opts
49
49
  task_run_opts['hooks'] = self._hooks.get(Task, {})
50
- task_run_opts['reports_folder'] = self.reports_folder
51
50
  task_run_opts.update(task_fmt_opts)
52
51
 
53
52
  # Build Celery workflow
@@ -28,7 +28,6 @@ class searchsploit(Command):
28
28
  }
29
29
  }
30
30
  install_cmd = 'sudo git clone https://gitlab.com/exploit-database/exploitdb.git /opt/exploitdb || true && sudo ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit' # noqa: E501
31
- install_github_handle = 'rad10/SearchSploit.py'
32
31
  proxychains = False
33
32
  proxy_socks5 = False
34
33
  proxy_http = False
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes