secator 0.1.0__py2.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/.gitignore +162 -0
- secator/__init__.py +0 -0
- secator/celery.py +421 -0
- secator/cli.py +927 -0
- secator/config.py +137 -0
- secator/configs/__init__.py +0 -0
- secator/configs/profiles/__init__.py +0 -0
- secator/configs/profiles/aggressive.yaml +7 -0
- secator/configs/profiles/default.yaml +9 -0
- secator/configs/profiles/stealth.yaml +7 -0
- secator/configs/scans/__init__.py +0 -0
- secator/configs/scans/domain.yaml +18 -0
- secator/configs/scans/host.yaml +14 -0
- secator/configs/scans/network.yaml +17 -0
- secator/configs/scans/subdomain.yaml +8 -0
- secator/configs/scans/url.yaml +12 -0
- secator/configs/workflows/__init__.py +0 -0
- secator/configs/workflows/cidr_recon.yaml +28 -0
- secator/configs/workflows/code_scan.yaml +11 -0
- secator/configs/workflows/host_recon.yaml +41 -0
- secator/configs/workflows/port_scan.yaml +34 -0
- secator/configs/workflows/subdomain_recon.yaml +33 -0
- secator/configs/workflows/url_crawl.yaml +29 -0
- secator/configs/workflows/url_dirsearch.yaml +29 -0
- secator/configs/workflows/url_fuzz.yaml +35 -0
- secator/configs/workflows/url_nuclei.yaml +11 -0
- secator/configs/workflows/url_vuln.yaml +55 -0
- secator/configs/workflows/user_hunt.yaml +10 -0
- secator/configs/workflows/wordpress.yaml +14 -0
- secator/decorators.py +346 -0
- secator/definitions.py +183 -0
- secator/exporters/__init__.py +12 -0
- secator/exporters/_base.py +3 -0
- secator/exporters/csv.py +29 -0
- secator/exporters/gdrive.py +118 -0
- secator/exporters/json.py +14 -0
- secator/exporters/table.py +7 -0
- secator/exporters/txt.py +24 -0
- secator/hooks/__init__.py +0 -0
- secator/hooks/mongodb.py +212 -0
- secator/output_types/__init__.py +24 -0
- secator/output_types/_base.py +95 -0
- secator/output_types/exploit.py +50 -0
- secator/output_types/ip.py +33 -0
- secator/output_types/port.py +45 -0
- secator/output_types/progress.py +35 -0
- secator/output_types/record.py +34 -0
- secator/output_types/subdomain.py +42 -0
- secator/output_types/tag.py +46 -0
- secator/output_types/target.py +30 -0
- secator/output_types/url.py +76 -0
- secator/output_types/user_account.py +41 -0
- secator/output_types/vulnerability.py +97 -0
- secator/report.py +95 -0
- secator/rich.py +123 -0
- secator/runners/__init__.py +12 -0
- secator/runners/_base.py +873 -0
- secator/runners/_helpers.py +154 -0
- secator/runners/command.py +674 -0
- secator/runners/scan.py +67 -0
- secator/runners/task.py +107 -0
- secator/runners/workflow.py +137 -0
- secator/serializers/__init__.py +8 -0
- secator/serializers/dataclass.py +33 -0
- secator/serializers/json.py +15 -0
- secator/serializers/regex.py +17 -0
- secator/tasks/__init__.py +10 -0
- secator/tasks/_categories.py +304 -0
- secator/tasks/cariddi.py +102 -0
- secator/tasks/dalfox.py +66 -0
- secator/tasks/dirsearch.py +88 -0
- secator/tasks/dnsx.py +56 -0
- secator/tasks/dnsxbrute.py +34 -0
- secator/tasks/feroxbuster.py +89 -0
- secator/tasks/ffuf.py +85 -0
- secator/tasks/fping.py +44 -0
- secator/tasks/gau.py +43 -0
- secator/tasks/gf.py +34 -0
- secator/tasks/gospider.py +71 -0
- secator/tasks/grype.py +78 -0
- secator/tasks/h8mail.py +80 -0
- secator/tasks/httpx.py +104 -0
- secator/tasks/katana.py +128 -0
- secator/tasks/maigret.py +78 -0
- secator/tasks/mapcidr.py +32 -0
- secator/tasks/msfconsole.py +176 -0
- secator/tasks/naabu.py +52 -0
- secator/tasks/nmap.py +341 -0
- secator/tasks/nuclei.py +97 -0
- secator/tasks/searchsploit.py +53 -0
- secator/tasks/subfinder.py +40 -0
- secator/tasks/wpscan.py +177 -0
- secator/utils.py +404 -0
- secator/utils_test.py +183 -0
- secator-0.1.0.dist-info/METADATA +379 -0
- secator-0.1.0.dist-info/RECORD +99 -0
- secator-0.1.0.dist-info/WHEEL +5 -0
- secator-0.1.0.dist-info/entry_points.txt +2 -0
- secator-0.1.0.dist-info/licenses/LICENSE +60 -0
secator/utils_test.py
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import contextlib
|
|
2
|
+
import json
|
|
3
|
+
import os
|
|
4
|
+
import unittest.mock
|
|
5
|
+
|
|
6
|
+
from fp.fp import FreeProxy
|
|
7
|
+
|
|
8
|
+
from secator.definitions import (CIDR_RANGE, DEBUG, DELAY, DEPTH, EMAIL,
|
|
9
|
+
FOLLOW_REDIRECT, HEADER, HOST, IP, MATCH_CODES,
|
|
10
|
+
METHOD, PROXY, RATE_LIMIT, RETRIES,
|
|
11
|
+
THREADS, TIMEOUT, URL, USER_AGENT, USERNAME)
|
|
12
|
+
from secator.cli import ALL_WORKFLOWS, ALL_TASKS, ALL_SCANS
|
|
13
|
+
from secator.output_types import OutputType
|
|
14
|
+
from secator.rich import console
|
|
15
|
+
from secator.utils import load_fixture
|
|
16
|
+
|
|
17
|
+
#---------#
|
|
18
|
+
# GLOBALS #
|
|
19
|
+
#---------#
|
|
20
|
+
USE_PROXY = bool(int(os.environ.get('USE_PROXY', '0')))
|
|
21
|
+
TEST_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '/tests/'
|
|
22
|
+
FIXTURES_DIR = f'{TEST_DIR}/fixtures'
|
|
23
|
+
USE_PROXY = bool(int(os.environ.get('USE_PROXY', '0')))
|
|
24
|
+
|
|
25
|
+
#------------#
|
|
26
|
+
# TEST TASKS #
|
|
27
|
+
#------------#
|
|
28
|
+
TEST_TASKS = os.environ.get('TEST_TASKS', '')
|
|
29
|
+
if TEST_TASKS:
|
|
30
|
+
TEST_TASKS = [cls for cls in ALL_TASKS if cls.__name__ in TEST_TASKS.split(',')]
|
|
31
|
+
else:
|
|
32
|
+
TEST_TASKS = ALL_TASKS
|
|
33
|
+
|
|
34
|
+
#----------------#
|
|
35
|
+
# TEST WORKFLOWS #
|
|
36
|
+
#----------------#
|
|
37
|
+
TEST_WORKFLOWS = os.environ.get('TEST_WORKFLOWS', '')
|
|
38
|
+
if TEST_WORKFLOWS:
|
|
39
|
+
TEST_WORKFLOWS = [config for config in ALL_WORKFLOWS if config.name in TEST_WORKFLOWS.split(',')]
|
|
40
|
+
else:
|
|
41
|
+
TEST_WORKFLOWS = ALL_WORKFLOWS
|
|
42
|
+
|
|
43
|
+
#------------#
|
|
44
|
+
# TEST SCANS #
|
|
45
|
+
#------------#
|
|
46
|
+
TEST_SCANS = os.environ.get('TEST_SCANS', '')
|
|
47
|
+
if TEST_SCANS:
|
|
48
|
+
TEST_SCANS = [config for config in ALL_SCANS if config.name in TEST_SCANS.split(',')]
|
|
49
|
+
else:
|
|
50
|
+
TEST_SCANS = ALL_SCANS
|
|
51
|
+
|
|
52
|
+
#-------------------#
|
|
53
|
+
# TEST INPUTS_TASKS #
|
|
54
|
+
#-------------------#
|
|
55
|
+
INPUTS_TASKS = {
|
|
56
|
+
URL: 'https://fake.com',
|
|
57
|
+
HOST: 'fake.com',
|
|
58
|
+
USERNAME: 'test',
|
|
59
|
+
IP: '192.168.1.23',
|
|
60
|
+
CIDR_RANGE: '192.168.1.0/24',
|
|
61
|
+
EMAIL: 'fake@fake.com'
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#---------------------#
|
|
65
|
+
# TEST FIXTURES_TASKS #
|
|
66
|
+
#---------------------#
|
|
67
|
+
FIXTURES_TASKS = {
|
|
68
|
+
tool_cls: load_fixture(f'{tool_cls.__name__}_output', FIXTURES_DIR)
|
|
69
|
+
for tool_cls in TEST_TASKS
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
#-----------#
|
|
73
|
+
# TEST OPTS #
|
|
74
|
+
#-----------#
|
|
75
|
+
META_OPTS = {
|
|
76
|
+
HEADER: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1',
|
|
77
|
+
DELAY: 0,
|
|
78
|
+
DEPTH: 2,
|
|
79
|
+
FOLLOW_REDIRECT: True,
|
|
80
|
+
METHOD: 'GET',
|
|
81
|
+
MATCH_CODES: '200',
|
|
82
|
+
PROXY: FreeProxy(timeout=0.5).get() if USE_PROXY else False,
|
|
83
|
+
RATE_LIMIT: 10000,
|
|
84
|
+
RETRIES: 0,
|
|
85
|
+
THREADS: 50,
|
|
86
|
+
TIMEOUT: 1,
|
|
87
|
+
USER_AGENT: 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1',
|
|
88
|
+
|
|
89
|
+
# Individual tasks options
|
|
90
|
+
'gf.pattern': 'xss',
|
|
91
|
+
'nmap.output_path': load_fixture('nmap_output', FIXTURES_DIR, only_path=True, ext='.xml'), # nmap XML fixture
|
|
92
|
+
'msfconsole.resource': load_fixture('msfconsole_input', FIXTURES_DIR, only_path=True),
|
|
93
|
+
'dirsearch.output_path': load_fixture('dirsearch_output', FIXTURES_DIR, only_path=True),
|
|
94
|
+
'maigret.output_path': load_fixture('maigret_output', FIXTURES_DIR, only_path=True),
|
|
95
|
+
'wpscan.output_path': load_fixture('wpscan_output', FIXTURES_DIR, only_path=True),
|
|
96
|
+
'h8mail.output_path': load_fixture('h8mail_output', FIXTURES_DIR, only_path=True),
|
|
97
|
+
'h8mail.local_breach': load_fixture('h8mail_breach', FIXTURES_DIR, only_path=True)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def mock_subprocess_popen(output_list):
|
|
102
|
+
mock_process = unittest.mock.MagicMock()
|
|
103
|
+
mock_process.wait.return_value = 0
|
|
104
|
+
mock_process.stdout.readline.side_effect = output_list
|
|
105
|
+
mock_process.returncode = 0
|
|
106
|
+
|
|
107
|
+
def mock_popen(*args, **kwargs):
|
|
108
|
+
return mock_process
|
|
109
|
+
|
|
110
|
+
return unittest.mock.patch('subprocess.Popen', mock_popen)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
@contextlib.contextmanager
|
|
114
|
+
def mock_command(cls, targets=[], opts={}, fixture=None, method=''):
|
|
115
|
+
mocks = []
|
|
116
|
+
if isinstance(fixture, dict):
|
|
117
|
+
fixture = [fixture]
|
|
118
|
+
|
|
119
|
+
is_list = isinstance(fixture, list)
|
|
120
|
+
if is_list:
|
|
121
|
+
for item in fixture:
|
|
122
|
+
if isinstance(item, dict):
|
|
123
|
+
mocks.append(json.dumps(item))
|
|
124
|
+
else:
|
|
125
|
+
mocks.append(item)
|
|
126
|
+
else:
|
|
127
|
+
mocks.append(fixture)
|
|
128
|
+
|
|
129
|
+
with mock_subprocess_popen(mocks):
|
|
130
|
+
command = cls(targets, **opts)
|
|
131
|
+
if method == 'run':
|
|
132
|
+
yield cls(targets, **opts).run()
|
|
133
|
+
elif method == 'si':
|
|
134
|
+
yield cls.si([], targets, **opts)
|
|
135
|
+
elif method in ['s', 'delay']:
|
|
136
|
+
yield getattr(cls, method)(targets, **opts)
|
|
137
|
+
else:
|
|
138
|
+
yield command
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
class CommandOutputTester: # Mixin for unittest.TestCase
|
|
142
|
+
|
|
143
|
+
def _test_task_output(
|
|
144
|
+
self,
|
|
145
|
+
results,
|
|
146
|
+
expected_output_keys=[],
|
|
147
|
+
expected_output_types=[],
|
|
148
|
+
expected_results=[],
|
|
149
|
+
empty_results_allowed=False):
|
|
150
|
+
|
|
151
|
+
if not isinstance(results, list):
|
|
152
|
+
results = [results]
|
|
153
|
+
|
|
154
|
+
try:
|
|
155
|
+
if not empty_results_allowed:
|
|
156
|
+
self.assertGreater(len(results), 0)
|
|
157
|
+
|
|
158
|
+
for item in results:
|
|
159
|
+
|
|
160
|
+
if DEBUG > 2:
|
|
161
|
+
console.log('\n', log_locals=True)
|
|
162
|
+
|
|
163
|
+
if DEBUG > 0 and isinstance(item, OutputType):
|
|
164
|
+
print(repr(item))
|
|
165
|
+
|
|
166
|
+
if expected_output_types:
|
|
167
|
+
self.assertIn(type(item), expected_output_types)
|
|
168
|
+
|
|
169
|
+
if expected_output_keys:
|
|
170
|
+
keys = [k for k in list(item.keys()) if not k.startswith('_')]
|
|
171
|
+
self.assertEqual(
|
|
172
|
+
set(keys).difference(set(expected_output_keys)),
|
|
173
|
+
set())
|
|
174
|
+
|
|
175
|
+
if expected_results:
|
|
176
|
+
for result in expected_results:
|
|
177
|
+
self.assertIn(result, results)
|
|
178
|
+
|
|
179
|
+
except Exception:
|
|
180
|
+
console.print('[bold red] failed[/]')
|
|
181
|
+
raise
|
|
182
|
+
|
|
183
|
+
console.print('[bold green] ok[/]')
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: secator
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: The pentester's swiss knife.
|
|
5
|
+
Project-URL: Homepage, https://github.com/freelabz/secator
|
|
6
|
+
Project-URL: Issues, https://github.com/freelabz/secator/issues
|
|
7
|
+
Author-email: FreeLabz <sales@freelabz.com>
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Keywords: automation,cybersecurity,pentest,recon,vulnerability
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Intended Audience :: Information Technology
|
|
13
|
+
Classifier: License :: Free for non-commercial use
|
|
14
|
+
Classifier: Operating System :: Unix
|
|
15
|
+
Classifier: Programming Language :: Python
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Requires-Dist: bs4<1
|
|
22
|
+
Requires-Dist: celery<6
|
|
23
|
+
Requires-Dist: cpe<2
|
|
24
|
+
Requires-Dist: dotmap<2
|
|
25
|
+
Requires-Dist: free-proxy<2
|
|
26
|
+
Requires-Dist: furl<3
|
|
27
|
+
Requires-Dist: humanize<5
|
|
28
|
+
Requires-Dist: ifaddr<1
|
|
29
|
+
Requires-Dist: jinja2<4
|
|
30
|
+
Requires-Dist: python-dotenv<2
|
|
31
|
+
Requires-Dist: pyyaml<7
|
|
32
|
+
Requires-Dist: requests<3
|
|
33
|
+
Requires-Dist: rich-click<1.7
|
|
34
|
+
Requires-Dist: rich<14
|
|
35
|
+
Requires-Dist: validators<1
|
|
36
|
+
Requires-Dist: xmltodict<1
|
|
37
|
+
Provides-Extra: dev
|
|
38
|
+
Requires-Dist: asciinema-automation<1; extra == 'dev'
|
|
39
|
+
Requires-Dist: coverage<8; extra == 'dev'
|
|
40
|
+
Requires-Dist: flake8<8; extra == 'dev'
|
|
41
|
+
Requires-Dist: watchdog<3; extra == 'dev'
|
|
42
|
+
Provides-Extra: google
|
|
43
|
+
Requires-Dist: google-api-python-client<3; extra == 'google'
|
|
44
|
+
Requires-Dist: gspread<7; extra == 'google'
|
|
45
|
+
Provides-Extra: mongodb
|
|
46
|
+
Requires-Dist: pymongo<5; extra == 'mongodb'
|
|
47
|
+
Provides-Extra: redis
|
|
48
|
+
Requires-Dist: redis<6; extra == 'redis'
|
|
49
|
+
Provides-Extra: trace
|
|
50
|
+
Requires-Dist: memray<2; extra == 'trace'
|
|
51
|
+
Requires-Dist: pyinstrument<5; extra == 'trace'
|
|
52
|
+
Provides-Extra: worker
|
|
53
|
+
Requires-Dist: eventlet<1; extra == 'worker'
|
|
54
|
+
Requires-Dist: flower<3; extra == 'worker'
|
|
55
|
+
Requires-Dist: gevent<25; extra == 'worker'
|
|
56
|
+
Description-Content-Type: text/markdown
|
|
57
|
+
|
|
58
|
+
<h1 align="center">
|
|
59
|
+
<img src="https://github.com/freelabz/secator/assets/9629314/ee203af4-e853-439a-af01-edeabfc4bf07/" width="400">
|
|
60
|
+
</h1>
|
|
61
|
+
|
|
62
|
+
<h4 align="center">The pentester's swiss knife.</h4>
|
|
63
|
+
|
|
64
|
+
<p align="center">
|
|
65
|
+
<!-- <a href="https://goreportcard.com/report/github.com/freelabz/secator"><img src="https://goreportcard.com/badge/github.com/freelabz/secator"></a> -->
|
|
66
|
+
<img src="https://img.shields.io/badge/python-3.6-blue.svg">
|
|
67
|
+
<a href="https://github.com/freelabz/secator/releases"><img src="https://img.shields.io/github/release/freelabz/secator"></a>
|
|
68
|
+
<a href="https://github.com/freelabz/secator/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-BSL%201.1-brightgreen.svg"></a>
|
|
69
|
+
<a href="https://pypi.org/project/secator/"><img src="https://img.shields.io/pypi/dm/secator"></a>
|
|
70
|
+
<a href="https://twitter.com/freelabz"><img src="https://img.shields.io/twitter/follow/freelabz.svg?logo=twitter"></a>
|
|
71
|
+
<a href="https://youtube.com/@FreeLabz"><img src="https://img.shields.io/youtube/channel/subscribers/UCu-F6SpU0h2NP18zBBP04cw?style=social&label=Subscribe%20%40FreeLabz"></a>
|
|
72
|
+
<!-- <a href="https://discord.gg/freelabz"><img src="https://img.shields.io/discord/695645237418131507.svg?logo=discord"></a> -->
|
|
73
|
+
</p>
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
<p align="center">
|
|
77
|
+
<a href="#features">Features</a> •
|
|
78
|
+
<a href="#supported-commands">Supported commands</a> •
|
|
79
|
+
<a href="#install-secator">Installation</a> •
|
|
80
|
+
<a href="#usage">Usage</a> •
|
|
81
|
+
<a href="https://docs.freelabz.com">Documentation</a>
|
|
82
|
+
</p>
|
|
83
|
+
|
|
84
|
+
`secator` is a task and workflow runner used for security assessments. It supports dozens of well-known security tools
|
|
85
|
+
and it is designed to improve productivity for pentesters and security researchers.
|
|
86
|
+
|
|
87
|
+
# Features
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+
* **Curated list of commands**
|
|
92
|
+
|
|
93
|
+
* **Unified input options**
|
|
94
|
+
|
|
95
|
+
* **Unified output schema**
|
|
96
|
+
|
|
97
|
+
* **CLI and library usage**
|
|
98
|
+
|
|
99
|
+
* **Distributed options with Celery**
|
|
100
|
+
|
|
101
|
+
* **Complexity from simple tasks to complex workflows**
|
|
102
|
+
|
|
103
|
+
* **Customizable**
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## Supported tools
|
|
107
|
+
|
|
108
|
+
`secator` integrates the following tools:
|
|
109
|
+
|
|
110
|
+
| Name | Description | Category |
|
|
111
|
+
|---------------------------------------------------------------|--------------------------------------------------------------------------------|----------------|
|
|
112
|
+
| [httpx](https://github.com/projectdiscovery/httpx) | Fast HTTP prober. | `http` |
|
|
113
|
+
| [cariddi](https://github.com/edoardottt/cariddi) | Fast crawler and endpoint secrets / api keys / tokens matcher. | `http/crawler` |
|
|
114
|
+
| [gau](https://github.com/lc/gau) | Offline URL crawler (Alien Vault, The Wayback Machine, Common Crawl, URLScan). | `http/crawler` |
|
|
115
|
+
| [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `http/crawler` |
|
|
116
|
+
| [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `http/crawler` |
|
|
117
|
+
| [dirsearch](https://github.com/maurosoria/dirsearch) | Web path discovery. | `http/fuzzer` |
|
|
118
|
+
| [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust. | `http/fuzzer` |
|
|
119
|
+
| [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `http/fuzzer` |
|
|
120
|
+
| [h8mail](https://github.com/khast3x/h8mail) | Email OSINT and breach hunting tool. | `osint` |
|
|
121
|
+
| [dnsx](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit designed for running DNS queries. | `recon/dns` |
|
|
122
|
+
| [dnsxbrute](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit designed for running DNS queries (bruteforce mode). | `recon/dns` |
|
|
123
|
+
| [subfinder](https://github.com/projectdiscovery/subfinder) | Fast subdomain finder. | `recon/dns` |
|
|
124
|
+
| [fping](https://fping.org/) | Find alive hosts on local networks. | `recon/ip` |
|
|
125
|
+
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | Expand CIDR ranges into IPs. | `recon/ip` |
|
|
126
|
+
| [naabu](https://github.com/projectdiscovery/naabu) | Fast port discovery tool. | `recon/port` |
|
|
127
|
+
| [maigret](https://github.com/soxoj/maigret) | Hunt for user accounts across many websites. | `recon/user` |
|
|
128
|
+
| [gf](https://github.com/tomnomnom/gf) | A wrapper around grep to avoid typing common patterns. | `tagger` |
|
|
129
|
+
| [grype](https://github.com/anchore/grype) | A vulnerability scanner for container images and filesystems. | `vuln/code` |
|
|
130
|
+
| [dalfox](https://github.com/hahwul/dalfox) | Powerful XSS scanning tool and parameter analyzer. | `vuln/http` |
|
|
131
|
+
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview) | CLI to access and work with the Metasploit Framework. | `vuln/http` |
|
|
132
|
+
| [wpscan](https://github.com/wpscanteam/wpscan) | WordPress Security Scanner | `vuln/multi` |
|
|
133
|
+
| [nmap](https://github.com/nmap/nmap) | Vulnerability scanner using NSE scripts. | `vuln/multi` |
|
|
134
|
+
| [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/multi` |
|
|
135
|
+
| [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher. | `exploit/search` |
|
|
136
|
+
|
|
137
|
+
Feel free to request new tools to be added by opening an issue, but please
|
|
138
|
+
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)).
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
## Installation
|
|
142
|
+
|
|
143
|
+
### Installing secator
|
|
144
|
+
|
|
145
|
+
<details>
|
|
146
|
+
<summary>Pipx</summary>
|
|
147
|
+
|
|
148
|
+
```sh
|
|
149
|
+
pipx install secator
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
</details>
|
|
153
|
+
|
|
154
|
+
<details>
|
|
155
|
+
<summary>Pip</summary>
|
|
156
|
+
|
|
157
|
+
```sh
|
|
158
|
+
pip install secator
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
</details>
|
|
162
|
+
|
|
163
|
+
<details>
|
|
164
|
+
<summary>Bash</summary>
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
wget -O - https://raw.githubusercontent.com/freelabz/secator/main/scripts/install.sh | sh
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
</details>
|
|
171
|
+
|
|
172
|
+
<details>
|
|
173
|
+
<summary>Docker</summary>
|
|
174
|
+
|
|
175
|
+
```sh
|
|
176
|
+
docker run -it freelabz/secator --help
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
</details>
|
|
180
|
+
|
|
181
|
+
<details>
|
|
182
|
+
<summary>Docker Compose</summary>
|
|
183
|
+
|
|
184
|
+
```sh
|
|
185
|
+
git clone https://github.com/freelabz/secator
|
|
186
|
+
cd secator
|
|
187
|
+
docker-compose up -d
|
|
188
|
+
docker-compose exec secator secator --help
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
</details>
|
|
192
|
+
|
|
193
|
+
***Note:*** If you chose the Bash, Docker or Docker Compose installation methods, you can skip the next sections and go straight to [Usage](#usage).
|
|
194
|
+
|
|
195
|
+
### Installing languages
|
|
196
|
+
|
|
197
|
+
`secator` uses external tools, so you might need to install languages used by those tools assuming they are not already installed on your system.
|
|
198
|
+
|
|
199
|
+
We provide utilities to install required languages if you don't manage them externally:
|
|
200
|
+
|
|
201
|
+
<details>
|
|
202
|
+
<summary>Go</summary>
|
|
203
|
+
|
|
204
|
+
```sh
|
|
205
|
+
secator install langs go
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
</details>
|
|
209
|
+
|
|
210
|
+
<details>
|
|
211
|
+
<summary>Ruby</summary>
|
|
212
|
+
|
|
213
|
+
```sh
|
|
214
|
+
secator install langs ruby
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
</details>
|
|
218
|
+
|
|
219
|
+
### Installing tools
|
|
220
|
+
|
|
221
|
+
`secator` does not install any of the external tools it supports by default.
|
|
222
|
+
|
|
223
|
+
We provide utilities to install or update each supported tool which should work on all systems supporting `apt`:
|
|
224
|
+
|
|
225
|
+
<details>
|
|
226
|
+
<summary>All tools</summary>
|
|
227
|
+
|
|
228
|
+
```sh
|
|
229
|
+
secator install tools
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
</details>
|
|
233
|
+
|
|
234
|
+
<details>
|
|
235
|
+
<summary>Specific tools</summary>
|
|
236
|
+
|
|
237
|
+
```sh
|
|
238
|
+
secator install tools <TOOL_NAME>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
For instance, to install `httpx`, use:
|
|
242
|
+
|
|
243
|
+
```sh
|
|
244
|
+
secator install tools httpx
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
</details>
|
|
248
|
+
|
|
249
|
+
Please make sure you are using the latest available versions for each tool before you run secator or you might run into parsing / formatting issues.
|
|
250
|
+
|
|
251
|
+
### Installing addons
|
|
252
|
+
|
|
253
|
+
`secator` comes installed with the minimum amount of dependencies.
|
|
254
|
+
|
|
255
|
+
There are several addons available for `secator`:
|
|
256
|
+
|
|
257
|
+
<details>
|
|
258
|
+
<summary>worker</summary>
|
|
259
|
+
|
|
260
|
+
Add support for Celery workers (see [Distributed runs with Celery](https://docs.freelabz.com/in-depth/distributed-runs-with-celery)).
|
|
261
|
+
```sh
|
|
262
|
+
secator install addons worker
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
</details>
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
<details>
|
|
269
|
+
<summary>google</summary>
|
|
270
|
+
|
|
271
|
+
Add support for Google Drive exporter (`-o gdrive`).
|
|
272
|
+
|
|
273
|
+
```sh
|
|
274
|
+
secator install addons google
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
</details>
|
|
278
|
+
|
|
279
|
+
<details>
|
|
280
|
+
<summary>mongodb</summary>
|
|
281
|
+
|
|
282
|
+
Add support for MongoDB driver (`-driver mongodb`).
|
|
283
|
+
```sh
|
|
284
|
+
secator install addons mongodb
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
</details>
|
|
288
|
+
|
|
289
|
+
<details>
|
|
290
|
+
<summary>redis</summary>
|
|
291
|
+
|
|
292
|
+
Add support for Redis backend (Celery).
|
|
293
|
+
|
|
294
|
+
```sh
|
|
295
|
+
secator install addons redis
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
</details>
|
|
299
|
+
|
|
300
|
+
<details>
|
|
301
|
+
<summary>dev</summary>
|
|
302
|
+
|
|
303
|
+
Add development tools like `coverage` and `flake8` required for running tests.
|
|
304
|
+
|
|
305
|
+
```sh
|
|
306
|
+
secator install addons dev
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
</details>
|
|
310
|
+
|
|
311
|
+
<details>
|
|
312
|
+
<summary>trace</summary>
|
|
313
|
+
|
|
314
|
+
Add tracing tools like `memray` and `pyinstrument` required for tracing functions.
|
|
315
|
+
|
|
316
|
+
```sh
|
|
317
|
+
secator install addons trace
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
</details>
|
|
321
|
+
|
|
322
|
+
### Checking installation health
|
|
323
|
+
|
|
324
|
+
To figure out which languages or tools are installed on your system (along with their version):
|
|
325
|
+
```sh
|
|
326
|
+
secator health
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Usage
|
|
330
|
+
```sh
|
|
331
|
+
secator --help
|
|
332
|
+
```
|
|
333
|
+

|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
### Usage examples
|
|
337
|
+
|
|
338
|
+
Run a fuzzing task (`ffuf`):
|
|
339
|
+
|
|
340
|
+
```sh
|
|
341
|
+
secator x ffuf http://testphp.vulnweb.com/FUZZ
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Run a url crawl workflow:
|
|
345
|
+
|
|
346
|
+
```sh
|
|
347
|
+
secator w url_crawl http://testphp.vulnweb.com
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
Run a host scan:
|
|
351
|
+
|
|
352
|
+
```sh
|
|
353
|
+
secator s host mydomain.com
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
and more... to list all tasks / workflows / scans that you can use:
|
|
357
|
+
```sh
|
|
358
|
+
secator x --help
|
|
359
|
+
secator w --help
|
|
360
|
+
secator s --help
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Learn more
|
|
364
|
+
|
|
365
|
+
To go deeper with `secator`, check out:
|
|
366
|
+
* Our complete [documentation](https://docs.freelabz.com)
|
|
367
|
+
* Our getting started [tutorial video](https://youtu.be/-JmUTNWQDTQ?si=qpAClDWMXo2zwUK7)
|
|
368
|
+
* Our [Medium post](https://medium.com/p/09333f3d3682)
|
|
369
|
+
* Follow us on social media: [@freelabz](https://twitter.com/freelabz) on Twitter and [@FreeLabz](https://youtube.com/@FreeLabz) on YouTube
|
|
370
|
+
|
|
371
|
+
## Stats
|
|
372
|
+
|
|
373
|
+
<a href="https://star-history.com/#freelabz/secator&Date">
|
|
374
|
+
<picture>
|
|
375
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date&theme=dark" />
|
|
376
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
|
|
377
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
|
|
378
|
+
</picture>
|
|
379
|
+
</a>
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
secator/.gitignore,sha256=da8MUc3hdb6Mo0WjZu2upn5uZMbXcBGvhdhTQ1L89HI,3093
|
|
2
|
+
secator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
secator/celery.py,sha256=zXjg7EKneWjErBTNrJCHOXCJzs-P5jBi5gYqrSqjW4k,12227
|
|
4
|
+
secator/cli.py,sha256=x06YzjuNTvpOQACjKIpTRo3DSHm2CONiXXB74OTPOJY,28170
|
|
5
|
+
secator/config.py,sha256=iOeRzq7u1rvR1-Oq5v9wGxQYB613X0xKGLIcrfhEGc4,3693
|
|
6
|
+
secator/decorators.py,sha256=IRH4CSesOJXKrzpSJ8xM2ZMUAFTk3GcqRI0SYIpIpag,10492
|
|
7
|
+
secator/definitions.py,sha256=EBI_HCf7E8O2UroXicOXrzcOt-Tp25-xiVQJVAW1duw,6044
|
|
8
|
+
secator/report.py,sha256=g0stVCcx9klbUS01uKvWcxNE9MJfNFMexYA2SoDIWJU,2596
|
|
9
|
+
secator/rich.py,sha256=7-uKJrQWiCKM0gPNIr_cr1c9KrcJSVd2ht-DgLXhBro,3392
|
|
10
|
+
secator/utils.py,sha256=oJEEls4Z8SfTxiG6keCfqLMMWA97ftS5aiABhBPRduU,9964
|
|
11
|
+
secator/utils_test.py,sha256=htfIqtbvvi7-8hduZaq9SjAvBeTIqwkA_4EZkYDXqaE,4998
|
|
12
|
+
secator/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
secator/configs/profiles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
secator/configs/profiles/aggressive.yaml,sha256=JilVySABlSCYEFMjH7V0Oc3dAVlkfHOh1odTGhtm7BQ,108
|
|
15
|
+
secator/configs/profiles/default.yaml,sha256=kDuOF1Qkpv4oz1GZ-OwDxbi5pptAqShsCqdzkBOxXfw,149
|
|
16
|
+
secator/configs/profiles/stealth.yaml,sha256=Ud3EMZ2yRj0AT6w-AfV7fWUBYib9VAFp46GPpof9YaU,107
|
|
17
|
+
secator/configs/scans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
secator/configs/scans/domain.yaml,sha256=Dkm5dU2NdUTInkWD5cmVczvhUH0soaKPtoESeg8BVsQ,265
|
|
19
|
+
secator/configs/scans/host.yaml,sha256=tobz6yGeYlVnGwLVI9RLJT6MDLnGmQVVj8EOwAdksfw,189
|
|
20
|
+
secator/configs/scans/network.yaml,sha256=ghlgIwkWhJKQeT6V5TE51dFL-VRszWJtm4qx4ImjEEY,252
|
|
21
|
+
secator/configs/scans/subdomain.yaml,sha256=I007b1V5Rmm_4R9mODp6jxonHNIjXkQT9sU-AOxLSIo,123
|
|
22
|
+
secator/configs/scans/url.yaml,sha256=zhRiqyHq7BZHtKsmjpMvp3vmt5DRNtmfqW44sZm1tWw,158
|
|
23
|
+
secator/configs/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
secator/configs/workflows/cidr_recon.yaml,sha256=u1QKDKGbpJEez5QqC20Yd_nBLZd_z4nA-XFRQV7pVI4,558
|
|
25
|
+
secator/configs/workflows/code_scan.yaml,sha256=3H8H55NVskiDbBwNueVF8FUYkquEQn2C6evnid9zhB4,207
|
|
26
|
+
secator/configs/workflows/host_recon.yaml,sha256=wHXMycHQpWq8gVc8YSr6Kv-_0CtIfmkr6j7AY6Lah2w,1018
|
|
27
|
+
secator/configs/workflows/port_scan.yaml,sha256=DPXL8m96h3oFdk7Lw_6dP1j0pl_qzi_kWszZvaId5f0,796
|
|
28
|
+
secator/configs/workflows/subdomain_recon.yaml,sha256=qMvvKj0rWO1xzMiaT6VZMysXYGJFrGgGHP0weYEhs2g,798
|
|
29
|
+
secator/configs/workflows/url_crawl.yaml,sha256=h74dvDBNLuY1EHc9FMby3ydr34VH1qFJHQKUaIIYpcw,573
|
|
30
|
+
secator/configs/workflows/url_dirsearch.yaml,sha256=6UiQNge1WkryetOxwqzERra0xmNG0U8Y8CWKFLTyUUQ,677
|
|
31
|
+
secator/configs/workflows/url_fuzz.yaml,sha256=K1RkplXrgc7q2YJVv5A6B5MMkAzIIv31HInhRCKMpyI,774
|
|
32
|
+
secator/configs/workflows/url_nuclei.yaml,sha256=Qigz-hJzM7GeNA_UD46dThVIoqbWlBgiYb_i5fSyJiI,265
|
|
33
|
+
secator/configs/workflows/url_vuln.yaml,sha256=RNeS6o1wworxCznvnAgrfzVnMayD-9hFQ0-W0NbqMJY,1345
|
|
34
|
+
secator/configs/workflows/user_hunt.yaml,sha256=e5b-CkkjhOPE8Yh5LUh0K60GKmxTgn4s-Joo7m9jKrk,180
|
|
35
|
+
secator/configs/workflows/wordpress.yaml,sha256=QgBUNi8Gav_efbmczUGfzlByWsmogTmGtu1MwAlvQts,279
|
|
36
|
+
secator/exporters/__init__.py,sha256=2nBPOOas9Fp4nmo9pjSw3mvklZNHL8BmH88w_i-eaJc,356
|
|
37
|
+
secator/exporters/_base.py,sha256=-RrrwO_qp0ETLLHSta4T-zKtMbWdiEmz1Cw5mNo6USU,77
|
|
38
|
+
secator/exporters/csv.py,sha256=xsPMljzJhoTc8lcfxWBIKH2niK6KeYL7Bx2NzpdsYw0,982
|
|
39
|
+
secator/exporters/gdrive.py,sha256=VI6r1vlChz39myaN4sFvOlHO32SAhZS5_mI5EwGUdq8,4056
|
|
40
|
+
secator/exporters/json.py,sha256=cWkDugUdy-lbcPFKNgBrRFxHspiFhjVbJfdDABjJ9uk,431
|
|
41
|
+
secator/exporters/table.py,sha256=RHQoaFeeyeoBGNucJgrlk2KtmVqe9BGNtAAYee7xJ8Y,210
|
|
42
|
+
secator/exporters/txt.py,sha256=AUvcFp_-IJp55RWYvMHJzcDqcheL6m3-cl4QMUxVgKk,771
|
|
43
|
+
secator/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
secator/hooks/mongodb.py,sha256=GTd6BeiGtWUPWjmXKmalZYNoeGNZfNqEJ6BxRJh1Mr8,7149
|
|
45
|
+
secator/output_types/__init__.py,sha256=uj6AXDeorECPwhwekNVGjQbGv41jHG_8udkuoc4XzW0,854
|
|
46
|
+
secator/output_types/_base.py,sha256=bld1ED0pN1hOvwBV2canrlKrfBCgawzWKPDH6F3jVQE,2469
|
|
47
|
+
secator/output_types/exploit.py,sha256=NIa0mbhm3ZTyV5kyjEvrI5QK2swMpdMCj3f1gIWcsro,1581
|
|
48
|
+
secator/output_types/ip.py,sha256=ySEqH3Gs7U41I1kS8olZ_p3Mk7JryEbXHLyexqlBQNA,995
|
|
49
|
+
secator/output_types/port.py,sha256=1ZmV4FDvwk1dvFXySnz5yIp13hbaRhnunxnETm66Os0,1607
|
|
50
|
+
secator/output_types/progress.py,sha256=u_-4IiECTSCJf-X_RkFOoFyb8mrff2rMcm8GGqLZ8hs,1231
|
|
51
|
+
secator/output_types/record.py,sha256=WnI0yvwzrO2Wt7OWciHMOuIRRLbuSOAJczdNshV7tYU,1192
|
|
52
|
+
secator/output_types/subdomain.py,sha256=lmCoK7_8I4FXWgl9kToRvDn3gr3E3uBTaQzFAOHbswE,1343
|
|
53
|
+
secator/output_types/tag.py,sha256=8AlT0VigsYP04GN8sPCTM07IlL5uMUmFgsNa9IDCoyY,1431
|
|
54
|
+
secator/output_types/target.py,sha256=gJWzzqhal34Cnl9oAKf0m1MSaGxRtUGdA2XbkhD_yd0,848
|
|
55
|
+
secator/output_types/url.py,sha256=yDozBXCuPfuybH1iX_xGmbCJPXO6Ei14C8Hp5CnzNbE,2535
|
|
56
|
+
secator/output_types/user_account.py,sha256=EiT2BFl2LTCdqHF1meoMEKVhjKGroyf8-JoWHPuBOTc,1378
|
|
57
|
+
secator/output_types/vulnerability.py,sha256=p0DTbr5w7Vv5D3dgbdnvsG5qXzqVVk4YPOPWYS1lxmM,2843
|
|
58
|
+
secator/runners/__init__.py,sha256=EBbOk37vkBy9p8Hhrbi-2VtM_rTwQ3b-0ggTyiD22cE,290
|
|
59
|
+
secator/runners/_base.py,sha256=Or9bDSsxcwYTUeW6G7-Pmag82_yGUtREuzSZWj9IgHY,27268
|
|
60
|
+
secator/runners/_helpers.py,sha256=7UUboSsr4b6srIOOHtSSYhJ9Jxq_qaMVbbF2gVEBnR4,3703
|
|
61
|
+
secator/runners/command.py,sha256=NDLcwbOcOu1JpKQbrRAK91phIj-JiTrdbcgXyBjokdA,18982
|
|
62
|
+
secator/runners/scan.py,sha256=FjmlL_zkraqhS3rBwy5jHnGsKt2n7Hb2gi4qhgeGenw,1727
|
|
63
|
+
secator/runners/task.py,sha256=JS8JPCW6v3_f_jbFV1-robR53epPPDj0PdxqAtXKmEs,2775
|
|
64
|
+
secator/runners/workflow.py,sha256=Mz8Q4OT48B-o-iQHgZ84WpZfwaECQOp8KRdIirg3He0,3766
|
|
65
|
+
secator/serializers/__init__.py,sha256=OP5cmFl77ovgSCW_IDcZ21St2mUt5UK4QHfrsK2KvH8,248
|
|
66
|
+
secator/serializers/dataclass.py,sha256=g5gMT4NwndjhGcGbFuYEs07AZW_Q_m9orov_edVEGlI,792
|
|
67
|
+
secator/serializers/json.py,sha256=XwuSQOBwrOAs16F5HtY-Q-rAGAxfNvlq3z-Nb2gwigE,304
|
|
68
|
+
secator/serializers/regex.py,sha256=hGJ_1JSOv9xPtfn_umHlsjnR_alnsDFv-UmjYCC3vwU,314
|
|
69
|
+
secator/tasks/__init__.py,sha256=Wp2QF5QS2e_BlVygsIEFbmYPTfTg7v_Vd3LQJeXTC7I,344
|
|
70
|
+
secator/tasks/_categories.py,sha256=RuN483yhmzOPg_eR1-djR8MQe96lH4d8UVvaKvcXmiI,9069
|
|
71
|
+
secator/tasks/cariddi.py,sha256=Np9QPMpuqGtsLGHANfcbNaYjoQaqjkFXX9Dbtbtcgu4,3109
|
|
72
|
+
secator/tasks/dalfox.py,sha256=2P43YOoz5PwHGn5L_9rkJswPopCkJBKs0v1CAOinE_0,1703
|
|
73
|
+
secator/tasks/dirsearch.py,sha256=2hJeJZJwaAl3-UAjBwlmjW1w9bxjVWxxwfcaTTxqClc,2387
|
|
74
|
+
secator/tasks/dnsx.py,sha256=6v2ttbycLLt6p-1B05P5662QNdFgS-ozrKjzN3w8hSk,1722
|
|
75
|
+
secator/tasks/dnsxbrute.py,sha256=_wjanOvxKsxZzuSPGiBOsd7TRrbshQgyEEZUCP0tVN4,1172
|
|
76
|
+
secator/tasks/feroxbuster.py,sha256=400i6Egj9jn_Ap_zRfca2RG8c1P30CZBAYLC8UzyW-g,2965
|
|
77
|
+
secator/tasks/ffuf.py,sha256=y6vDlxs5fN7rPQjS71wlu4FBwijjTIVbsbRwh3ldOnY,2492
|
|
78
|
+
secator/tasks/fping.py,sha256=P2EAPUGgwEC4Geh2zUbBPKF9bdqrlrdDg-R_TYLTFng,1127
|
|
79
|
+
secator/tasks/gau.py,sha256=YB89dsUVwLaRplIpEiiUA7mwTM7s3vyH4Cs6ZjzcAnY,1357
|
|
80
|
+
secator/tasks/gf.py,sha256=WlhoEyL6xE79w6nE5XNSXHs-jVeO10njqJxBF8w20sA,945
|
|
81
|
+
secator/tasks/gospider.py,sha256=-zIttWmabtt5qWkxCFSeCKmC2swUhv038j3rbFReXSE,2121
|
|
82
|
+
secator/tasks/grype.py,sha256=Q8VJbLt6YLYUqlsbR1OxzGDAqEVaDS_nNQ0klOm53O0,2372
|
|
83
|
+
secator/tasks/h8mail.py,sha256=hZBpfV6M1mbpD_PbDHxLI5HMvqAvTeY_W0lbkq3Hugo,2037
|
|
84
|
+
secator/tasks/httpx.py,sha256=MMjg705z49YooEqglZ4J1UqAKQffDPWMV6kv3fjWZS0,3929
|
|
85
|
+
secator/tasks/katana.py,sha256=Vr9YUcooVyIpkaGeC-O4meSqQHnebNze7jy662llR_E,4283
|
|
86
|
+
secator/tasks/maigret.py,sha256=PZDTICJ4LZF3joKe-dXu2alffakD_1sxBuNEUBtJDm4,2098
|
|
87
|
+
secator/tasks/mapcidr.py,sha256=O6zssQMMrg3JGXIhldgOD28WNATAb_wfj0svHr0DRxg,928
|
|
88
|
+
secator/tasks/msfconsole.py,sha256=pCHY9UMU2VXYNza06Nxw7lZpDUMk5nMU-C3P7Z4Nz04,6069
|
|
89
|
+
secator/tasks/naabu.py,sha256=FgrlIuTX-p4FqXNzck2XGXRjFjPH97w04y5M2JkYo_0,1514
|
|
90
|
+
secator/tasks/nmap.py,sha256=LS5FBo-vFxbHVK4DxF5x-O2cAvAK3zL1pROT1GddX9E,9459
|
|
91
|
+
secator/tasks/nuclei.py,sha256=iOBKsEY9kkytp_cenYx6061kcEUCjqyT_c3PwoYkHPY,3292
|
|
92
|
+
secator/tasks/searchsploit.py,sha256=RD2uv3GFI3Eb-DiTzJp59jyXnvAZRACq-WjDI1NgFM0,1664
|
|
93
|
+
secator/tasks/subfinder.py,sha256=_T7erWmfriqLeN5kquO3-L9DlR0mEjYPPC7NMzwTqwg,1033
|
|
94
|
+
secator/tasks/wpscan.py,sha256=9SVUM5Bwsm52GvanJPygzKPkOp10b-x7_vGtTV9ZqH4,5377
|
|
95
|
+
secator-0.1.0.dist-info/METADATA,sha256=5qae-jdIDw61K0YpOUFQZYpnlqcDCDpx8OL_a7b7S7o,13065
|
|
96
|
+
secator-0.1.0.dist-info/WHEEL,sha256=wpsUbWzR9la66_V7_eWTdyvs6WD26tazKT2BBEAC-EM,105
|
|
97
|
+
secator-0.1.0.dist-info/entry_points.txt,sha256=lPgsqqUXWgiuGSfKy-se5gHdQlAXIwS_A46NYq7Acic,44
|
|
98
|
+
secator-0.1.0.dist-info/licenses/LICENSE,sha256=19W5Jsy4WTctNkqmZIqLRV1gTDOp01S3LDj9iSgWaJ0,2867
|
|
99
|
+
secator-0.1.0.dist-info/RECORD,,
|