secator 0.15.0__tar.gz → 0.16.0__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.
- secator-0.16.0/.coderabbit.yaml +148 -0
- {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.alpine +2 -2
- {secator-0.15.0 → secator-0.16.0}/CHANGELOG.md +51 -0
- {secator-0.15.0 → secator-0.16.0}/PKG-INFO +37 -36
- {secator-0.15.0 → secator-0.16.0}/README.md +35 -35
- {secator-0.15.0 → secator-0.16.0}/pyproject.toml +2 -1
- secator-0.16.0/scripts/generate_tools_md_table.py +131 -0
- secator-0.16.0/scripts/update_tools.sh +35 -0
- {secator-0.15.0 → secator-0.16.0}/secator/celery.py +40 -24
- secator-0.16.0/secator/celery_signals.py +137 -0
- {secator-0.15.0 → secator-0.16.0}/secator/celery_utils.py +43 -27
- {secator-0.15.0 → secator-0.16.0}/secator/cli.py +520 -280
- secator-0.16.0/secator/cli_helper.py +394 -0
- secator-0.16.0/secator/click.py +87 -0
- {secator-0.15.0 → secator-0.16.0}/secator/config.py +67 -39
- secator-0.16.0/secator/configs/profiles/http_headless.yaml +6 -0
- secator-0.16.0/secator/configs/profiles/http_record.yaml +6 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/tor.yaml +1 -1
- {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/domain.yaml +4 -2
- {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/host.yaml +1 -1
- {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/network.yaml +1 -4
- secator-0.16.0/secator/configs/scans/subdomain.yaml +20 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/url.yaml +1 -2
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/cidr_recon.yaml +6 -4
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/code_scan.yaml +1 -1
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/host_recon.yaml +29 -3
- secator-0.16.0/secator/configs/workflows/subdomain_recon.yaml +84 -0
- secator-0.16.0/secator/configs/workflows/url_crawl.yaml +58 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_dirsearch.yaml +4 -4
- secator-0.16.0/secator/configs/workflows/url_fuzz.yaml +43 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_params_fuzz.yaml +7 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_vuln.yaml +33 -8
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/user_hunt.yaml +2 -1
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/wordpress.yaml +5 -3
- secator-0.16.0/secator/cve.py +718 -0
- secator-0.16.0/secator/decorators.py +7 -0
- {secator-0.15.0 → secator-0.16.0}/secator/definitions.py +49 -30
- secator-0.16.0/secator/exporters/_base.py +3 -0
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/console.py +2 -2
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/table.py +4 -3
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/txt.py +1 -1
- {secator-0.15.0 → secator-0.16.0}/secator/hooks/mongodb.py +2 -4
- {secator-0.15.0 → secator-0.16.0}/secator/installer.py +77 -49
- secator-0.16.0/secator/loader.py +116 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/_base.py +3 -0
- secator-0.16.0/secator/output_types/certificate.py +78 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/error.py +4 -5
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/info.py +2 -2
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/ip.py +3 -1
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/progress.py +5 -9
- secator-0.16.0/secator/output_types/state.py +29 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/tag.py +3 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/target.py +10 -2
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/url.py +19 -7
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/vulnerability.py +11 -7
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/warning.py +2 -2
- {secator-0.15.0 → secator-0.16.0}/secator/report.py +27 -15
- {secator-0.15.0 → secator-0.16.0}/secator/rich.py +18 -10
- {secator-0.15.0 → secator-0.16.0}/secator/runners/_base.py +447 -234
- secator-0.16.0/secator/runners/_helpers.py +217 -0
- {secator-0.15.0 → secator-0.16.0}/secator/runners/command.py +182 -102
- {secator-0.15.0 → secator-0.16.0}/secator/runners/scan.py +33 -5
- {secator-0.15.0 → secator-0.16.0}/secator/runners/task.py +13 -7
- secator-0.16.0/secator/runners/workflow.py +168 -0
- {secator-0.15.0 → secator-0.16.0}/secator/scans/__init__.py +2 -2
- secator-0.16.0/secator/serializers/dataclass.py +39 -0
- secator-0.16.0/secator/tasks/__init__.py +8 -0
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/_categories.py +39 -27
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/arjun.py +9 -5
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/bbot.py +53 -21
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/bup.py +19 -5
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/cariddi.py +24 -3
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/dalfox.py +26 -7
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/dirsearch.py +10 -4
- secator-0.16.0/secator/tasks/dnsx.py +124 -0
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/feroxbuster.py +11 -3
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/ffuf.py +42 -6
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/fping.py +20 -8
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/gau.py +3 -1
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/gf.py +5 -4
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/gitleaks.py +2 -2
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/gospider.py +7 -1
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/grype.py +5 -4
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/h8mail.py +2 -1
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/httpx.py +18 -5
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/katana.py +35 -15
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/maigret.py +4 -4
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/mapcidr.py +3 -3
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/msfconsole.py +4 -4
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/naabu.py +5 -4
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/nmap.py +12 -14
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/nuclei.py +3 -3
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/searchsploit.py +6 -5
- secator-0.16.0/secator/tasks/testssl.py +277 -0
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/trivy.py +5 -5
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/wafw00f.py +21 -3
- secator-0.16.0/secator/tasks/wpprobe.py +103 -0
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/wpscan.py +6 -5
- secator-0.16.0/secator/template.py +263 -0
- secator-0.16.0/secator/thread.py +24 -0
- secator-0.16.0/secator/tree.py +196 -0
- {secator-0.15.0 → secator-0.16.0}/secator/utils.py +131 -123
- {secator-0.15.0 → secator-0.16.0}/secator/utils_test.py +60 -19
- {secator-0.15.0 → secator-0.16.0}/secator/workflows/__init__.py +2 -2
- {secator-0.15.0 → secator-0.16.0}/tests/fixtures/ls.py +2 -0
- secator-0.16.0/tests/integration/all.yaml +17 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/inputs.py +0 -1
- {secator-0.15.0 → secator-0.16.0}/tests/integration/outputs.py +51 -27
- {secator-0.15.0 → secator-0.16.0}/tests/integration/setup.sh +6 -2
- {secator-0.15.0 → secator-0.16.0}/tests/integration/teardown.sh +4 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/test_celery.py +6 -6
- {secator-0.15.0 → secator-0.16.0}/tests/integration/test_scans.py +2 -3
- {secator-0.15.0 → secator-0.16.0}/tests/integration/test_tasks.py +29 -11
- secator-0.16.0/tests/integration/test_tasks_categories.py +44 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/test_worker.py +4 -4
- {secator-0.15.0 → secator-0.16.0}/tests/integration/test_workflows.py +4 -11
- {secator-0.15.0 → secator-0.16.0}/tests/performance/loadtester.py +8 -10
- {secator-0.15.0 → secator-0.16.0}/tests/performance/test_worker.py +5 -5
- secator-0.16.0/tests/template/test_templates.py +62 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_celery.py +7 -5
- secator-0.16.0/tests/unit/test_cli.py +285 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_command.py +7 -7
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_runners.py +9 -5
- secator-0.16.0/tests/unit/test_runners_helpers.py +242 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_tasks.py +13 -6
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_tasks_categories.py +3 -4
- secator-0.16.0/tests/unit/test_template.py +203 -0
- secator-0.15.0/secator/celery_signals.py +0 -134
- secator-0.15.0/secator/configs/profiles/default.yaml +0 -8
- secator-0.15.0/secator/configs/scans/subdomain.yaml +0 -8
- secator-0.15.0/secator/configs/workflows/subdomain_recon.yaml +0 -33
- secator-0.15.0/secator/configs/workflows/url_crawl.yaml +0 -29
- secator-0.15.0/secator/configs/workflows/url_fuzz.yaml +0 -35
- secator-0.15.0/secator/configs/workflows/url_nuclei.yaml +0 -11
- secator-0.15.0/secator/decorators.py +0 -461
- secator-0.15.0/secator/exporters/_base.py +0 -3
- secator-0.15.0/secator/output_types/certificate.py +0 -78
- secator-0.15.0/secator/output_types/state.py +0 -29
- secator-0.15.0/secator/runners/_helpers.py +0 -108
- secator-0.15.0/secator/runners/workflow.py +0 -135
- secator-0.15.0/secator/serializers/dataclass.py +0 -39
- secator-0.15.0/secator/tasks/__init__.py +0 -8
- secator-0.15.0/secator/tasks/dnsx.py +0 -79
- secator-0.15.0/secator/tasks/dnsxbrute.py +0 -42
- secator-0.15.0/secator/tasks/testssl.py +0 -276
- secator-0.15.0/secator/tasks/wpprobe.py +0 -96
- secator-0.15.0/secator/template.py +0 -149
- secator-0.15.0/secator/thread.py +0 -24
- secator-0.15.0/tests/integration/test_helpers.py +0 -33
- secator-0.15.0/tests/unit/test_cli.py +0 -94
- secator-0.15.0/tests/unit/test_template.py +0 -144
- {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.arch +0 -0
- {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.debian +0 -0
- {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.kali +0 -0
- {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.osx +0 -0
- {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.ubuntu +0 -0
- {secator-0.15.0 → secator-0.16.0}/.docker/build_all.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/.dockerignore +0 -0
- {secator-0.15.0 → secator-0.16.0}/.flake8 +0 -0
- {secator-0.15.0 → secator-0.16.0}/.gitignore +0 -0
- {secator-0.15.0 → secator-0.16.0}/CONTRIBUTING.md +0 -0
- {secator-0.15.0 → secator-0.16.0}/Dockerfile +0 -0
- {secator-0.15.0 → secator-0.16.0}/LICENSE +0 -0
- {secator-0.15.0 → secator-0.16.0}/SECURITY.md +0 -0
- {secator-0.15.0 → secator-0.16.0}/cloudbuild.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/.helmignore +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/Chart.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/templates/redis-service.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/templates/redis.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/templates/secator-manager.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/templates/secator-worker.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/helm/values.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/download_cves.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/install.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/install_asciinema.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/install_go.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/install_ruby.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/msf/exploit_cve.rc +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/msf/ftp_anonymous.rc +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/msf/ftp_version.rc +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/msf/ftp_vsftpd_234_backdoor.rc +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/msf/redis.rc +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/STORY.md +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/aliases.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/demo.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/fmt.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/input.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/pipe.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/scripts/stories/short_demo.sh +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/.gitignore +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/aggressive.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/insane.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/paranoid.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/polite.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/sneaky.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_bypass.yaml +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/csv.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/gdrive.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/exporters/json.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/hooks/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/hooks/gcs.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/exploit.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/port.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/record.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/stat.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/subdomain.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/output_types/user_account.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/runners/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/runners/celery.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/serializers/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/serializers/json.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/serializers/regex.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/secator/tasks/subfinder.py +2 -2
- {secator-0.15.0 → secator-0.16.0}/tests/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/fixtures/h8mail_breach.txt +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/fixtures/msfconsole_input.rc +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/fixtures/nmap_output.xml +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/test_addons.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/wordlist.txt +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/wordlist_dns.txt +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/wordpress_toolbox/Dockerfile +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/integration/wordpress_toolbox/Makefile +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/performance/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/__init__.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_config.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_offline.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_scans.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_serializers.py +0 -0
- {secator-0.15.0 → secator-0.16.0}/tests/unit/test_utils.py +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
language: en-US
|
|
2
|
+
tone_instructions: ''
|
|
3
|
+
early_access: false
|
|
4
|
+
enable_free_tier: true
|
|
5
|
+
reviews:
|
|
6
|
+
profile: chill
|
|
7
|
+
request_changes_workflow: false
|
|
8
|
+
high_level_summary: true
|
|
9
|
+
high_level_summary_placeholder: '@coderabbitai summary'
|
|
10
|
+
high_level_summary_in_walkthrough: false
|
|
11
|
+
auto_title_placeholder: '@coderabbitai'
|
|
12
|
+
auto_title_instructions: ''
|
|
13
|
+
review_status: true
|
|
14
|
+
commit_status: true
|
|
15
|
+
fail_commit_status: false
|
|
16
|
+
collapse_walkthrough: false
|
|
17
|
+
changed_files_summary: true
|
|
18
|
+
sequence_diagrams: true
|
|
19
|
+
assess_linked_issues: true
|
|
20
|
+
related_issues: true
|
|
21
|
+
related_prs: true
|
|
22
|
+
suggested_labels: true
|
|
23
|
+
auto_apply_labels: false
|
|
24
|
+
suggested_reviewers: true
|
|
25
|
+
auto_assign_reviewers: false
|
|
26
|
+
poem: true
|
|
27
|
+
labeling_instructions: []
|
|
28
|
+
path_filters: []
|
|
29
|
+
path_instructions: []
|
|
30
|
+
abort_on_close: true
|
|
31
|
+
disable_cache: false
|
|
32
|
+
auto_review:
|
|
33
|
+
enabled: true
|
|
34
|
+
auto_incremental_review: false
|
|
35
|
+
ignore_title_keywords: []
|
|
36
|
+
labels: []
|
|
37
|
+
drafts: false
|
|
38
|
+
base_branches: []
|
|
39
|
+
finishing_touches:
|
|
40
|
+
docstrings:
|
|
41
|
+
enabled: true
|
|
42
|
+
unit_tests:
|
|
43
|
+
enabled: true
|
|
44
|
+
tools:
|
|
45
|
+
ast-grep:
|
|
46
|
+
rule_dirs: []
|
|
47
|
+
util_dirs: []
|
|
48
|
+
essential_rules: true
|
|
49
|
+
packages: []
|
|
50
|
+
shellcheck:
|
|
51
|
+
enabled: true
|
|
52
|
+
ruff:
|
|
53
|
+
enabled: true
|
|
54
|
+
markdownlint:
|
|
55
|
+
enabled: true
|
|
56
|
+
github-checks:
|
|
57
|
+
enabled: true
|
|
58
|
+
timeout_ms: 90000
|
|
59
|
+
languagetool:
|
|
60
|
+
enabled: true
|
|
61
|
+
enabled_rules: []
|
|
62
|
+
disabled_rules: []
|
|
63
|
+
enabled_categories: []
|
|
64
|
+
disabled_categories: []
|
|
65
|
+
enabled_only: false
|
|
66
|
+
level: default
|
|
67
|
+
biome:
|
|
68
|
+
enabled: true
|
|
69
|
+
hadolint:
|
|
70
|
+
enabled: true
|
|
71
|
+
swiftlint:
|
|
72
|
+
enabled: true
|
|
73
|
+
phpstan:
|
|
74
|
+
enabled: true
|
|
75
|
+
level: default
|
|
76
|
+
golangci-lint:
|
|
77
|
+
enabled: true
|
|
78
|
+
yamllint:
|
|
79
|
+
enabled: true
|
|
80
|
+
gitleaks:
|
|
81
|
+
enabled: true
|
|
82
|
+
checkov:
|
|
83
|
+
enabled: true
|
|
84
|
+
detekt:
|
|
85
|
+
enabled: true
|
|
86
|
+
eslint:
|
|
87
|
+
enabled: true
|
|
88
|
+
rubocop:
|
|
89
|
+
enabled: true
|
|
90
|
+
buf:
|
|
91
|
+
enabled: true
|
|
92
|
+
regal:
|
|
93
|
+
enabled: true
|
|
94
|
+
actionlint:
|
|
95
|
+
enabled: true
|
|
96
|
+
pmd:
|
|
97
|
+
enabled: true
|
|
98
|
+
cppcheck:
|
|
99
|
+
enabled: true
|
|
100
|
+
semgrep:
|
|
101
|
+
enabled: true
|
|
102
|
+
circleci:
|
|
103
|
+
enabled: true
|
|
104
|
+
clippy:
|
|
105
|
+
enabled: true
|
|
106
|
+
sqlfluff:
|
|
107
|
+
enabled: true
|
|
108
|
+
prismaLint:
|
|
109
|
+
enabled: true
|
|
110
|
+
pylint:
|
|
111
|
+
enabled: false
|
|
112
|
+
oxc:
|
|
113
|
+
enabled: true
|
|
114
|
+
shopifyThemeCheck:
|
|
115
|
+
enabled: true
|
|
116
|
+
luacheck:
|
|
117
|
+
enabled: true
|
|
118
|
+
brakeman:
|
|
119
|
+
enabled: true
|
|
120
|
+
chat:
|
|
121
|
+
auto_reply: true
|
|
122
|
+
integrations:
|
|
123
|
+
jira:
|
|
124
|
+
usage: auto
|
|
125
|
+
linear:
|
|
126
|
+
usage: auto
|
|
127
|
+
knowledge_base:
|
|
128
|
+
opt_out: false
|
|
129
|
+
web_search:
|
|
130
|
+
enabled: true
|
|
131
|
+
learnings:
|
|
132
|
+
scope: auto
|
|
133
|
+
issues:
|
|
134
|
+
scope: auto
|
|
135
|
+
jira:
|
|
136
|
+
usage: auto
|
|
137
|
+
project_keys: []
|
|
138
|
+
linear:
|
|
139
|
+
usage: auto
|
|
140
|
+
team_keys: []
|
|
141
|
+
pull_requests:
|
|
142
|
+
scope: auto
|
|
143
|
+
code_generation:
|
|
144
|
+
docstrings:
|
|
145
|
+
language: en-US
|
|
146
|
+
path_instructions: []
|
|
147
|
+
unit_tests:
|
|
148
|
+
path_instructions: []
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
FROM alpine:
|
|
1
|
+
FROM alpine:3.21 AS builder
|
|
2
2
|
|
|
3
3
|
ENV PATH="${PATH}:/root/.local/bin"
|
|
4
4
|
RUN apk add --no-cache \
|
|
@@ -19,7 +19,7 @@ RUN pipx install --pip-args="--no-cache-dir" . && \
|
|
|
19
19
|
secator install addons redis && \
|
|
20
20
|
secator install addons dev
|
|
21
21
|
|
|
22
|
-
FROM python:3.12-
|
|
22
|
+
FROM python:3.12-alpine3.21
|
|
23
23
|
ARG flavor=full
|
|
24
24
|
ARG build_from_source=false
|
|
25
25
|
ENV TERM="xterm-256color"
|
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.16.0](https://github.com/freelabz/secator/compare/v0.15.1...v0.16.0) (2025-06-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **`dnsx`:** merge `dnsxbrute` into `dnsx` ([#571](https://github.com/freelabz/secator/issues/571)) ([d30a497](https://github.com/freelabz/secator/commit/d30a4974cafba8c5a88afbe41b46f230e0667624))
|
|
9
|
+
* add task revoke state and perf improvements ([#678](https://github.com/freelabz/secator/issues/678)) ([2a3bf08](https://github.com/freelabz/secator/commit/2a3bf089a643f889417da447047a6d45818dbb24))
|
|
10
|
+
* allow returning errors in hooks ([#632](https://github.com/freelabz/secator/issues/632)) ([39a56bd](https://github.com/freelabz/secator/commit/39a56bdb3d7e3cc91db28f227ee3c8d517319ba2))
|
|
11
|
+
* improve bbot output types ([#627](https://github.com/freelabz/secator/issues/627)) ([3b0aa5d](https://github.com/freelabz/secator/commit/3b0aa5de419cdabb4e450373d98942b32f52565d))
|
|
12
|
+
* improve runner logic, workflow building, results filtering logic; and add config defaults for profiles & drivers ([#673](https://github.com/freelabz/secator/issues/673)) ([df94657](https://github.com/freelabz/secator/commit/df94657836baf380b0a00bb02467a04bbbb6ea39))
|
|
13
|
+
* improve template loading flow ([#667](https://github.com/freelabz/secator/issues/667)) ([f223120](https://github.com/freelabz/secator/commit/f2231200917a2eff1fb35f782739a4ae52b2382b))
|
|
14
|
+
* memory optimizations ([#681](https://github.com/freelabz/secator/issues/681)) ([d633133](https://github.com/freelabz/secator/commit/d633133263f0b1bcab54a2a0278b46fa37c5c5ab))
|
|
15
|
+
* **misc:** condition-based runs, chunked_by opts, dynamic task profiles, cli improvements ([#659](https://github.com/freelabz/secator/issues/659)) ([e8225cd](https://github.com/freelabz/secator/commit/e8225cd1b434569ecdb6b99f48821bc7c581896e))
|
|
16
|
+
* **runner:** add input validation to all tasks and workflows ([#663](https://github.com/freelabz/secator/issues/663)) ([8392551](https://github.com/freelabz/secator/commit/839255108d5a688cad96940bc44f86ff5ae66ba3))
|
|
17
|
+
* **runner:** improve option handling ([#670](https://github.com/freelabz/secator/issues/670)) ([59b1c68](https://github.com/freelabz/secator/commit/59b1c68abe90a738dff04ee7a1ef68078ff7fa21))
|
|
18
|
+
* **scans:** improve scans ([#660](https://github.com/freelabz/secator/issues/660)) ([bdd38ec](https://github.com/freelabz/secator/commit/bdd38ecbf1f1479dee5f1f39583047f8a6abccd8))
|
|
19
|
+
* use os system for CLI and better labs ([#649](https://github.com/freelabz/secator/issues/649)) ([8b49912](https://github.com/freelabz/secator/commit/8b499121e4c646943cb8d692e80e99c85b396d5a))
|
|
20
|
+
* **workflow:** improve subdomain_recon workflow ([#657](https://github.com/freelabz/secator/issues/657)) ([bc65092](https://github.com/freelabz/secator/commit/bc6509270031d422ceb0007be415d9cb8066534c))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* allow dry-run mode to work without targets ([#624](https://github.com/freelabz/secator/issues/624)) ([cccffb9](https://github.com/freelabz/secator/commit/cccffb93ba4537887bed656319d47351ba5f8618))
|
|
26
|
+
* check task is registered before running test ([1f5cd83](https://github.com/freelabz/secator/commit/1f5cd831c81f8773d619c9f5b4e137f7247ce3e0))
|
|
27
|
+
* formatting for dynamic opts ([#628](https://github.com/freelabz/secator/issues/628)) ([dcbbfe9](https://github.com/freelabz/secator/commit/dcbbfe9d7f0acf95c8a5a0ccf787d5c9abcfbcef))
|
|
28
|
+
* header options conversion ([#633](https://github.com/freelabz/secator/issues/633)) ([6ae8423](https://github.com/freelabz/secator/commit/6ae8423a75e2cab31ebc90b6b0fdaba44eba430f))
|
|
29
|
+
* header parsing ([#629](https://github.com/freelabz/secator/issues/629)) ([db2f028](https://github.com/freelabz/secator/commit/db2f028a40fed0188855299f413b9e12f3dae8cf))
|
|
30
|
+
* improve mongodb duplicate checker ([#626](https://github.com/freelabz/secator/issues/626)) ([bf277a9](https://github.com/freelabz/secator/commit/bf277a9d91da263e9ef6fdcd6cb6f15499bfb79d))
|
|
31
|
+
* **installer:** compound distro.like() on distribs like popos ([#653](https://github.com/freelabz/secator/issues/653)) ([3687e1d](https://github.com/freelabz/secator/commit/3687e1d54ab5065286952b71c624b2eda276ed50))
|
|
32
|
+
* **installer:** ignore dev/post release from PyPI ([#634](https://github.com/freelabz/secator/issues/634)) ([614c3e2](https://github.com/freelabz/secator/commit/614c3e2c20566c7a608816ad504128a10b1923d1))
|
|
33
|
+
* **installer:** secator update with correct package version ([#648](https://github.com/freelabz/secator/issues/648)) ([a9cf189](https://github.com/freelabz/secator/commit/a9cf1899cade5d34f25c002eac9feeabbdc6353e))
|
|
34
|
+
* lab --wait not in gitlab runner ([070ae84](https://github.com/freelabz/secator/commit/070ae84d4be8b5cfa4e4336a0d089ab12629ba3c))
|
|
35
|
+
* logic to test all tasks ([3bd7503](https://github.com/freelabz/secator/commit/3bd7503c100aa4584bd3289a1bab013439e7810a))
|
|
36
|
+
* os.system return code ([02aed75](https://github.com/freelabz/secator/commit/02aed757a9a8764c22e28c133c19e5de66b188fb))
|
|
37
|
+
* progress type fields ([#652](https://github.com/freelabz/secator/issues/652)) ([f146914](https://github.com/freelabz/secator/commit/f146914f3d947a536ada03201e8f3fdf08615a54))
|
|
38
|
+
* remove duplicates from txt exporter ([#630](https://github.com/freelabz/secator/issues/630)) ([88ba5c5](https://github.com/freelabz/secator/commit/88ba5c5c339f91da32b72f17bed54a65988b2d8b))
|
|
39
|
+
* remove fping -r flag by default, show alive hosts better ([#665](https://github.com/freelabz/secator/issues/665)) ([5c945fd](https://github.com/freelabz/secator/commit/5c945fdcf1ad7422698fe5519bc5abddcc0473ca))
|
|
40
|
+
* remove no-recreate flag in labs as not supported by github runner ([bd997a8](https://github.com/freelabz/secator/commit/bd997a8f8c1607f49418db98ef733caefad6b0b7))
|
|
41
|
+
* short opt incorrectly named ([#631](https://github.com/freelabz/secator/issues/631)) ([0c73c60](https://github.com/freelabz/secator/commit/0c73c60380616dfab268d2541f83bf9cf4518098))
|
|
42
|
+
* tasks with no file flag need input_chunk_size=1 ([#668](https://github.com/freelabz/secator/issues/668)) ([a088c94](https://github.com/freelabz/secator/commit/a088c949219718757fd1611acf8ddb8167b0deb8))
|
|
43
|
+
* tools in readme, arjun chunk and ffuf header ([#679](https://github.com/freelabz/secator/issues/679)) ([654ff30](https://github.com/freelabz/secator/commit/654ff30ca2ffc1caae7e797df922b86cd83a98ad))
|
|
44
|
+
* tools table generator update ([9420f14](https://github.com/freelabz/secator/commit/9420f1426d722079d9058c7b37e4118119dc9542))
|
|
45
|
+
* update ci workflow ([f4c2b13](https://github.com/freelabz/secator/commit/f4c2b1300fc7d4417704eee7e9917bf184039feb))
|
|
46
|
+
* update generate table workflow ([ff62702](https://github.com/freelabz/secator/commit/ff627029120a146e55e5dbc6b95d1d9adf9cb8fa))
|
|
47
|
+
* vulnerability output reference when unset ([#625](https://github.com/freelabz/secator/issues/625)) ([a656fbf](https://github.com/freelabz/secator/commit/a656fbfd306b334fdca72cdc04321cd2e8c749bb))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Documentation
|
|
51
|
+
|
|
52
|
+
* generate tools table md ([#610](https://github.com/freelabz/secator/issues/610)) ([d60f11e](https://github.com/freelabz/secator/commit/d60f11ea72999b163e55634c8bdabaf134e3b368))
|
|
53
|
+
|
|
3
54
|
## [0.15.0](https://github.com/freelabz/secator/compare/v0.14.0...v0.15.0) (2025-05-04)
|
|
4
55
|
|
|
5
56
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: secator
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.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
|
|
@@ -21,6 +21,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
21
21
|
Requires-Python: >=3.8
|
|
22
22
|
Requires-Dist: beautifulsoup4<=5
|
|
23
23
|
Requires-Dist: celery<6
|
|
24
|
+
Requires-Dist: click<8.2.0
|
|
24
25
|
Requires-Dist: cpe<2
|
|
25
26
|
Requires-Dist: distro<2
|
|
26
27
|
Requires-Dist: dotmap<2
|
|
@@ -121,41 +122,41 @@ and it is designed to improve productivity for pentesters and security researche
|
|
|
121
122
|
|
|
122
123
|
`secator` integrates the following tools:
|
|
123
124
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
| [
|
|
128
|
-
| [
|
|
129
|
-
| [
|
|
130
|
-
| [
|
|
131
|
-
| [
|
|
132
|
-
| [
|
|
133
|
-
| [
|
|
134
|
-
| [
|
|
135
|
-
| [
|
|
136
|
-
| [
|
|
137
|
-
| [
|
|
138
|
-
| [
|
|
139
|
-
| [
|
|
140
|
-
| [
|
|
141
|
-
| [
|
|
142
|
-
| [
|
|
143
|
-
| [
|
|
144
|
-
| [
|
|
145
|
-
| [
|
|
146
|
-
| [
|
|
147
|
-
| [
|
|
148
|
-
| [
|
|
149
|
-
| [
|
|
150
|
-
| [
|
|
151
|
-
| [
|
|
152
|
-
| [
|
|
153
|
-
| [
|
|
154
|
-
| [
|
|
155
|
-
| [
|
|
156
|
-
| [
|
|
157
|
-
| [
|
|
158
|
-
|
|
125
|
+
<!-- START_TOOLS_TABLE -->
|
|
126
|
+
| Name | Description | Category |
|
|
127
|
+
|-----------------------------------------------------------------|----------------------------------------------------------------------------------|-------------------|
|
|
128
|
+
| [arjun](https://github.com/s0md3v/Arjun) | HTTP Parameter Discovery Suite. | `url/fuzz/params` |
|
|
129
|
+
| [bbot](https://github.com/blacklanternsecurity/bbot) | Multipurpose scanner. | `vuln/scan` |
|
|
130
|
+
| [bup](https://github.com/laluka/bypass-url-parser) | 40X bypasser. | `url/bypass` |
|
|
131
|
+
| [cariddi](https://github.com/edoardottt/cariddi) | Crawl endpoints, secrets, api keys, extensions, tokens... | `url/crawl` |
|
|
132
|
+
| [dalfox](https://github.com/hahwul/dalfox) | Powerful open source XSS scanning tool. | `url/fuzz` |
|
|
133
|
+
| [dirsearch](https://github.com/maurosoria/dirsearch) | Advanced web path brute-forcer. | `url/fuzz` |
|
|
134
|
+
| [dnsx](https://github.com/projectdiscovery/dnsx) | dnsx is a fast and multi-purpose DNS toolkit designed for running various retryabledns library. | `dns/fuzz` |
|
|
135
|
+
| [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust | `url/fuzz` |
|
|
136
|
+
| [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `url/fuzz` |
|
|
137
|
+
| [fping](https://github.com/schweikert/fping) | Send ICMP echo probes to network hosts, similar to ping, but much better. | `ip/recon` |
|
|
138
|
+
| [gau](https://github.com/lc/gau) | Fetch known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, Common Crawl, and URLScan. | `pattern/scan` |
|
|
139
|
+
| [gf](https://github.com/tomnomnom/gf) | Wrapper around grep, to help you grep for things. | `pattern/scan` |
|
|
140
|
+
| [gitleaks](https://github.com/gitleaks/gitleaks) | Tool for detecting secrets like passwords, API keys, and tokens in git repos, files, and stdin. | `secret/scan` |
|
|
141
|
+
| [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `url/crawl` |
|
|
142
|
+
| [grype](https://github.com/anchore/grype) | Vulnerability scanner for container images and filesystems. | `vuln/scan` |
|
|
143
|
+
| [h8mail](https://github.com/khast3x/h8mail) | Email information and password lookup tool. | `user/recon/email` |
|
|
144
|
+
| [httpx](https://github.com/projectdiscovery/httpx) | Fast and multi-purpose HTTP toolkit. | `url/probe` |
|
|
145
|
+
| [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `url/crawl` |
|
|
146
|
+
| [maigret](https://github.com/soxoj/maigret) | Collect a dossier on a person by username. | `user/recon/username` |
|
|
147
|
+
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | Utility program to perform multiple operations for a given subnet/cidr ranges. | `ip/recon` |
|
|
148
|
+
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview/) | CLI to access and work with the Metasploit Framework. | `exploit/attack` |
|
|
149
|
+
| [naabu](https://github.com/projectdiscovery/naabu) | Port scanning tool written in Go. | `port/scan` |
|
|
150
|
+
| [nmap](https://github.com/nmap/nmap) | Network Mapper is a free and open source utility for network discovery and security auditing. | `port/scan` |
|
|
151
|
+
| [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/scan` |
|
|
152
|
+
| [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher based on ExploitDB. | `exploit/recon` |
|
|
153
|
+
| [subfinder](https://github.com/projectdiscovery/subfinder) | Fast passive subdomain enumeration tool. | `dns/recon` |
|
|
154
|
+
| [testssl](https://github.com/testssl/testssl.sh) | SSL/TLS security scanner, including ciphers, protocols and cryptographic flaws. | `dns/recon/tls` |
|
|
155
|
+
| [trivy](https://github.com/aquasecurity/trivy) | Comprehensive and versatile security scanner. | `vuln/scan` |
|
|
156
|
+
| [wafw00f](https://github.com/EnableSecurity/wafw00f) | Web Application Firewall Fingerprinting tool. | `waf/scan` |
|
|
157
|
+
| [wpprobe](https://github.com/Chocapikk/wpprobe) | Fast wordpress plugin enumeration tool. | `vuln/scan/wordpress` |
|
|
158
|
+
| [wpscan](https://github.com/wpscanteam/wpscan) | Wordpress security scanner. | `vuln/scan/wordpress` |
|
|
159
|
+
<!-- END_TOOLS_TABLE -->
|
|
159
160
|
|
|
160
161
|
Feel free to request new tools to be added by opening an issue, but please
|
|
161
162
|
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)).
|
|
@@ -51,41 +51,41 @@ and it is designed to improve productivity for pentesters and security researche
|
|
|
51
51
|
|
|
52
52
|
`secator` integrates the following tools:
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
| [
|
|
58
|
-
| [
|
|
59
|
-
| [
|
|
60
|
-
| [
|
|
61
|
-
| [
|
|
62
|
-
| [
|
|
63
|
-
| [
|
|
64
|
-
| [
|
|
65
|
-
| [
|
|
66
|
-
| [
|
|
67
|
-
| [
|
|
68
|
-
| [
|
|
69
|
-
| [
|
|
70
|
-
| [
|
|
71
|
-
| [
|
|
72
|
-
| [
|
|
73
|
-
| [
|
|
74
|
-
| [
|
|
75
|
-
| [
|
|
76
|
-
| [
|
|
77
|
-
| [
|
|
78
|
-
| [
|
|
79
|
-
| [
|
|
80
|
-
| [
|
|
81
|
-
| [
|
|
82
|
-
| [
|
|
83
|
-
| [
|
|
84
|
-
| [
|
|
85
|
-
| [
|
|
86
|
-
| [
|
|
87
|
-
| [
|
|
88
|
-
|
|
54
|
+
<!-- START_TOOLS_TABLE -->
|
|
55
|
+
| Name | Description | Category |
|
|
56
|
+
|-----------------------------------------------------------------|----------------------------------------------------------------------------------|-------------------|
|
|
57
|
+
| [arjun](https://github.com/s0md3v/Arjun) | HTTP Parameter Discovery Suite. | `url/fuzz/params` |
|
|
58
|
+
| [bbot](https://github.com/blacklanternsecurity/bbot) | Multipurpose scanner. | `vuln/scan` |
|
|
59
|
+
| [bup](https://github.com/laluka/bypass-url-parser) | 40X bypasser. | `url/bypass` |
|
|
60
|
+
| [cariddi](https://github.com/edoardottt/cariddi) | Crawl endpoints, secrets, api keys, extensions, tokens... | `url/crawl` |
|
|
61
|
+
| [dalfox](https://github.com/hahwul/dalfox) | Powerful open source XSS scanning tool. | `url/fuzz` |
|
|
62
|
+
| [dirsearch](https://github.com/maurosoria/dirsearch) | Advanced web path brute-forcer. | `url/fuzz` |
|
|
63
|
+
| [dnsx](https://github.com/projectdiscovery/dnsx) | dnsx is a fast and multi-purpose DNS toolkit designed for running various retryabledns library. | `dns/fuzz` |
|
|
64
|
+
| [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust | `url/fuzz` |
|
|
65
|
+
| [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `url/fuzz` |
|
|
66
|
+
| [fping](https://github.com/schweikert/fping) | Send ICMP echo probes to network hosts, similar to ping, but much better. | `ip/recon` |
|
|
67
|
+
| [gau](https://github.com/lc/gau) | Fetch known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, Common Crawl, and URLScan. | `pattern/scan` |
|
|
68
|
+
| [gf](https://github.com/tomnomnom/gf) | Wrapper around grep, to help you grep for things. | `pattern/scan` |
|
|
69
|
+
| [gitleaks](https://github.com/gitleaks/gitleaks) | Tool for detecting secrets like passwords, API keys, and tokens in git repos, files, and stdin. | `secret/scan` |
|
|
70
|
+
| [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `url/crawl` |
|
|
71
|
+
| [grype](https://github.com/anchore/grype) | Vulnerability scanner for container images and filesystems. | `vuln/scan` |
|
|
72
|
+
| [h8mail](https://github.com/khast3x/h8mail) | Email information and password lookup tool. | `user/recon/email` |
|
|
73
|
+
| [httpx](https://github.com/projectdiscovery/httpx) | Fast and multi-purpose HTTP toolkit. | `url/probe` |
|
|
74
|
+
| [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `url/crawl` |
|
|
75
|
+
| [maigret](https://github.com/soxoj/maigret) | Collect a dossier on a person by username. | `user/recon/username` |
|
|
76
|
+
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | Utility program to perform multiple operations for a given subnet/cidr ranges. | `ip/recon` |
|
|
77
|
+
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview/) | CLI to access and work with the Metasploit Framework. | `exploit/attack` |
|
|
78
|
+
| [naabu](https://github.com/projectdiscovery/naabu) | Port scanning tool written in Go. | `port/scan` |
|
|
79
|
+
| [nmap](https://github.com/nmap/nmap) | Network Mapper is a free and open source utility for network discovery and security auditing. | `port/scan` |
|
|
80
|
+
| [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/scan` |
|
|
81
|
+
| [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher based on ExploitDB. | `exploit/recon` |
|
|
82
|
+
| [subfinder](https://github.com/projectdiscovery/subfinder) | Fast passive subdomain enumeration tool. | `dns/recon` |
|
|
83
|
+
| [testssl](https://github.com/testssl/testssl.sh) | SSL/TLS security scanner, including ciphers, protocols and cryptographic flaws. | `dns/recon/tls` |
|
|
84
|
+
| [trivy](https://github.com/aquasecurity/trivy) | Comprehensive and versatile security scanner. | `vuln/scan` |
|
|
85
|
+
| [wafw00f](https://github.com/EnableSecurity/wafw00f) | Web Application Firewall Fingerprinting tool. | `waf/scan` |
|
|
86
|
+
| [wpprobe](https://github.com/Chocapikk/wpprobe) | Fast wordpress plugin enumeration tool. | `vuln/scan/wordpress` |
|
|
87
|
+
| [wpscan](https://github.com/wpscanteam/wpscan) | Wordpress security scanner. | `vuln/scan/wordpress` |
|
|
88
|
+
<!-- END_TOOLS_TABLE -->
|
|
89
89
|
|
|
90
90
|
Feel free to request new tools to be added by opening an issue, but please
|
|
91
91
|
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)).
|
|
@@ -4,7 +4,7 @@ build-backend = 'hatchling.build'
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = 'secator'
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.16.0"
|
|
8
8
|
authors = [{ name = 'FreeLabz', email = 'sales@freelabz.com' }]
|
|
9
9
|
readme = 'README.md'
|
|
10
10
|
description = "The pentester's swiss knife."
|
|
@@ -48,6 +48,7 @@ dependencies = [
|
|
|
48
48
|
'requests < 3',
|
|
49
49
|
'rich < 14',
|
|
50
50
|
'rich-click < 1.7',
|
|
51
|
+
'click < 8.2.0',
|
|
51
52
|
'psutil < 7',
|
|
52
53
|
'retry < 1',
|
|
53
54
|
'tldextract < 6',
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
from secator.loader import discover_tasks
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
TABLE_START_MARKER = "<!-- START_TOOLS_TABLE -->"
|
|
8
|
+
TABLE_END_MARKER = "<!-- END_TOOLS_TABLE -->"
|
|
9
|
+
README_FILENAME = "README.md"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def get_tools_data():
|
|
13
|
+
data = []
|
|
14
|
+
hardcoded_urls = {
|
|
15
|
+
'bbot': 'https://github.com/blacklanternsecurity/bbot',
|
|
16
|
+
'bup': 'https://github.com/laluka/bypass-url-parser',
|
|
17
|
+
'dirsearch': 'https://github.com/maurosoria/dirsearch',
|
|
18
|
+
'gf': 'https://github.com/tomnomnom/gf',
|
|
19
|
+
'testssl': 'https://github.com/testssl/testssl.sh',
|
|
20
|
+
'wpscan': 'https://github.com/wpscanteam/wpscan',
|
|
21
|
+
'nmap': 'https://github.com/nmap/nmap',
|
|
22
|
+
'maigret': 'https://github.com/soxoj/maigret',
|
|
23
|
+
'h8mail': 'https://github.com/khast3x/h8mail',
|
|
24
|
+
'fping': 'https://github.com/schweikert/fping',
|
|
25
|
+
'msfconsole': 'https://docs.rapid7.com/metasploit/msf-overview/',
|
|
26
|
+
'searchsploit': 'https://gitlab.com/exploit-database/exploitdb'
|
|
27
|
+
}
|
|
28
|
+
for task in discover_tasks():
|
|
29
|
+
url = task.install_github_handle
|
|
30
|
+
if url:
|
|
31
|
+
url = f'https://github.com/{url}'
|
|
32
|
+
else:
|
|
33
|
+
url = hardcoded_urls.get(task.__name__)
|
|
34
|
+
data.append({
|
|
35
|
+
'name': task.__name__,
|
|
36
|
+
'url': url,
|
|
37
|
+
'description': task.__doc__ or '',
|
|
38
|
+
'category': '/'.join(task.tags)
|
|
39
|
+
})
|
|
40
|
+
return data
|
|
41
|
+
|
|
42
|
+
def generate_tools_table_markdown(tools_data):
|
|
43
|
+
"""
|
|
44
|
+
Generates the Markdown table string from the tools data.
|
|
45
|
+
Uses the formatting style found in the original README.
|
|
46
|
+
"""
|
|
47
|
+
if not tools_data:
|
|
48
|
+
return ""
|
|
49
|
+
|
|
50
|
+
# Define fixed widths based roughly on the original table for nice formatting in raw markdown
|
|
51
|
+
# Note: This is for raw readability; Markdown renderers don't strictly need it.
|
|
52
|
+
# Adjust these widths if your content significantly changes length.
|
|
53
|
+
name_col_width = 63 # Adjusted for link markup
|
|
54
|
+
desc_col_width = 80
|
|
55
|
+
cat_col_width = 17
|
|
56
|
+
|
|
57
|
+
header = f"| {'Name'.ljust(name_col_width)} | {'Description'.ljust(desc_col_width)} | {'Category'.ljust(cat_col_width)} |"
|
|
58
|
+
separator = f"|{'-' * (name_col_width + 2)}|{'-' * (desc_col_width + 2)}|{'-' * (cat_col_width + 2)}|"
|
|
59
|
+
|
|
60
|
+
table_lines = [header, separator]
|
|
61
|
+
|
|
62
|
+
for tool in tools_data:
|
|
63
|
+
name = tool.get('name', 'N/A')
|
|
64
|
+
url = tool.get('url', '#') # Default to '#' if URL is missing
|
|
65
|
+
description = tool.get('description', '')
|
|
66
|
+
category = tool.get('category', '')
|
|
67
|
+
|
|
68
|
+
# Format columns
|
|
69
|
+
name_md = f"[{name}]({url})"
|
|
70
|
+
# Pad based on the *visible* length of the markdown link for alignment
|
|
71
|
+
# This is an approximation, perfect alignment is tricky with variable link lengths
|
|
72
|
+
name_padded = name_md.ljust(name_col_width + len(name_md) - len(name))
|
|
73
|
+
|
|
74
|
+
desc_padded = description.ljust(desc_col_width)
|
|
75
|
+
|
|
76
|
+
cat_md = f"`{category}`" if category else ''
|
|
77
|
+
cat_padded = cat_md.ljust(cat_col_width)
|
|
78
|
+
|
|
79
|
+
table_lines.append(f"| {name_padded} | {desc_padded} | {cat_padded} |")
|
|
80
|
+
|
|
81
|
+
return "\n".join(table_lines)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def update_readme_table(readme_path, new_table_content):
|
|
85
|
+
"""
|
|
86
|
+
Reads the README, replaces the content between the markers
|
|
87
|
+
with the new table content, and writes it back.
|
|
88
|
+
"""
|
|
89
|
+
try:
|
|
90
|
+
with readme_path.open('r', encoding='utf-8') as f:
|
|
91
|
+
content = f.read()
|
|
92
|
+
except FileNotFoundError:
|
|
93
|
+
print(f"Error: README file not found at '{readme_path}'")
|
|
94
|
+
return False
|
|
95
|
+
except Exception as e:
|
|
96
|
+
print(f"Error reading README file: {e}")
|
|
97
|
+
return False
|
|
98
|
+
|
|
99
|
+
# Use regex to find the content between markers, including the markers themselves
|
|
100
|
+
# re.DOTALL makes '.' match newlines
|
|
101
|
+
pattern = re.compile(f"({re.escape(TABLE_START_MARKER)}).*?({re.escape(TABLE_END_MARKER)})", re.DOTALL)
|
|
102
|
+
|
|
103
|
+
# Construct the replacement string, keeping the markers but replacing the middle
|
|
104
|
+
replacement_string = f"{TABLE_START_MARKER}\n{new_table_content}\n{TABLE_END_MARKER}"
|
|
105
|
+
|
|
106
|
+
# Replace the old table section with the new one
|
|
107
|
+
new_content, num_replacements = pattern.subn(replacement_string, content)
|
|
108
|
+
|
|
109
|
+
if num_replacements == 0:
|
|
110
|
+
print(f"Error: Could not find table markers '{TABLE_START_MARKER}' and/or '{TABLE_END_MARKER}' in '{readme_path}'.")
|
|
111
|
+
print("Please ensure the markers exist exactly as defined and surround the table.")
|
|
112
|
+
return False
|
|
113
|
+
elif num_replacements > 1:
|
|
114
|
+
print(f"Warning: Found multiple instances of table markers in '{readme_path}'. Replacing only the first instance.")
|
|
115
|
+
# pattern.sub replaces only the first instance by default if global flag isn't used,
|
|
116
|
+
# but subn counts all potential matches. Behavior might be unexpected with multiple matches.
|
|
117
|
+
# Consider stopping if > 1 found for safety.
|
|
118
|
+
|
|
119
|
+
try:
|
|
120
|
+
with readme_path.open('w', encoding='utf-8') as f:
|
|
121
|
+
f.write(new_content)
|
|
122
|
+
print(f"Successfully updated the supported tools table in '{readme_path}'")
|
|
123
|
+
return True
|
|
124
|
+
except Exception as e:
|
|
125
|
+
print(f"Error writing updated content to README file: {e}")
|
|
126
|
+
return False
|
|
127
|
+
|
|
128
|
+
data = get_tools_data()
|
|
129
|
+
md_table = generate_tools_table_markdown(data)
|
|
130
|
+
path = Path(__file__).parent.parent / 'README.md'
|
|
131
|
+
update_readme_table(path, md_table)
|