secator 0.10.1a5__py3-none-any.whl → 0.10.1a7__py3-none-any.whl

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.

secator/celery.py CHANGED
@@ -235,6 +235,8 @@ def mark_runner_started(runner):
235
235
  Returns:
236
236
  list: Runner results
237
237
  """
238
+ if IN_CELERY_WORKER_PROCESS:
239
+ console.print(Info(message=f'Marking runner {runner.unique_name} as started'))
238
240
  runner.started = True
239
241
  # runner.start_time = time()
240
242
  runner.run_hooks('on_start')
@@ -252,17 +254,20 @@ def mark_runner_complete(results, runner):
252
254
  Returns:
253
255
  list: Final results
254
256
  """
257
+ if IN_CELERY_WORKER_PROCESS:
258
+ console.print(Info(message=f'Marking runner {runner.unique_name} as completed'))
255
259
  results = forward_results(results)
256
260
 
257
261
  # If sync mode, don't update the runner as it's already done
258
262
  if runner.sync:
263
+ if IN_CELERY_WORKER_PROCESS:
264
+ console.print(Info(message=f'Runner {runner.unique_name} is in sync mode, skipping final processing'))
259
265
  return results
260
266
 
261
267
  # Run final processing
262
268
  runner.results = results
263
- if not runner.no_process:
264
- runner.mark_duplicates()
265
- runner.results = runner.filter_results()
269
+ # if not runner.no_process:
270
+ # runner.mark_duplicates()
266
271
  runner.log_results()
267
272
  runner.run_hooks('on_end')
268
273
  return runner.results
secator/runners/_base.py CHANGED
@@ -15,8 +15,8 @@ from secator.config import CONFIG
15
15
  from secator.output_types import FINDING_TYPES, OutputType, Progress, Info, Warning, Error, Target, State
16
16
  from secator.report import Report
17
17
  from secator.rich import console, console_stdout
18
- from secator.runners._helpers import (get_task_folder_id, process_extractor, run_extractors)
19
- from secator.utils import (debug, import_dynamic, merge_opts, rich_to_ansi, should_update)
18
+ from secator.runners._helpers import (get_task_folder_id, run_extractors)
19
+ from secator.utils import (debug, import_dynamic, rich_to_ansi, should_update)
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
22
 
@@ -281,6 +281,8 @@ class Runner:
281
281
  # If any errors happened during valid ation, exit
282
282
  if self.errors:
283
283
  yield from self.errors
284
+ if self.no_process:
285
+ return
284
286
  self.log_results()
285
287
  self.run_hooks('on_end')
286
288
  return
@@ -303,14 +305,12 @@ class Runner:
303
305
  yield from self.join_threads()
304
306
  yield error
305
307
 
306
- # Mark duplicates and filter results
307
- if not self.no_process:
308
+ finally:
309
+ if self.no_process:
310
+ return
308
311
  self.mark_duplicates()
309
- self.results = self.filter_results()
310
-
311
- # Finalize run
312
- self.log_results()
313
- self.run_hooks('on_end')
312
+ self.log_results()
313
+ self.run_hooks('on_end')
314
314
 
315
315
  def join_threads(self):
316
316
  """Wait for all running threads to complete."""
@@ -507,6 +507,8 @@ class Runner:
507
507
  task_id=self.celery_result.id
508
508
  )
509
509
  if self.no_poll:
510
+ self.enable_hooks = False
511
+ self.no_process = True
510
512
  return
511
513
  results = CeleryData.iter_results(
512
514
  self.celery_result,
@@ -713,31 +715,6 @@ class Runner:
713
715
  name = self.celery_ids_map.get(task_id, {}).get('full_name')
714
716
  revoke_task(task_id, name)
715
717
 
716
- def filter_results(self):
717
- """Filter runner results using extractors defined in config."""
718
- extractors = self.config.results
719
- results = []
720
- if extractors:
721
- # Keep results based on extractors
722
- opts = merge_opts(self.config.options, self.run_opts)
723
- for extractor in extractors:
724
- tmp = process_extractor(self.results, extractor, ctx=opts)
725
- results.extend(tmp)
726
-
727
- # Keep the field types in results not specified in the extractors.
728
- extract_fields = [e['type'] for e in extractors]
729
- keep_fields = [
730
- _type for _type in FINDING_TYPES
731
- if _type not in extract_fields
732
- ]
733
- results.extend([
734
- item for item in self.results
735
- if item._type in keep_fields
736
- ])
737
- else:
738
- results = self.results
739
- return results
740
-
741
718
  def _convert_item_schema(self, item):
742
719
  """Convert dict item to a secator output type.
743
720
 
secator/runners/scan.py CHANGED
@@ -33,6 +33,7 @@ class Scan(Runner):
33
33
  sigs = []
34
34
  for name, workflow_opts in self.config.workflows.items():
35
35
  run_opts = self.run_opts.copy()
36
+ run_opts['no_poll'] = True
36
37
  opts = merge_opts(scan_opts, workflow_opts, run_opts)
37
38
  config = TemplateLoader(name=f'workflows/{name}')
38
39
  workflow = Workflow(
secator/runners/task.py CHANGED
@@ -6,8 +6,8 @@ from celery import chain
6
6
 
7
7
 
8
8
  class Task(Runner):
9
+
9
10
  default_exporters = CONFIG.tasks.exporters
10
- enable_hooks = False
11
11
 
12
12
  @classmethod
13
13
  def delay(cls, *args, **kwargs):
@@ -37,6 +37,7 @@ class Task(Runner):
37
37
  # Set task output types
38
38
  self.output_types = task_cls.output_types
39
39
  self.enable_duplicate_check = False
40
+ self.enable_hooks = False
40
41
 
41
42
  # Get hooks
42
43
  hooks = self._hooks.get(Task, {})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: secator
3
- Version: 0.10.1a5
3
+ Version: 0.10.1a7
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
@@ -1,6 +1,6 @@
1
1
  secator/.gitignore,sha256=da8MUc3hdb6Mo0WjZu2upn5uZMbXcBGvhdhTQ1L89HI,3093
2
2
  secator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- secator/celery.py,sha256=NNaLjSENWnNTUgSSW8XXni6wlTE_-2ju9dd3Exwk7bE,9663
3
+ secator/celery.py,sha256=xxDdT_m5KIgds3nL26SmvpoOr0ZZA02NhaQvsspmzfs,9985
4
4
  secator/celery_signals.py,sha256=iumfx7tTeoavAbHijBtij0JzeIqElxQldNZtuZmFY_U,4456
5
5
  secator/celery_utils.py,sha256=bW1yzMCjfIiesU4SOVNVuy0I8HukJyh8KmNB4w0woJM,8857
6
6
  secator/cli.py,sha256=3_tTTusW12MCejFgtOeYjiedjrJpyQj_gsCK8FkTMJA,43922
@@ -69,12 +69,12 @@ secator/output_types/user_account.py,sha256=rm10somxyu30JHjj629IkR15Nhahylud_fVO
69
69
  secator/output_types/vulnerability.py,sha256=nF7OT9zGez8sZvLrkhjBOORjVi8hCqfCYUFq3eZ_ywo,2870
70
70
  secator/output_types/warning.py,sha256=47GtmG083GqGPb_R5JDFmARJ9Mqrme58UxwJhgdGPuI,853
71
71
  secator/runners/__init__.py,sha256=EBbOk37vkBy9p8Hhrbi-2VtM_rTwQ3b-0ggTyiD22cE,290
72
- secator/runners/_base.py,sha256=MhjvSUTY7tkNWyxwjMzmt6qA5qCFAlREujkqG_z2xIw,31264
72
+ secator/runners/_base.py,sha256=FMqUix_6GVe5U2OT1jiQ_zbaWEieBBxtZVQfeGZKWpU,30512
73
73
  secator/runners/_helpers.py,sha256=QhJmdmFdu5XSx3LBFf4Q4Hy2EXS6bLGnJUq8G7C6f68,2410
74
74
  secator/runners/celery.py,sha256=bqvDTTdoHiGRCt0FRvlgFHQ_nsjKMP5P0PzGbwfCj_0,425
75
75
  secator/runners/command.py,sha256=9AvjZgSXctP8D-ffPCtlnXEiGqTeaD2wVGhiGNuROb0,25469
76
- secator/runners/scan.py,sha256=9FjDsFmQrAWfA6crWkCJaVqG3-t2HBVjcsv4UQp_9b8,1500
77
- secator/runners/task.py,sha256=59jPXKSxFtSNXsm6VTAz8li2jxpM0Bkcgcn77HIDCrY,1869
76
+ secator/runners/scan.py,sha256=jKguiqlH4jw0uRGMN6GNsqgexw9T0HBIL7_4mIUo3xA,1530
77
+ secator/runners/task.py,sha256=RXVnNLPflFC7g9u6M8u6cnB7MYVyRALmQsjCCBtk7kA,1876
78
78
  secator/runners/workflow.py,sha256=qldnRm7r_SCvRHJFkZ7eaml62RZkOeCdT18PU357grY,2982
79
79
  secator/scans/__init__.py,sha256=s4Ojsk5CWwyWqHu_A4zaXUL5Hm5L5nCmCHZn7wdD3Io,623
80
80
  secator/serializers/__init__.py,sha256=OP5cmFl77ovgSCW_IDcZ21St2mUt5UK4QHfrsK2KvH8,248
@@ -110,8 +110,8 @@ secator/tasks/searchsploit.py,sha256=gvtLZbL2hzAZ07Cf0cSj2Qs0GvWK94XyHvoPFsetXu8
110
110
  secator/tasks/subfinder.py,sha256=C6W5NnXT92OUB1aSS9IYseqdI3wDMAz70TOEl8X-o3U,1213
111
111
  secator/tasks/wpscan.py,sha256=036ywiEqZfX_Bt071U7qIm7bi6pNk7vodflmuslJurA,5550
112
112
  secator/workflows/__init__.py,sha256=R_TTyjg9f2Ph2_LYiF0lL07IjTrfRE_zqJzy-N7_WCk,675
113
- secator-0.10.1a5.dist-info/METADATA,sha256=oZnZtXatOa_oqR8f816Hc-0-Re2uouxu0mgHa-vLNyk,14726
114
- secator-0.10.1a5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
115
- secator-0.10.1a5.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
116
- secator-0.10.1a5.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
117
- secator-0.10.1a5.dist-info/RECORD,,
113
+ secator-0.10.1a7.dist-info/METADATA,sha256=dhleA9gO-4uZqLlfteBXhfVKSMIZASymP9wyu8QatkM,14726
114
+ secator-0.10.1a7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
115
+ secator-0.10.1a7.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
116
+ secator-0.10.1a7.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
117
+ secator-0.10.1a7.dist-info/RECORD,,