secator 0.6.0__py3-none-any.whl → 0.8.0__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 +160 -185
- secator/celery_utils.py +268 -0
- secator/cli.py +427 -176
- secator/config.py +114 -68
- secator/configs/workflows/host_recon.yaml +5 -3
- secator/configs/workflows/port_scan.yaml +7 -3
- secator/configs/workflows/subdomain_recon.yaml +2 -2
- secator/configs/workflows/url_bypass.yaml +10 -0
- secator/configs/workflows/url_dirsearch.yaml +1 -1
- secator/configs/workflows/url_vuln.yaml +1 -1
- secator/decorators.py +170 -92
- secator/definitions.py +11 -4
- secator/exporters/__init__.py +7 -5
- secator/exporters/console.py +10 -0
- secator/exporters/csv.py +27 -19
- secator/exporters/gdrive.py +16 -11
- secator/exporters/json.py +3 -1
- secator/exporters/table.py +30 -2
- secator/exporters/txt.py +20 -16
- secator/hooks/gcs.py +53 -0
- secator/hooks/mongodb.py +53 -27
- secator/installer.py +277 -60
- secator/output_types/__init__.py +29 -11
- secator/output_types/_base.py +11 -1
- secator/output_types/error.py +36 -0
- secator/output_types/exploit.py +12 -8
- secator/output_types/info.py +24 -0
- secator/output_types/ip.py +8 -1
- secator/output_types/port.py +9 -2
- secator/output_types/progress.py +5 -0
- secator/output_types/record.py +5 -3
- secator/output_types/stat.py +33 -0
- secator/output_types/subdomain.py +1 -1
- secator/output_types/tag.py +8 -6
- secator/output_types/target.py +2 -2
- secator/output_types/url.py +14 -11
- secator/output_types/user_account.py +6 -6
- secator/output_types/vulnerability.py +8 -6
- secator/output_types/warning.py +24 -0
- secator/report.py +56 -23
- secator/rich.py +44 -39
- secator/runners/_base.py +629 -638
- secator/runners/_helpers.py +5 -91
- secator/runners/celery.py +18 -0
- secator/runners/command.py +404 -214
- secator/runners/scan.py +8 -24
- secator/runners/task.py +21 -55
- secator/runners/workflow.py +41 -40
- secator/scans/__init__.py +28 -0
- secator/serializers/dataclass.py +6 -0
- secator/serializers/json.py +10 -5
- secator/serializers/regex.py +12 -4
- secator/tasks/_categories.py +147 -42
- secator/tasks/bbot.py +295 -0
- secator/tasks/bup.py +99 -0
- secator/tasks/cariddi.py +38 -49
- secator/tasks/dalfox.py +3 -0
- secator/tasks/dirsearch.py +14 -25
- secator/tasks/dnsx.py +49 -30
- secator/tasks/dnsxbrute.py +4 -1
- secator/tasks/feroxbuster.py +10 -20
- secator/tasks/ffuf.py +3 -2
- secator/tasks/fping.py +4 -4
- secator/tasks/gau.py +5 -0
- secator/tasks/gf.py +2 -2
- secator/tasks/gospider.py +4 -0
- secator/tasks/grype.py +11 -13
- secator/tasks/h8mail.py +32 -42
- secator/tasks/httpx.py +58 -21
- secator/tasks/katana.py +19 -23
- secator/tasks/maigret.py +27 -25
- secator/tasks/mapcidr.py +2 -3
- secator/tasks/msfconsole.py +22 -19
- secator/tasks/naabu.py +18 -2
- secator/tasks/nmap.py +82 -55
- secator/tasks/nuclei.py +13 -3
- secator/tasks/searchsploit.py +26 -11
- secator/tasks/subfinder.py +5 -1
- secator/tasks/wpscan.py +91 -94
- secator/template.py +61 -45
- secator/thread.py +24 -0
- secator/utils.py +417 -78
- secator/utils_test.py +48 -23
- secator/workflows/__init__.py +28 -0
- {secator-0.6.0.dist-info → secator-0.8.0.dist-info}/METADATA +59 -48
- secator-0.8.0.dist-info/RECORD +115 -0
- {secator-0.6.0.dist-info → secator-0.8.0.dist-info}/WHEEL +1 -1
- secator-0.6.0.dist-info/RECORD +0 -101
- {secator-0.6.0.dist-info → secator-0.8.0.dist-info}/entry_points.txt +0 -0
- {secator-0.6.0.dist-info → secator-0.8.0.dist-info}/licenses/LICENSE +0 -0
secator/utils_test.py
CHANGED
|
@@ -6,12 +6,13 @@ import unittest.mock
|
|
|
6
6
|
|
|
7
7
|
from fp.fp import FreeProxy
|
|
8
8
|
|
|
9
|
-
from secator.definitions import (CIDR_RANGE,
|
|
9
|
+
from secator.definitions import (CIDR_RANGE, DELAY, DEPTH, EMAIL,
|
|
10
10
|
FOLLOW_REDIRECT, HEADER, HOST, IP, MATCH_CODES,
|
|
11
11
|
METHOD, PROXY, RATE_LIMIT, RETRIES,
|
|
12
12
|
THREADS, TIMEOUT, URL, USER_AGENT, USERNAME)
|
|
13
13
|
from secator.cli import ALL_WORKFLOWS, ALL_TASKS, ALL_SCANS
|
|
14
|
-
from secator.output_types import
|
|
14
|
+
from secator.output_types import EXECUTION_TYPES, STAT_TYPES
|
|
15
|
+
from secator.runners import Command
|
|
15
16
|
from secator.rich import console
|
|
16
17
|
from secator.utils import load_fixture
|
|
17
18
|
|
|
@@ -88,8 +89,12 @@ META_OPTS = {
|
|
|
88
89
|
USER_AGENT: 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1',
|
|
89
90
|
|
|
90
91
|
# Individual tasks options
|
|
92
|
+
'bup.mode': 'http_methods',
|
|
91
93
|
'gf.pattern': 'xss',
|
|
92
94
|
'nmap.output_path': load_fixture('nmap_output', FIXTURES_DIR, only_path=True, ext='.xml'), # nmap XML fixture
|
|
95
|
+
'nmap.tcp_connect': True,
|
|
96
|
+
'nmap.version_detection': True,
|
|
97
|
+
'nmap.skip_host_discovery': True,
|
|
93
98
|
'msfconsole.resource': load_fixture('msfconsole_input', FIXTURES_DIR, only_path=True),
|
|
94
99
|
'dirsearch.output_path': load_fixture('dirsearch_output', FIXTURES_DIR, only_path=True),
|
|
95
100
|
'maigret.output_path': load_fixture('maigret_output', FIXTURES_DIR, only_path=True),
|
|
@@ -104,6 +109,7 @@ def mock_subprocess_popen(output_list):
|
|
|
104
109
|
mock_process = unittest.mock.MagicMock()
|
|
105
110
|
mock_process.wait.return_value = 0
|
|
106
111
|
mock_process.stdout.readline.side_effect = output_list
|
|
112
|
+
mock_process.pid = None
|
|
107
113
|
mock_process.returncode = 0
|
|
108
114
|
|
|
109
115
|
def mock_popen(*args, **kwargs):
|
|
@@ -113,7 +119,7 @@ def mock_subprocess_popen(output_list):
|
|
|
113
119
|
|
|
114
120
|
|
|
115
121
|
@contextlib.contextmanager
|
|
116
|
-
def mock_command(cls,
|
|
122
|
+
def mock_command(cls, inputs=[], opts={}, fixture=None, method=''):
|
|
117
123
|
mocks = []
|
|
118
124
|
if isinstance(fixture, dict):
|
|
119
125
|
fixture = [fixture]
|
|
@@ -129,60 +135,79 @@ def mock_command(cls, targets=[], opts={}, fixture=None, method=''):
|
|
|
129
135
|
mocks.append(fixture)
|
|
130
136
|
|
|
131
137
|
with mock_subprocess_popen(mocks):
|
|
132
|
-
command = cls(
|
|
138
|
+
command = cls(inputs, **opts)
|
|
133
139
|
if method == 'run':
|
|
134
|
-
yield cls(
|
|
140
|
+
yield cls(inputs, **opts).run()
|
|
135
141
|
elif method == 'si':
|
|
136
|
-
yield cls.si([],
|
|
142
|
+
yield cls.si([], inputs, **opts)
|
|
137
143
|
elif method in ['s', 'delay']:
|
|
138
|
-
yield getattr(cls, method)(
|
|
144
|
+
yield getattr(cls, method)(inputs, **opts)
|
|
139
145
|
else:
|
|
140
146
|
yield command
|
|
141
147
|
|
|
142
148
|
|
|
143
149
|
class CommandOutputTester: # Mixin for unittest.TestCase
|
|
144
150
|
|
|
145
|
-
def
|
|
151
|
+
def _test_runner_output(
|
|
146
152
|
self,
|
|
147
|
-
|
|
153
|
+
runner,
|
|
148
154
|
expected_output_keys=[],
|
|
149
155
|
expected_output_types=[],
|
|
150
156
|
expected_results=[],
|
|
157
|
+
expected_status='SUCCESS',
|
|
151
158
|
empty_results_allowed=False):
|
|
152
159
|
|
|
153
|
-
|
|
154
|
-
|
|
160
|
+
console.print(f'[dim]Testing {runner.config.type} {runner.name} ...[/]', end='')
|
|
161
|
+
|
|
162
|
+
if not runner.inputs:
|
|
163
|
+
console.print('[dim gold3] skipped (no inputs defined).[/]')
|
|
164
|
+
return
|
|
165
|
+
|
|
166
|
+
if not expected_results and not expected_output_keys:
|
|
167
|
+
console.print('[dim gold3] (no outputs defined).[/]', end='')
|
|
155
168
|
|
|
156
169
|
try:
|
|
157
|
-
|
|
158
|
-
|
|
170
|
+
# Run runner
|
|
171
|
+
results = runner.run()
|
|
159
172
|
|
|
160
|
-
|
|
173
|
+
# Add execution types to allowed output types
|
|
174
|
+
expected_output_types.extend(EXECUTION_TYPES + STAT_TYPES)
|
|
161
175
|
|
|
162
|
-
|
|
163
|
-
|
|
176
|
+
# Check return code
|
|
177
|
+
if isinstance(runner, Command):
|
|
178
|
+
if not runner.ignore_return_code:
|
|
179
|
+
self.assertEqual(runner.return_code, 0, f'{runner.name} should have a 0 return code')
|
|
164
180
|
|
|
165
|
-
|
|
166
|
-
|
|
181
|
+
# Check results not empty
|
|
182
|
+
if not empty_results_allowed:
|
|
183
|
+
self.assertGreater(len(results), 0, f'{runner.name} should return at least 1 result')
|
|
184
|
+
|
|
185
|
+
# Check status
|
|
186
|
+
self.assertEqual(runner.status, expected_status, f'{runner.name} should have the status {expected_status}')
|
|
187
|
+
|
|
188
|
+
# Check results
|
|
189
|
+
for item in results:
|
|
167
190
|
|
|
168
191
|
if expected_output_types:
|
|
169
|
-
self.assertIn(type(item), expected_output_types)
|
|
192
|
+
self.assertIn(type(item), expected_output_types, f'{runner.name}: item has an unexpected output type "{type(item)}"') # noqa: E501
|
|
170
193
|
|
|
171
194
|
if expected_output_keys:
|
|
172
195
|
keys = [k for k in list(item.keys()) if not k.startswith('_')]
|
|
173
196
|
self.assertEqual(
|
|
174
197
|
set(keys).difference(set(expected_output_keys)),
|
|
175
|
-
set()
|
|
198
|
+
set(),
|
|
199
|
+
f'{runner.name}: item is missing expected keys {set(expected_output_keys)}')
|
|
176
200
|
|
|
201
|
+
# Check if runner results in expected results
|
|
177
202
|
if expected_results:
|
|
178
203
|
for result in expected_results:
|
|
179
|
-
self.assertIn(result, results)
|
|
204
|
+
self.assertIn(result, results, f'{runner.name}: {result} should be in runner results')
|
|
180
205
|
|
|
181
206
|
except Exception:
|
|
182
|
-
console.print('[
|
|
207
|
+
console.print('[dim red] failed[/]')
|
|
183
208
|
raise
|
|
184
209
|
|
|
185
|
-
console.print('[
|
|
210
|
+
console.print('[dim green] ok[/]')
|
|
186
211
|
|
|
187
212
|
|
|
188
213
|
def clear_modules():
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from secator.cli import ALL_WORKFLOWS
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def generate_class(config):
|
|
5
|
+
from secator.runners import Workflow
|
|
6
|
+
|
|
7
|
+
class workflow(Workflow):
|
|
8
|
+
def __init__(self, inputs=[], **run_opts):
|
|
9
|
+
hooks = run_opts.pop('hooks', {})
|
|
10
|
+
results = run_opts.pop('results', [])
|
|
11
|
+
context = run_opts.pop('context', {})
|
|
12
|
+
super().__init__(
|
|
13
|
+
config=config,
|
|
14
|
+
inputs=inputs,
|
|
15
|
+
results=results,
|
|
16
|
+
run_opts=run_opts,
|
|
17
|
+
hooks=hooks,
|
|
18
|
+
context=context)
|
|
19
|
+
return workflow, config.name
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
DYNAMIC_WORKFLOWS = {}
|
|
23
|
+
for workflow in ALL_WORKFLOWS:
|
|
24
|
+
cls, name = generate_class(workflow)
|
|
25
|
+
DYNAMIC_WORKFLOWS[name] = cls
|
|
26
|
+
|
|
27
|
+
globals().update(DYNAMIC_WORKFLOWS)
|
|
28
|
+
__all__ = list(DYNAMIC_WORKFLOWS)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: secator
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
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
|
|
@@ -22,19 +22,24 @@ Requires-Python: >=3.8
|
|
|
22
22
|
Requires-Dist: beautifulsoup4<=5
|
|
23
23
|
Requires-Dist: celery<6
|
|
24
24
|
Requires-Dist: cpe<2
|
|
25
|
+
Requires-Dist: distro<2
|
|
25
26
|
Requires-Dist: dotmap<2
|
|
26
27
|
Requires-Dist: free-proxy<2
|
|
27
28
|
Requires-Dist: furl<3
|
|
29
|
+
Requires-Dist: greenlet<4
|
|
28
30
|
Requires-Dist: humanize<5
|
|
29
31
|
Requires-Dist: ifaddr<1
|
|
30
32
|
Requires-Dist: jinja2<4
|
|
31
33
|
Requires-Dist: packaging<25
|
|
34
|
+
Requires-Dist: psutil<7
|
|
32
35
|
Requires-Dist: pydantic<3
|
|
33
36
|
Requires-Dist: python-dotenv<2
|
|
34
37
|
Requires-Dist: pyyaml<7
|
|
35
38
|
Requires-Dist: requests<3
|
|
39
|
+
Requires-Dist: retry<1
|
|
36
40
|
Requires-Dist: rich-click<1.7
|
|
37
41
|
Requires-Dist: rich<14
|
|
42
|
+
Requires-Dist: tldextract<6
|
|
38
43
|
Requires-Dist: typing-extensions<5
|
|
39
44
|
Requires-Dist: validators<1
|
|
40
45
|
Requires-Dist: xmltodict<1
|
|
@@ -44,10 +49,13 @@ Provides-Extra: dev
|
|
|
44
49
|
Requires-Dist: asciinema-automation<1; extra == 'dev'
|
|
45
50
|
Requires-Dist: coverage<8; extra == 'dev'
|
|
46
51
|
Requires-Dist: flake8<8; extra == 'dev'
|
|
52
|
+
Requires-Dist: pytest<9; extra == 'dev'
|
|
47
53
|
Requires-Dist: watchdog<3; extra == 'dev'
|
|
48
|
-
Provides-Extra:
|
|
49
|
-
Requires-Dist: google-
|
|
50
|
-
|
|
54
|
+
Provides-Extra: gcs
|
|
55
|
+
Requires-Dist: google-cloud-storage<3; extra == 'gcs'
|
|
56
|
+
Provides-Extra: gdrive
|
|
57
|
+
Requires-Dist: google-api-python-client<3; extra == 'gdrive'
|
|
58
|
+
Requires-Dist: gspread<7; extra == 'gdrive'
|
|
51
59
|
Provides-Extra: mongodb
|
|
52
60
|
Requires-Dist: pymongo<5; extra == 'mongodb'
|
|
53
61
|
Provides-Extra: redis
|
|
@@ -62,7 +70,7 @@ Requires-Dist: gevent<25; extra == 'worker'
|
|
|
62
70
|
Description-Content-Type: text/markdown
|
|
63
71
|
|
|
64
72
|
<h1 align="center">
|
|
65
|
-
|
|
73
|
+
<img src="https://github.com/freelabz/secator/assets/9629314/ee203af4-e853-439a-af01-edeabfc4bf07/" width="400">
|
|
66
74
|
</h1>
|
|
67
75
|
|
|
68
76
|
<h4 align="center">The pentester's swiss knife.</h4>
|
|
@@ -113,32 +121,35 @@ and it is designed to improve productivity for pentesters and security researche
|
|
|
113
121
|
|
|
114
122
|
`secator` integrates the following tools:
|
|
115
123
|
|
|
116
|
-
| Name | Description | Category
|
|
117
|
-
|
|
118
|
-
| [httpx](https://github.com/projectdiscovery/httpx) | Fast HTTP prober. | `http`
|
|
119
|
-
| [cariddi](https://github.com/edoardottt/cariddi) | Fast crawler and endpoint secrets / api keys / tokens matcher. | `http/crawler`
|
|
120
|
-
| [gau](https://github.com/lc/gau) | Offline URL crawler (Alien Vault, The Wayback Machine, Common Crawl, URLScan). | `http/crawler`
|
|
121
|
-
| [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `http/crawler`
|
|
122
|
-
| [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `http/crawler`
|
|
123
|
-
| [dirsearch](https://github.com/maurosoria/dirsearch) | Web path discovery. | `http/fuzzer`
|
|
124
|
-
| [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust. | `http/fuzzer`
|
|
125
|
-
| [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `http/fuzzer`
|
|
126
|
-
| [h8mail](https://github.com/khast3x/h8mail) | Email OSINT and breach hunting tool. | `osint`
|
|
127
|
-
| [dnsx](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit
|
|
128
|
-
| [dnsxbrute](https://github.com/projectdiscovery/dnsx)
|
|
129
|
-
| [subfinder](https://github.com/projectdiscovery/subfinder) | Fast subdomain finder. | `recon/dns`
|
|
130
|
-
| [fping](https://fping.org/) | Find alive hosts on local networks. | `recon/ip`
|
|
131
|
-
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | Expand CIDR ranges into IPs. | `recon/ip`
|
|
132
|
-
| [naabu](https://github.com/projectdiscovery/naabu) | Fast port discovery tool. | `recon/port`
|
|
133
|
-
| [maigret](https://github.com/soxoj/maigret) | Hunt for user accounts across many websites. | `recon/user`
|
|
134
|
-
| [gf](https://github.com/tomnomnom/gf) | A wrapper around grep to avoid typing common patterns. | `tagger`
|
|
135
|
-
| [grype](https://github.com/anchore/grype) | A vulnerability scanner for container images and filesystems. | `vuln/code`
|
|
136
|
-
| [dalfox](https://github.com/hahwul/dalfox) | Powerful XSS scanning tool and parameter analyzer. | `vuln/http`
|
|
137
|
-
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview) | CLI to access and work with the Metasploit Framework. | `vuln/http`
|
|
138
|
-
| [wpscan](https://github.com/wpscanteam/wpscan) | WordPress Security Scanner | `vuln/multi`
|
|
139
|
-
| [nmap](https://github.com/nmap/nmap) | Vulnerability scanner using NSE scripts. | `vuln/multi`
|
|
140
|
-
| [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/multi`
|
|
141
|
-
| [
|
|
124
|
+
| Name | Description | Category |
|
|
125
|
+
|---------------------------------------------------------------|--------------------------------------------------------------------------------|-----------------|
|
|
126
|
+
| [httpx](https://github.com/projectdiscovery/httpx) | Fast HTTP prober. | `http` |
|
|
127
|
+
| [cariddi](https://github.com/edoardottt/cariddi) | Fast crawler and endpoint secrets / api keys / tokens matcher. | `http/crawler` |
|
|
128
|
+
| [gau](https://github.com/lc/gau) | Offline URL crawler (Alien Vault, The Wayback Machine, Common Crawl, URLScan). | `http/crawler` |
|
|
129
|
+
| [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `http/crawler` |
|
|
130
|
+
| [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `http/crawler` |
|
|
131
|
+
| [dirsearch](https://github.com/maurosoria/dirsearch) | Web path discovery. | `http/fuzzer` |
|
|
132
|
+
| [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust. | `http/fuzzer` |
|
|
133
|
+
| [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `http/fuzzer` |
|
|
134
|
+
| [h8mail](https://github.com/khast3x/h8mail) | Email OSINT and breach hunting tool. | `osint` |
|
|
135
|
+
| [dnsx](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit. | `recon/dns` |
|
|
136
|
+
| [dnsxbrute](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit (bruteforce mode). | `recon/dns` |
|
|
137
|
+
| [subfinder](https://github.com/projectdiscovery/subfinder) | Fast subdomain finder. | `recon/dns` |
|
|
138
|
+
| [fping](https://fping.org/) | Find alive hosts on local networks. | `recon/ip` |
|
|
139
|
+
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | Expand CIDR ranges into IPs. | `recon/ip` |
|
|
140
|
+
| [naabu](https://github.com/projectdiscovery/naabu) | Fast port discovery tool. | `recon/port` |
|
|
141
|
+
| [maigret](https://github.com/soxoj/maigret) | Hunt for user accounts across many websites. | `recon/user` |
|
|
142
|
+
| [gf](https://github.com/tomnomnom/gf) | A wrapper around grep to avoid typing common patterns. | `tagger` |
|
|
143
|
+
| [grype](https://github.com/anchore/grype) | A vulnerability scanner for container images and filesystems. | `vuln/code` |
|
|
144
|
+
| [dalfox](https://github.com/hahwul/dalfox) | Powerful XSS scanning tool and parameter analyzer. | `vuln/http` |
|
|
145
|
+
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview) | CLI to access and work with the Metasploit Framework. | `vuln/http` |
|
|
146
|
+
| [wpscan](https://github.com/wpscanteam/wpscan) | WordPress Security Scanner | `vuln/multi` |
|
|
147
|
+
| [nmap](https://github.com/nmap/nmap) | Vulnerability scanner using NSE scripts. | `vuln/multi` |
|
|
148
|
+
| [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/multi` |
|
|
149
|
+
| [bbot](https://github.com/blacklanternsecurity/bbot) | Multipurpose scanner. | `multi` |
|
|
150
|
+
| [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher based on ExploitDB. | `exploit/search`|
|
|
151
|
+
| [bup](https://github.com/laluka/bypass-url-parser) | 40X bypasser. | `http` |
|
|
152
|
+
|
|
142
153
|
|
|
143
154
|
Feel free to request new tools to be added by opening an issue, but please
|
|
144
155
|
check that the tool complies with our selection criterias before doing so. If it doesn't but you still want to integrate it into `secator`, you can plug it in (see the [dev guide](https://docs.freelabz.com/for-developers/writing-custom-tasks)).
|
|
@@ -149,7 +160,7 @@ check that the tool complies with our selection criterias before doing so. If it
|
|
|
149
160
|
### Installing secator
|
|
150
161
|
|
|
151
162
|
<details>
|
|
152
|
-
|
|
163
|
+
<summary>Pipx</summary>
|
|
153
164
|
|
|
154
165
|
```sh
|
|
155
166
|
pipx install secator
|
|
@@ -158,7 +169,7 @@ pipx install secator
|
|
|
158
169
|
</details>
|
|
159
170
|
|
|
160
171
|
<details>
|
|
161
|
-
|
|
172
|
+
<summary>Pip</summary>
|
|
162
173
|
|
|
163
174
|
```sh
|
|
164
175
|
pip install secator
|
|
@@ -176,7 +187,7 @@ wget -O - https://raw.githubusercontent.com/freelabz/secator/main/scripts/instal
|
|
|
176
187
|
</details>
|
|
177
188
|
|
|
178
189
|
<details>
|
|
179
|
-
|
|
190
|
+
<summary>Docker</summary>
|
|
180
191
|
|
|
181
192
|
```sh
|
|
182
193
|
docker run -it --rm --net=host -v ~/.secator:/root/.secator freelabz/secator --help
|
|
@@ -197,13 +208,13 @@ secator --help
|
|
|
197
208
|
</details>
|
|
198
209
|
|
|
199
210
|
<details>
|
|
200
|
-
|
|
211
|
+
<summary>Docker Compose</summary>
|
|
201
212
|
|
|
202
213
|
```sh
|
|
203
214
|
git clone https://github.com/freelabz/secator
|
|
204
215
|
cd secator
|
|
205
216
|
docker-compose up -d
|
|
206
|
-
docker-compose exec secator secator --help
|
|
217
|
+
docker-compose exec secator-client secator --help
|
|
207
218
|
```
|
|
208
219
|
|
|
209
220
|
</details>
|
|
@@ -217,7 +228,7 @@ docker-compose exec secator secator --help
|
|
|
217
228
|
We provide utilities to install required languages if you don't manage them externally:
|
|
218
229
|
|
|
219
230
|
<details>
|
|
220
|
-
|
|
231
|
+
<summary>Go</summary>
|
|
221
232
|
|
|
222
233
|
```sh
|
|
223
234
|
secator install langs go
|
|
@@ -226,7 +237,7 @@ secator install langs go
|
|
|
226
237
|
</details>
|
|
227
238
|
|
|
228
239
|
<details>
|
|
229
|
-
|
|
240
|
+
<summary>Ruby</summary>
|
|
230
241
|
|
|
231
242
|
```sh
|
|
232
243
|
secator install langs ruby
|
|
@@ -241,7 +252,7 @@ secator install langs ruby
|
|
|
241
252
|
We provide utilities to install or update each supported tool which should work on all systems supporting `apt`:
|
|
242
253
|
|
|
243
254
|
<details>
|
|
244
|
-
|
|
255
|
+
<summary>All tools</summary>
|
|
245
256
|
|
|
246
257
|
```sh
|
|
247
258
|
secator install tools
|
|
@@ -250,7 +261,7 @@ secator install tools
|
|
|
250
261
|
</details>
|
|
251
262
|
|
|
252
263
|
<details>
|
|
253
|
-
|
|
264
|
+
<summary>Specific tools</summary>
|
|
254
265
|
|
|
255
266
|
```sh
|
|
256
267
|
secator install tools <TOOL_NAME>
|
|
@@ -273,7 +284,7 @@ Please make sure you are using the latest available versions for each tool befor
|
|
|
273
284
|
There are several addons available for `secator`:
|
|
274
285
|
|
|
275
286
|
<details>
|
|
276
|
-
|
|
287
|
+
<summary>worker</summary>
|
|
277
288
|
|
|
278
289
|
Add support for Celery workers (see [Distributed runs with Celery](https://docs.freelabz.com/in-depth/distributed-runs-with-celery)).
|
|
279
290
|
```sh
|
|
@@ -284,7 +295,7 @@ secator install addons worker
|
|
|
284
295
|
|
|
285
296
|
|
|
286
297
|
<details>
|
|
287
|
-
|
|
298
|
+
<summary>google</summary>
|
|
288
299
|
|
|
289
300
|
Add support for Google Drive exporter (`-o gdrive`).
|
|
290
301
|
|
|
@@ -295,7 +306,7 @@ secator install addons google
|
|
|
295
306
|
</details>
|
|
296
307
|
|
|
297
308
|
<details>
|
|
298
|
-
|
|
309
|
+
<summary>mongodb</summary>
|
|
299
310
|
|
|
300
311
|
Add support for MongoDB driver (`-driver mongodb`).
|
|
301
312
|
```sh
|
|
@@ -305,7 +316,7 @@ secator install addons mongodb
|
|
|
305
316
|
</details>
|
|
306
317
|
|
|
307
318
|
<details>
|
|
308
|
-
|
|
319
|
+
<summary>redis</summary>
|
|
309
320
|
|
|
310
321
|
Add support for Redis backend (Celery).
|
|
311
322
|
|
|
@@ -316,7 +327,7 @@ secator install addons redis
|
|
|
316
327
|
</details>
|
|
317
328
|
|
|
318
329
|
<details>
|
|
319
|
-
|
|
330
|
+
<summary>dev</summary>
|
|
320
331
|
|
|
321
332
|
Add development tools like `coverage` and `flake8` required for running tests.
|
|
322
333
|
|
|
@@ -327,7 +338,7 @@ secator install addons dev
|
|
|
327
338
|
</details>
|
|
328
339
|
|
|
329
340
|
<details>
|
|
330
|
-
|
|
341
|
+
<summary>trace</summary>
|
|
331
342
|
|
|
332
343
|
Add tracing tools like `memray` and `pyinstrument` required for tracing functions.
|
|
333
344
|
|
|
@@ -338,7 +349,7 @@ secator install addons trace
|
|
|
338
349
|
</details>
|
|
339
350
|
|
|
340
351
|
<details>
|
|
341
|
-
|
|
352
|
+
<summary>build</summary>
|
|
342
353
|
|
|
343
354
|
Add `hatch` for building and publishing the PyPI package.
|
|
344
355
|
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
secator/.gitignore,sha256=da8MUc3hdb6Mo0WjZu2upn5uZMbXcBGvhdhTQ1L89HI,3093
|
|
2
|
+
secator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
secator/celery.py,sha256=Ry-JYJzN9F4LFHOn4IXpSFgCzpM99esKiQRJh_TkHp8,9578
|
|
4
|
+
secator/celery_utils.py,sha256=iIuCn_3YkPXCtpnbaYqpppU2TARzSDyTIYHkrRyt54s,7725
|
|
5
|
+
secator/cli.py,sha256=gIob9JjQJLtBhYYBErUpWucNqcd_LMEdMHMCurbITic,44012
|
|
6
|
+
secator/config.py,sha256=6wm2EErW1DuhrdKSuIEUvc2b3yBxJWyZKnocr7lIeZw,19267
|
|
7
|
+
secator/decorators.py,sha256=tjH7WodxJEBIf2CCbegmvOe8H9DKSFh4iPLEhDNGPCA,13784
|
|
8
|
+
secator/definitions.py,sha256=gFtLT9fjNtX_1qkiCjNfQyCvYq07IhScsQzX4o20_SE,3084
|
|
9
|
+
secator/installer.py,sha256=ZK6iEc7cjaYn2lSpbSUkcLWwuu8cpGzhpnlgP-dGYiI,16272
|
|
10
|
+
secator/report.py,sha256=qJkEdCFttDBXIwUNUzZqFU_sG8l0PvyTSTogZVBv1Rs,3628
|
|
11
|
+
secator/rich.py,sha256=3ugCkgai7UNylQGUuOVAd7ghYWDSc73aSomrfKgKVxo,3290
|
|
12
|
+
secator/template.py,sha256=Qy4RjcmlifeSA8CleWUBb9fluxuYHzxgEH0H-8qs8R4,4323
|
|
13
|
+
secator/thread.py,sha256=rgRgEtcMgs2wyfLWVlCTUCLWeg6jsMo5iKpyyrON5rY,655
|
|
14
|
+
secator/utils.py,sha256=mwRZWSoYDskleNvDBHjRIGoygK2DsBMeIdllABvD4vw,21237
|
|
15
|
+
secator/utils_test.py,sha256=ArHwkWW89t0IDqxO4HjJWd_tm7tp1illP4pu3nLq5yo,6559
|
|
16
|
+
secator/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
secator/configs/profiles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
secator/configs/profiles/aggressive.yaml,sha256=JilVySABlSCYEFMjH7V0Oc3dAVlkfHOh1odTGhtm7BQ,108
|
|
19
|
+
secator/configs/profiles/default.yaml,sha256=kDuOF1Qkpv4oz1GZ-OwDxbi5pptAqShsCqdzkBOxXfw,149
|
|
20
|
+
secator/configs/profiles/stealth.yaml,sha256=Ud3EMZ2yRj0AT6w-AfV7fWUBYib9VAFp46GPpof9YaU,107
|
|
21
|
+
secator/configs/scans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
secator/configs/scans/domain.yaml,sha256=Dkm5dU2NdUTInkWD5cmVczvhUH0soaKPtoESeg8BVsQ,265
|
|
23
|
+
secator/configs/scans/host.yaml,sha256=tobz6yGeYlVnGwLVI9RLJT6MDLnGmQVVj8EOwAdksfw,189
|
|
24
|
+
secator/configs/scans/network.yaml,sha256=ghlgIwkWhJKQeT6V5TE51dFL-VRszWJtm4qx4ImjEEY,252
|
|
25
|
+
secator/configs/scans/subdomain.yaml,sha256=I007b1V5Rmm_4R9mODp6jxonHNIjXkQT9sU-AOxLSIo,123
|
|
26
|
+
secator/configs/scans/url.yaml,sha256=zhRiqyHq7BZHtKsmjpMvp3vmt5DRNtmfqW44sZm1tWw,158
|
|
27
|
+
secator/configs/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
secator/configs/workflows/cidr_recon.yaml,sha256=u1QKDKGbpJEez5QqC20Yd_nBLZd_z4nA-XFRQV7pVI4,558
|
|
29
|
+
secator/configs/workflows/code_scan.yaml,sha256=3H8H55NVskiDbBwNueVF8FUYkquEQn2C6evnid9zhB4,207
|
|
30
|
+
secator/configs/workflows/host_recon.yaml,sha256=9ypKWRbcGRmMgzuyrCjQ2EAbJO9q8HN_A-hlTKkypVg,1095
|
|
31
|
+
secator/configs/workflows/port_scan.yaml,sha256=JKbT01_q4CaOKZYjVspl8PjMefUtsiJmDbUlHcGc8vw,921
|
|
32
|
+
secator/configs/workflows/subdomain_recon.yaml,sha256=GFhAyatzWRVx3a2kphNWNoTB13wY3GZTSZ2tusFgo8E,722
|
|
33
|
+
secator/configs/workflows/url_bypass.yaml,sha256=_uBzDhevJ2DOD9UkE25n7ZrmnjjfdU3lV3mnUudgdU0,180
|
|
34
|
+
secator/configs/workflows/url_crawl.yaml,sha256=h74dvDBNLuY1EHc9FMby3ydr34VH1qFJHQKUaIIYpcw,573
|
|
35
|
+
secator/configs/workflows/url_dirsearch.yaml,sha256=wiiVY3RK0s8DYxg7UWcxLjkxMdIIINWefG1mhps2E-0,627
|
|
36
|
+
secator/configs/workflows/url_fuzz.yaml,sha256=K1RkplXrgc7q2YJVv5A6B5MMkAzIIv31HInhRCKMpyI,774
|
|
37
|
+
secator/configs/workflows/url_nuclei.yaml,sha256=Qigz-hJzM7GeNA_UD46dThVIoqbWlBgiYb_i5fSyJiI,265
|
|
38
|
+
secator/configs/workflows/url_vuln.yaml,sha256=_nX_D96NbD8fHU4wXov7ZHD1cmiFgKc86Mh0enWGS7s,1354
|
|
39
|
+
secator/configs/workflows/user_hunt.yaml,sha256=e5b-CkkjhOPE8Yh5LUh0K60GKmxTgn4s-Joo7m9jKrk,180
|
|
40
|
+
secator/configs/workflows/wordpress.yaml,sha256=QgBUNi8Gav_efbmczUGfzlByWsmogTmGtu1MwAlvQts,279
|
|
41
|
+
secator/exporters/__init__.py,sha256=PnT9Ra4ArHt9VQTK5Cpc4CPY89XRwLLUGtZ8nUcknm0,415
|
|
42
|
+
secator/exporters/_base.py,sha256=-RrrwO_qp0ETLLHSta4T-zKtMbWdiEmz1Cw5mNo6USU,77
|
|
43
|
+
secator/exporters/console.py,sha256=idVotf9B0LnYZ4JQJHrgMtVfE26XkRDuvbCyJvCY2hU,249
|
|
44
|
+
secator/exporters/csv.py,sha256=gvwS0dgYhUKjjyNX-jal8SvKQrkjiUEwzDzC4zN8UO4,1068
|
|
45
|
+
secator/exporters/gdrive.py,sha256=6Nj9RTOhraBOalm2H8Fp1tItD2ZrSfgtY4SiXViefcQ,4201
|
|
46
|
+
secator/exporters/json.py,sha256=1ZtDf8RksPO_V0zIvnwDUxMUb630DCElAMM8_RQvyAo,474
|
|
47
|
+
secator/exporters/table.py,sha256=RY7Tct5kowEx8Oza8QMXFx6fKBARYfLxEbbvjKiE3eQ,1113
|
|
48
|
+
secator/exporters/txt.py,sha256=oMtr22di6cqyE_5yJoiWP-KElrI5QgvK1cOUrj7H7js,730
|
|
49
|
+
secator/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
+
secator/hooks/gcs.py,sha256=MIhntyWYz9BZdTXhWl5JznaczSq1_7fl3TVqPufuTSo,1490
|
|
51
|
+
secator/hooks/mongodb.py,sha256=HyjtpJSoxvSZ6aG8uBf1RFLNKGXCBDQL5eEh4xzDonA,7545
|
|
52
|
+
secator/output_types/__init__.py,sha256=LxCW0K1f2vdgUapc4pIEsUpBfC0TQVvqo7T57rGuZGk,1159
|
|
53
|
+
secator/output_types/_base.py,sha256=OgS6ICt66TzPsqo1JZwRIIwbng2HRX1i_u5qbUECgNk,2820
|
|
54
|
+
secator/output_types/error.py,sha256=A2m4YUAAf8z42MMew9XtM24OOZYoYKJzcfB2RWsQmlc,1231
|
|
55
|
+
secator/output_types/exploit.py,sha256=-BKTqPBg94rVgjw8YSmcYuBCI2x-73WwMd9ITP9qr3Y,1750
|
|
56
|
+
secator/output_types/info.py,sha256=R8xeiD3ocNOsvkJPhrQgsx6q-Ea1G0eTAqyuh5JrAR0,843
|
|
57
|
+
secator/output_types/ip.py,sha256=CyE3qkp55Kmj5YRl0CZGS4XrHX8N5apWrLN3OMzaK0U,1127
|
|
58
|
+
secator/output_types/port.py,sha256=JdqXnEF8XuwaWFMT8Vghj7fKLwtsImuUdRfMmITgmWM,1879
|
|
59
|
+
secator/output_types/progress.py,sha256=MIbmnrLHNodLL42UgiaqLHL0OG5-w6mtUrhn0ZhksjA,1343
|
|
60
|
+
secator/output_types/record.py,sha256=HnsKxlIhkgswA_Yjz7BZ1vDjP53l6OJ0BCOtCSDwCSY,1250
|
|
61
|
+
secator/output_types/stat.py,sha256=90oN2Ghc4k0B0FOdp6MOWiNgmXMmLHYknjunDeEKKRE,1129
|
|
62
|
+
secator/output_types/subdomain.py,sha256=ivJ_2kmrJ8hdB8wmvRJYlKV1BcE3Cds_vAI_5wL7ES4,1344
|
|
63
|
+
secator/output_types/tag.py,sha256=_XEqWAvAvmi7nd2ldfEE71zQx97jTSph2iDHkeqGTyk,1470
|
|
64
|
+
secator/output_types/target.py,sha256=lmPw2aFOGIOFG4XXo6vNVZBBAZlnApJjyDVepDY54TU,871
|
|
65
|
+
secator/output_types/url.py,sha256=gTGShwXIA2mA9cBLP7_I4qA5XUP-EYB1xnPRLtUDAi8,2912
|
|
66
|
+
secator/output_types/user_account.py,sha256=rm10somxyu30JHjj629IkR15Nhahylud_fVO8j2pdR0,1417
|
|
67
|
+
secator/output_types/vulnerability.py,sha256=nF7OT9zGez8sZvLrkhjBOORjVi8hCqfCYUFq3eZ_ywo,2870
|
|
68
|
+
secator/output_types/warning.py,sha256=47GtmG083GqGPb_R5JDFmARJ9Mqrme58UxwJhgdGPuI,853
|
|
69
|
+
secator/runners/__init__.py,sha256=EBbOk37vkBy9p8Hhrbi-2VtM_rTwQ3b-0ggTyiD22cE,290
|
|
70
|
+
secator/runners/_base.py,sha256=loCWdCiiP9CUUZlNu1hwropTCud7DwSGcnpgoS3drz8,28990
|
|
71
|
+
secator/runners/_helpers.py,sha256=FGogmmdHfCWmIyq7wRprwU1oOSxesOu3Y0N4GyAgiGw,2000
|
|
72
|
+
secator/runners/celery.py,sha256=bqvDTTdoHiGRCt0FRvlgFHQ_nsjKMP5P0PzGbwfCj_0,425
|
|
73
|
+
secator/runners/command.py,sha256=-2rqSfbPz2Q12otzshm3SIb4BVosIDpbvwh2KScoJ_M,24922
|
|
74
|
+
secator/runners/scan.py,sha256=tuPuqwL6fIS4UbCoy5WPKthYWm_LL-vCPRD2qK58HZE,1232
|
|
75
|
+
secator/runners/task.py,sha256=JXlwo3DyQnu69RbQ8xvJnXu6y0rDYN-3iT4q4gy39tI,2004
|
|
76
|
+
secator/runners/workflow.py,sha256=vry_MZFx6dRrorTrdsUqvhMZGOLPCdzpxkvN6fnt62w,3783
|
|
77
|
+
secator/scans/__init__.py,sha256=nlNLiRl7Vu--c_iXClFFcagMd_b_OWKitq8tX1-1krQ,641
|
|
78
|
+
secator/serializers/__init__.py,sha256=OP5cmFl77ovgSCW_IDcZ21St2mUt5UK4QHfrsK2KvH8,248
|
|
79
|
+
secator/serializers/dataclass.py,sha256=RqICpfsYWGjHAACAA2h2jZ_69CFHim4VZwcBqowGMcQ,1010
|
|
80
|
+
secator/serializers/json.py,sha256=UJwAymRzjF-yBKOgz1MTOyBhQcdQg7fOKRXgmHIu8fo,411
|
|
81
|
+
secator/serializers/regex.py,sha256=fh-fE0RGvKSGKByFtwmKsWriRpZR9PXZQsY9JybHBWI,489
|
|
82
|
+
secator/tasks/__init__.py,sha256=yRIZf9E47aS7o6rpgAJLgJUpX2cug1ofZeq8QsxgyjU,192
|
|
83
|
+
secator/tasks/_categories.py,sha256=IWyBprIUBZxflh7QfvK27Ix18M_bnquzlERqfTZohVs,13821
|
|
84
|
+
secator/tasks/bbot.py,sha256=RLI7fh8t16vxD0fwDY5HFDa5oneitrWH9ZkoN107bAQ,6884
|
|
85
|
+
secator/tasks/bup.py,sha256=4PM123Km3uOkMUwfdLY6J7pyCqIsbwMvOLYx7XYCAZc,3030
|
|
86
|
+
secator/tasks/cariddi.py,sha256=7S92pp7tvihoz9fAiMpmcfPzEvxEJKMlk-IqAvVDISA,2906
|
|
87
|
+
secator/tasks/dalfox.py,sha256=hHQgYuZ7AGQCQtcN8hSM9uPnzeq1DSr_cpOxnn7-660,1850
|
|
88
|
+
secator/tasks/dirsearch.py,sha256=DF-yXHANHb3ARgMOUbqpRuHc8-mE3bteHwTkFpXQtKc,2205
|
|
89
|
+
secator/tasks/dnsx.py,sha256=nK14_DeyX0QTpAMdIP0LSSEOEu5_tQemyFW0XPjA2f8,2266
|
|
90
|
+
secator/tasks/dnsxbrute.py,sha256=R2Fkc_OkO7vc-EyyvgRqvPCf9s11lHJE1TPEplsh_Pw,1423
|
|
91
|
+
secator/tasks/feroxbuster.py,sha256=B1zbMGhanyziSWk5PonR7jDSP8oLKvJ-_DJFhj08xnM,2730
|
|
92
|
+
secator/tasks/ffuf.py,sha256=VGrtjFgSX6Q1I8h1wjPO5XwBFCfZXmn0DQsn9gxEUXc,2468
|
|
93
|
+
secator/tasks/fping.py,sha256=m7eSXFU5yIeDD_kWh-h208ufSZAm4SpQzD34Ko0yCu8,1116
|
|
94
|
+
secator/tasks/gau.py,sha256=MzgnImbkRjB_wI-7YPUnTgyMYbyKcderLagTO_20gPw,1602
|
|
95
|
+
secator/tasks/gf.py,sha256=y8Fc0sRLGqNuwUjTBgLk3HEw3ZOnh09nB_GTufGErNA,962
|
|
96
|
+
secator/tasks/gospider.py,sha256=KGINm9kxrq546xi1yN8_OwNCNDxSW9vVRYDAlvNajBs,2303
|
|
97
|
+
secator/tasks/grype.py,sha256=8iTjI1ZTj-DQgozg-UoBfL-45Lt3Sz4wS4s9jBI-tE0,2411
|
|
98
|
+
secator/tasks/h8mail.py,sha256=wNukV-aB-bXPZNq7WL8n1nFgH5b5tGh6vOF80Yna33I,1934
|
|
99
|
+
secator/tasks/httpx.py,sha256=5oI8vK7w94nsQlKs9Ve4yZsCmogbsiB5PqGarR3eIIM,5854
|
|
100
|
+
secator/tasks/katana.py,sha256=yy07wReBubmjbvpmsx1nmAuKij7M8As8JovQU7_cSrM,5210
|
|
101
|
+
secator/tasks/maigret.py,sha256=6anhBzB4lEM90Lk23cAD_ku7I_ghTpj0W0i3h6HARD8,2088
|
|
102
|
+
secator/tasks/mapcidr.py,sha256=zYIlbjJadQY_g2X8hS5vK_789O_XfI2mkIH-Cs8y6hk,944
|
|
103
|
+
secator/tasks/msfconsole.py,sha256=t3fo_Q47YEQE116j_2MNWqcHsxw4afZxxs_ThinjzGc,6414
|
|
104
|
+
secator/tasks/naabu.py,sha256=zbaLY4CHcmCjOmRnB8c5unMv4_wyLLyCbas-vRm44DU,2047
|
|
105
|
+
secator/tasks/nmap.py,sha256=r4TsWNF6mDT6Dni94hzDwZ_TPh3s-1VOV61W8NASvVs,12520
|
|
106
|
+
secator/tasks/nuclei.py,sha256=8VRl3C7_wTHr3n3zA2E9rDJTMWXFeU6fRM71txiGQHo,4235
|
|
107
|
+
secator/tasks/searchsploit.py,sha256=OrODcBdRcbGmA9qSMJjsWTXwAcCt0nwQYXKqEBdcPbY,3280
|
|
108
|
+
secator/tasks/subfinder.py,sha256=C6W5NnXT92OUB1aSS9IYseqdI3wDMAz70TOEl8X-o3U,1213
|
|
109
|
+
secator/tasks/wpscan.py,sha256=LGw1DmomP4U83n3V6nyuPhXTd4t99dgrym7oL54JqHE,5495
|
|
110
|
+
secator/workflows/__init__.py,sha256=ivpZHiYYlj4JqlXLRmB9cmAPUGdk8QcUrCRL34hIqEA,665
|
|
111
|
+
secator-0.8.0.dist-info/METADATA,sha256=eZbs-L8h3DFG-A0iRlMl9WX2RIBz9u6THDukf0KuRCY,14791
|
|
112
|
+
secator-0.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
113
|
+
secator-0.8.0.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
|
|
114
|
+
secator-0.8.0.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
|
|
115
|
+
secator-0.8.0.dist-info/RECORD,,
|