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.

Files changed (237) hide show
  1. secator-0.16.0/.coderabbit.yaml +148 -0
  2. {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.alpine +2 -2
  3. {secator-0.15.0 → secator-0.16.0}/CHANGELOG.md +51 -0
  4. {secator-0.15.0 → secator-0.16.0}/PKG-INFO +37 -36
  5. {secator-0.15.0 → secator-0.16.0}/README.md +35 -35
  6. {secator-0.15.0 → secator-0.16.0}/pyproject.toml +2 -1
  7. secator-0.16.0/scripts/generate_tools_md_table.py +131 -0
  8. secator-0.16.0/scripts/update_tools.sh +35 -0
  9. {secator-0.15.0 → secator-0.16.0}/secator/celery.py +40 -24
  10. secator-0.16.0/secator/celery_signals.py +137 -0
  11. {secator-0.15.0 → secator-0.16.0}/secator/celery_utils.py +43 -27
  12. {secator-0.15.0 → secator-0.16.0}/secator/cli.py +520 -280
  13. secator-0.16.0/secator/cli_helper.py +394 -0
  14. secator-0.16.0/secator/click.py +87 -0
  15. {secator-0.15.0 → secator-0.16.0}/secator/config.py +67 -39
  16. secator-0.16.0/secator/configs/profiles/http_headless.yaml +6 -0
  17. secator-0.16.0/secator/configs/profiles/http_record.yaml +6 -0
  18. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/tor.yaml +1 -1
  19. {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/domain.yaml +4 -2
  20. {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/host.yaml +1 -1
  21. {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/network.yaml +1 -4
  22. secator-0.16.0/secator/configs/scans/subdomain.yaml +20 -0
  23. {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/url.yaml +1 -2
  24. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/cidr_recon.yaml +6 -4
  25. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/code_scan.yaml +1 -1
  26. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/host_recon.yaml +29 -3
  27. secator-0.16.0/secator/configs/workflows/subdomain_recon.yaml +84 -0
  28. secator-0.16.0/secator/configs/workflows/url_crawl.yaml +58 -0
  29. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_dirsearch.yaml +4 -4
  30. secator-0.16.0/secator/configs/workflows/url_fuzz.yaml +43 -0
  31. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_params_fuzz.yaml +7 -0
  32. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_vuln.yaml +33 -8
  33. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/user_hunt.yaml +2 -1
  34. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/wordpress.yaml +5 -3
  35. secator-0.16.0/secator/cve.py +718 -0
  36. secator-0.16.0/secator/decorators.py +7 -0
  37. {secator-0.15.0 → secator-0.16.0}/secator/definitions.py +49 -30
  38. secator-0.16.0/secator/exporters/_base.py +3 -0
  39. {secator-0.15.0 → secator-0.16.0}/secator/exporters/console.py +2 -2
  40. {secator-0.15.0 → secator-0.16.0}/secator/exporters/table.py +4 -3
  41. {secator-0.15.0 → secator-0.16.0}/secator/exporters/txt.py +1 -1
  42. {secator-0.15.0 → secator-0.16.0}/secator/hooks/mongodb.py +2 -4
  43. {secator-0.15.0 → secator-0.16.0}/secator/installer.py +77 -49
  44. secator-0.16.0/secator/loader.py +116 -0
  45. {secator-0.15.0 → secator-0.16.0}/secator/output_types/_base.py +3 -0
  46. secator-0.16.0/secator/output_types/certificate.py +78 -0
  47. {secator-0.15.0 → secator-0.16.0}/secator/output_types/error.py +4 -5
  48. {secator-0.15.0 → secator-0.16.0}/secator/output_types/info.py +2 -2
  49. {secator-0.15.0 → secator-0.16.0}/secator/output_types/ip.py +3 -1
  50. {secator-0.15.0 → secator-0.16.0}/secator/output_types/progress.py +5 -9
  51. secator-0.16.0/secator/output_types/state.py +29 -0
  52. {secator-0.15.0 → secator-0.16.0}/secator/output_types/tag.py +3 -0
  53. {secator-0.15.0 → secator-0.16.0}/secator/output_types/target.py +10 -2
  54. {secator-0.15.0 → secator-0.16.0}/secator/output_types/url.py +19 -7
  55. {secator-0.15.0 → secator-0.16.0}/secator/output_types/vulnerability.py +11 -7
  56. {secator-0.15.0 → secator-0.16.0}/secator/output_types/warning.py +2 -2
  57. {secator-0.15.0 → secator-0.16.0}/secator/report.py +27 -15
  58. {secator-0.15.0 → secator-0.16.0}/secator/rich.py +18 -10
  59. {secator-0.15.0 → secator-0.16.0}/secator/runners/_base.py +447 -234
  60. secator-0.16.0/secator/runners/_helpers.py +217 -0
  61. {secator-0.15.0 → secator-0.16.0}/secator/runners/command.py +182 -102
  62. {secator-0.15.0 → secator-0.16.0}/secator/runners/scan.py +33 -5
  63. {secator-0.15.0 → secator-0.16.0}/secator/runners/task.py +13 -7
  64. secator-0.16.0/secator/runners/workflow.py +168 -0
  65. {secator-0.15.0 → secator-0.16.0}/secator/scans/__init__.py +2 -2
  66. secator-0.16.0/secator/serializers/dataclass.py +39 -0
  67. secator-0.16.0/secator/tasks/__init__.py +8 -0
  68. {secator-0.15.0 → secator-0.16.0}/secator/tasks/_categories.py +39 -27
  69. {secator-0.15.0 → secator-0.16.0}/secator/tasks/arjun.py +9 -5
  70. {secator-0.15.0 → secator-0.16.0}/secator/tasks/bbot.py +53 -21
  71. {secator-0.15.0 → secator-0.16.0}/secator/tasks/bup.py +19 -5
  72. {secator-0.15.0 → secator-0.16.0}/secator/tasks/cariddi.py +24 -3
  73. {secator-0.15.0 → secator-0.16.0}/secator/tasks/dalfox.py +26 -7
  74. {secator-0.15.0 → secator-0.16.0}/secator/tasks/dirsearch.py +10 -4
  75. secator-0.16.0/secator/tasks/dnsx.py +124 -0
  76. {secator-0.15.0 → secator-0.16.0}/secator/tasks/feroxbuster.py +11 -3
  77. {secator-0.15.0 → secator-0.16.0}/secator/tasks/ffuf.py +42 -6
  78. {secator-0.15.0 → secator-0.16.0}/secator/tasks/fping.py +20 -8
  79. {secator-0.15.0 → secator-0.16.0}/secator/tasks/gau.py +3 -1
  80. {secator-0.15.0 → secator-0.16.0}/secator/tasks/gf.py +5 -4
  81. {secator-0.15.0 → secator-0.16.0}/secator/tasks/gitleaks.py +2 -2
  82. {secator-0.15.0 → secator-0.16.0}/secator/tasks/gospider.py +7 -1
  83. {secator-0.15.0 → secator-0.16.0}/secator/tasks/grype.py +5 -4
  84. {secator-0.15.0 → secator-0.16.0}/secator/tasks/h8mail.py +2 -1
  85. {secator-0.15.0 → secator-0.16.0}/secator/tasks/httpx.py +18 -5
  86. {secator-0.15.0 → secator-0.16.0}/secator/tasks/katana.py +35 -15
  87. {secator-0.15.0 → secator-0.16.0}/secator/tasks/maigret.py +4 -4
  88. {secator-0.15.0 → secator-0.16.0}/secator/tasks/mapcidr.py +3 -3
  89. {secator-0.15.0 → secator-0.16.0}/secator/tasks/msfconsole.py +4 -4
  90. {secator-0.15.0 → secator-0.16.0}/secator/tasks/naabu.py +5 -4
  91. {secator-0.15.0 → secator-0.16.0}/secator/tasks/nmap.py +12 -14
  92. {secator-0.15.0 → secator-0.16.0}/secator/tasks/nuclei.py +3 -3
  93. {secator-0.15.0 → secator-0.16.0}/secator/tasks/searchsploit.py +6 -5
  94. secator-0.16.0/secator/tasks/testssl.py +277 -0
  95. {secator-0.15.0 → secator-0.16.0}/secator/tasks/trivy.py +5 -5
  96. {secator-0.15.0 → secator-0.16.0}/secator/tasks/wafw00f.py +21 -3
  97. secator-0.16.0/secator/tasks/wpprobe.py +103 -0
  98. {secator-0.15.0 → secator-0.16.0}/secator/tasks/wpscan.py +6 -5
  99. secator-0.16.0/secator/template.py +263 -0
  100. secator-0.16.0/secator/thread.py +24 -0
  101. secator-0.16.0/secator/tree.py +196 -0
  102. {secator-0.15.0 → secator-0.16.0}/secator/utils.py +131 -123
  103. {secator-0.15.0 → secator-0.16.0}/secator/utils_test.py +60 -19
  104. {secator-0.15.0 → secator-0.16.0}/secator/workflows/__init__.py +2 -2
  105. {secator-0.15.0 → secator-0.16.0}/tests/fixtures/ls.py +2 -0
  106. secator-0.16.0/tests/integration/all.yaml +17 -0
  107. {secator-0.15.0 → secator-0.16.0}/tests/integration/inputs.py +0 -1
  108. {secator-0.15.0 → secator-0.16.0}/tests/integration/outputs.py +51 -27
  109. {secator-0.15.0 → secator-0.16.0}/tests/integration/setup.sh +6 -2
  110. {secator-0.15.0 → secator-0.16.0}/tests/integration/teardown.sh +4 -0
  111. {secator-0.15.0 → secator-0.16.0}/tests/integration/test_celery.py +6 -6
  112. {secator-0.15.0 → secator-0.16.0}/tests/integration/test_scans.py +2 -3
  113. {secator-0.15.0 → secator-0.16.0}/tests/integration/test_tasks.py +29 -11
  114. secator-0.16.0/tests/integration/test_tasks_categories.py +44 -0
  115. {secator-0.15.0 → secator-0.16.0}/tests/integration/test_worker.py +4 -4
  116. {secator-0.15.0 → secator-0.16.0}/tests/integration/test_workflows.py +4 -11
  117. {secator-0.15.0 → secator-0.16.0}/tests/performance/loadtester.py +8 -10
  118. {secator-0.15.0 → secator-0.16.0}/tests/performance/test_worker.py +5 -5
  119. secator-0.16.0/tests/template/test_templates.py +62 -0
  120. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_celery.py +7 -5
  121. secator-0.16.0/tests/unit/test_cli.py +285 -0
  122. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_command.py +7 -7
  123. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_runners.py +9 -5
  124. secator-0.16.0/tests/unit/test_runners_helpers.py +242 -0
  125. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_tasks.py +13 -6
  126. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_tasks_categories.py +3 -4
  127. secator-0.16.0/tests/unit/test_template.py +203 -0
  128. secator-0.15.0/secator/celery_signals.py +0 -134
  129. secator-0.15.0/secator/configs/profiles/default.yaml +0 -8
  130. secator-0.15.0/secator/configs/scans/subdomain.yaml +0 -8
  131. secator-0.15.0/secator/configs/workflows/subdomain_recon.yaml +0 -33
  132. secator-0.15.0/secator/configs/workflows/url_crawl.yaml +0 -29
  133. secator-0.15.0/secator/configs/workflows/url_fuzz.yaml +0 -35
  134. secator-0.15.0/secator/configs/workflows/url_nuclei.yaml +0 -11
  135. secator-0.15.0/secator/decorators.py +0 -461
  136. secator-0.15.0/secator/exporters/_base.py +0 -3
  137. secator-0.15.0/secator/output_types/certificate.py +0 -78
  138. secator-0.15.0/secator/output_types/state.py +0 -29
  139. secator-0.15.0/secator/runners/_helpers.py +0 -108
  140. secator-0.15.0/secator/runners/workflow.py +0 -135
  141. secator-0.15.0/secator/serializers/dataclass.py +0 -39
  142. secator-0.15.0/secator/tasks/__init__.py +0 -8
  143. secator-0.15.0/secator/tasks/dnsx.py +0 -79
  144. secator-0.15.0/secator/tasks/dnsxbrute.py +0 -42
  145. secator-0.15.0/secator/tasks/testssl.py +0 -276
  146. secator-0.15.0/secator/tasks/wpprobe.py +0 -96
  147. secator-0.15.0/secator/template.py +0 -149
  148. secator-0.15.0/secator/thread.py +0 -24
  149. secator-0.15.0/tests/integration/test_helpers.py +0 -33
  150. secator-0.15.0/tests/unit/test_cli.py +0 -94
  151. secator-0.15.0/tests/unit/test_template.py +0 -144
  152. {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.arch +0 -0
  153. {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.debian +0 -0
  154. {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.kali +0 -0
  155. {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.osx +0 -0
  156. {secator-0.15.0 → secator-0.16.0}/.docker/Dockerfile.ubuntu +0 -0
  157. {secator-0.15.0 → secator-0.16.0}/.docker/build_all.sh +0 -0
  158. {secator-0.15.0 → secator-0.16.0}/.dockerignore +0 -0
  159. {secator-0.15.0 → secator-0.16.0}/.flake8 +0 -0
  160. {secator-0.15.0 → secator-0.16.0}/.gitignore +0 -0
  161. {secator-0.15.0 → secator-0.16.0}/CONTRIBUTING.md +0 -0
  162. {secator-0.15.0 → secator-0.16.0}/Dockerfile +0 -0
  163. {secator-0.15.0 → secator-0.16.0}/LICENSE +0 -0
  164. {secator-0.15.0 → secator-0.16.0}/SECURITY.md +0 -0
  165. {secator-0.15.0 → secator-0.16.0}/cloudbuild.yaml +0 -0
  166. {secator-0.15.0 → secator-0.16.0}/helm/.helmignore +0 -0
  167. {secator-0.15.0 → secator-0.16.0}/helm/Chart.yaml +0 -0
  168. {secator-0.15.0 → secator-0.16.0}/helm/templates/redis-service.yaml +0 -0
  169. {secator-0.15.0 → secator-0.16.0}/helm/templates/redis.yaml +0 -0
  170. {secator-0.15.0 → secator-0.16.0}/helm/templates/secator-manager.yaml +0 -0
  171. {secator-0.15.0 → secator-0.16.0}/helm/templates/secator-worker.yaml +0 -0
  172. {secator-0.15.0 → secator-0.16.0}/helm/values.yaml +0 -0
  173. {secator-0.15.0 → secator-0.16.0}/scripts/download_cves.sh +0 -0
  174. {secator-0.15.0 → secator-0.16.0}/scripts/install.sh +0 -0
  175. {secator-0.15.0 → secator-0.16.0}/scripts/install_asciinema.sh +0 -0
  176. {secator-0.15.0 → secator-0.16.0}/scripts/install_go.sh +0 -0
  177. {secator-0.15.0 → secator-0.16.0}/scripts/install_ruby.sh +0 -0
  178. {secator-0.15.0 → secator-0.16.0}/scripts/msf/exploit_cve.rc +0 -0
  179. {secator-0.15.0 → secator-0.16.0}/scripts/msf/ftp_anonymous.rc +0 -0
  180. {secator-0.15.0 → secator-0.16.0}/scripts/msf/ftp_version.rc +0 -0
  181. {secator-0.15.0 → secator-0.16.0}/scripts/msf/ftp_vsftpd_234_backdoor.rc +0 -0
  182. {secator-0.15.0 → secator-0.16.0}/scripts/msf/redis.rc +0 -0
  183. {secator-0.15.0 → secator-0.16.0}/scripts/stories/STORY.md +0 -0
  184. {secator-0.15.0 → secator-0.16.0}/scripts/stories/aliases.sh +0 -0
  185. {secator-0.15.0 → secator-0.16.0}/scripts/stories/demo.sh +0 -0
  186. {secator-0.15.0 → secator-0.16.0}/scripts/stories/fmt.sh +0 -0
  187. {secator-0.15.0 → secator-0.16.0}/scripts/stories/input.sh +0 -0
  188. {secator-0.15.0 → secator-0.16.0}/scripts/stories/pipe.sh +0 -0
  189. {secator-0.15.0 → secator-0.16.0}/scripts/stories/short_demo.sh +0 -0
  190. {secator-0.15.0 → secator-0.16.0}/secator/.gitignore +0 -0
  191. {secator-0.15.0 → secator-0.16.0}/secator/__init__.py +0 -0
  192. {secator-0.15.0 → secator-0.16.0}/secator/configs/__init__.py +0 -0
  193. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/__init__.py +0 -0
  194. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/aggressive.yaml +0 -0
  195. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/insane.yaml +0 -0
  196. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/paranoid.yaml +0 -0
  197. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/polite.yaml +0 -0
  198. {secator-0.15.0 → secator-0.16.0}/secator/configs/profiles/sneaky.yaml +0 -0
  199. {secator-0.15.0 → secator-0.16.0}/secator/configs/scans/__init__.py +0 -0
  200. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/__init__.py +0 -0
  201. {secator-0.15.0 → secator-0.16.0}/secator/configs/workflows/url_bypass.yaml +0 -0
  202. {secator-0.15.0 → secator-0.16.0}/secator/exporters/__init__.py +0 -0
  203. {secator-0.15.0 → secator-0.16.0}/secator/exporters/csv.py +0 -0
  204. {secator-0.15.0 → secator-0.16.0}/secator/exporters/gdrive.py +0 -0
  205. {secator-0.15.0 → secator-0.16.0}/secator/exporters/json.py +0 -0
  206. {secator-0.15.0 → secator-0.16.0}/secator/hooks/__init__.py +0 -0
  207. {secator-0.15.0 → secator-0.16.0}/secator/hooks/gcs.py +0 -0
  208. {secator-0.15.0 → secator-0.16.0}/secator/output_types/__init__.py +0 -0
  209. {secator-0.15.0 → secator-0.16.0}/secator/output_types/exploit.py +0 -0
  210. {secator-0.15.0 → secator-0.16.0}/secator/output_types/port.py +0 -0
  211. {secator-0.15.0 → secator-0.16.0}/secator/output_types/record.py +0 -0
  212. {secator-0.15.0 → secator-0.16.0}/secator/output_types/stat.py +0 -0
  213. {secator-0.15.0 → secator-0.16.0}/secator/output_types/subdomain.py +0 -0
  214. {secator-0.15.0 → secator-0.16.0}/secator/output_types/user_account.py +0 -0
  215. {secator-0.15.0 → secator-0.16.0}/secator/runners/__init__.py +0 -0
  216. {secator-0.15.0 → secator-0.16.0}/secator/runners/celery.py +0 -0
  217. {secator-0.15.0 → secator-0.16.0}/secator/serializers/__init__.py +0 -0
  218. {secator-0.15.0 → secator-0.16.0}/secator/serializers/json.py +0 -0
  219. {secator-0.15.0 → secator-0.16.0}/secator/serializers/regex.py +0 -0
  220. {secator-0.15.0 → secator-0.16.0}/secator/tasks/subfinder.py +2 -2
  221. {secator-0.15.0 → secator-0.16.0}/tests/__init__.py +0 -0
  222. {secator-0.15.0 → secator-0.16.0}/tests/fixtures/h8mail_breach.txt +0 -0
  223. {secator-0.15.0 → secator-0.16.0}/tests/fixtures/msfconsole_input.rc +0 -0
  224. {secator-0.15.0 → secator-0.16.0}/tests/fixtures/nmap_output.xml +0 -0
  225. {secator-0.15.0 → secator-0.16.0}/tests/integration/__init__.py +0 -0
  226. {secator-0.15.0 → secator-0.16.0}/tests/integration/test_addons.py +0 -0
  227. {secator-0.15.0 → secator-0.16.0}/tests/integration/wordlist.txt +0 -0
  228. {secator-0.15.0 → secator-0.16.0}/tests/integration/wordlist_dns.txt +0 -0
  229. {secator-0.15.0 → secator-0.16.0}/tests/integration/wordpress_toolbox/Dockerfile +0 -0
  230. {secator-0.15.0 → secator-0.16.0}/tests/integration/wordpress_toolbox/Makefile +0 -0
  231. {secator-0.15.0 → secator-0.16.0}/tests/performance/__init__.py +0 -0
  232. {secator-0.15.0 → secator-0.16.0}/tests/unit/__init__.py +0 -0
  233. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_config.py +0 -0
  234. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_offline.py +0 -0
  235. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_scans.py +0 -0
  236. {secator-0.15.0 → secator-0.16.0}/tests/unit/test_serializers.py +0 -0
  237. {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:latest AS builder
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-alpine
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.15.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
- | Name | Description | Category |
125
- |---------------------------------------------------------------|--------------------------------------------------------------------------------|-----------------|
126
- | [arjun](https://github.com/s0md3v/Arjun) | HTTP Parameter Discovery Suite. | |
127
- | [gitleaks](https://github.com/gitleaks/gitleaks) | Tool for detecting secrets like passwords, API keys, tokens, etc. | |
128
- | [testssl](https://github.com/testssl/testssl.sh) | SSL/TLS security scanner, including ciphers, protocols and cryptographic flaws.| |
129
- | [wafw00f](https://github.com/EnableSecurity/wafw00f) | Web Application Firewall Fingerprinting tool. | |
130
- | [wpprobe](https://github.com/Chocapikk/wpprobe) | Fast wordpress plugin enumeration tool. | |
131
- | [httpx](https://github.com/projectdiscovery/httpx) | Fast HTTP prober. | `http` |
132
- | [cariddi](https://github.com/edoardottt/cariddi) | Fast crawler and endpoint secrets / api keys / tokens matcher. | `http/crawler` |
133
- | [gau](https://github.com/lc/gau) | Offline URL crawler (Alien Vault, The Wayback Machine, Common Crawl, URLScan). | `http/crawler` |
134
- | [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `http/crawler` |
135
- | [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `http/crawler` |
136
- | [dirsearch](https://github.com/maurosoria/dirsearch) | Web path discovery. | `http/fuzzer` |
137
- | [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust. | `http/fuzzer` |
138
- | [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `http/fuzzer` |
139
- | [h8mail](https://github.com/khast3x/h8mail) | Email OSINT and breach hunting tool. | `osint` |
140
- | [dnsx](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit. | `recon/dns` |
141
- | [dnsxbrute](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit (bruteforce mode). | `recon/dns` |
142
- | [subfinder](https://github.com/projectdiscovery/subfinder) | Fast subdomain finder. | `recon/dns` |
143
- | [fping](https://fping.org/) | Find alive hosts on local networks. | `recon/ip` |
144
- | [mapcidr](https://github.com/projectdiscovery/mapcidr) | Expand CIDR ranges into IPs. | `recon/ip` |
145
- | [naabu](https://github.com/projectdiscovery/naabu) | Fast port discovery tool. | `recon/port` |
146
- | [maigret](https://github.com/soxoj/maigret) | Hunt for user accounts across many websites. | `recon/user` |
147
- | [gf](https://github.com/tomnomnom/gf) | A wrapper around grep to avoid typing common patterns. | `tagger` |
148
- | [trivy](https://github.com/aquasecurity/trivy) | Comprehensive and versatile security scanner. | `vuln` |
149
- | [grype](https://github.com/anchore/grype) | A vulnerability scanner for container images and filesystems. | `vuln/code` |
150
- | [dalfox](https://github.com/hahwul/dalfox) | Powerful XSS scanning tool and parameter analyzer. | `vuln/http` |
151
- | [msfconsole](https://docs.rapid7.com/metasploit/msf-overview) | CLI to access and work with the Metasploit Framework. | `vuln/http` |
152
- | [wpscan](https://github.com/wpscanteam/wpscan) | WordPress Security Scanner | `vuln/multi` |
153
- | [nmap](https://github.com/nmap/nmap) | Vulnerability scanner using NSE scripts. | `vuln/multi` |
154
- | [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/multi` |
155
- | [bbot](https://github.com/blacklanternsecurity/bbot) | Multipurpose scanner. | `multi` |
156
- | [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher based on ExploitDB. | `exploit/search`|
157
- | [bup](https://github.com/laluka/bypass-url-parser) | 40X bypasser. | `http` |
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
- | Name | Description | Category |
55
- |---------------------------------------------------------------|--------------------------------------------------------------------------------|-----------------|
56
- | [arjun](https://github.com/s0md3v/Arjun) | HTTP Parameter Discovery Suite. | |
57
- | [gitleaks](https://github.com/gitleaks/gitleaks) | Tool for detecting secrets like passwords, API keys, tokens, etc. | |
58
- | [testssl](https://github.com/testssl/testssl.sh) | SSL/TLS security scanner, including ciphers, protocols and cryptographic flaws.| |
59
- | [wafw00f](https://github.com/EnableSecurity/wafw00f) | Web Application Firewall Fingerprinting tool. | |
60
- | [wpprobe](https://github.com/Chocapikk/wpprobe) | Fast wordpress plugin enumeration tool. | |
61
- | [httpx](https://github.com/projectdiscovery/httpx) | Fast HTTP prober. | `http` |
62
- | [cariddi](https://github.com/edoardottt/cariddi) | Fast crawler and endpoint secrets / api keys / tokens matcher. | `http/crawler` |
63
- | [gau](https://github.com/lc/gau) | Offline URL crawler (Alien Vault, The Wayback Machine, Common Crawl, URLScan). | `http/crawler` |
64
- | [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `http/crawler` |
65
- | [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `http/crawler` |
66
- | [dirsearch](https://github.com/maurosoria/dirsearch) | Web path discovery. | `http/fuzzer` |
67
- | [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust. | `http/fuzzer` |
68
- | [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `http/fuzzer` |
69
- | [h8mail](https://github.com/khast3x/h8mail) | Email OSINT and breach hunting tool. | `osint` |
70
- | [dnsx](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit. | `recon/dns` |
71
- | [dnsxbrute](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit (bruteforce mode). | `recon/dns` |
72
- | [subfinder](https://github.com/projectdiscovery/subfinder) | Fast subdomain finder. | `recon/dns` |
73
- | [fping](https://fping.org/) | Find alive hosts on local networks. | `recon/ip` |
74
- | [mapcidr](https://github.com/projectdiscovery/mapcidr) | Expand CIDR ranges into IPs. | `recon/ip` |
75
- | [naabu](https://github.com/projectdiscovery/naabu) | Fast port discovery tool. | `recon/port` |
76
- | [maigret](https://github.com/soxoj/maigret) | Hunt for user accounts across many websites. | `recon/user` |
77
- | [gf](https://github.com/tomnomnom/gf) | A wrapper around grep to avoid typing common patterns. | `tagger` |
78
- | [trivy](https://github.com/aquasecurity/trivy) | Comprehensive and versatile security scanner. | `vuln` |
79
- | [grype](https://github.com/anchore/grype) | A vulnerability scanner for container images and filesystems. | `vuln/code` |
80
- | [dalfox](https://github.com/hahwul/dalfox) | Powerful XSS scanning tool and parameter analyzer. | `vuln/http` |
81
- | [msfconsole](https://docs.rapid7.com/metasploit/msf-overview) | CLI to access and work with the Metasploit Framework. | `vuln/http` |
82
- | [wpscan](https://github.com/wpscanteam/wpscan) | WordPress Security Scanner | `vuln/multi` |
83
- | [nmap](https://github.com/nmap/nmap) | Vulnerability scanner using NSE scripts. | `vuln/multi` |
84
- | [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/multi` |
85
- | [bbot](https://github.com/blacklanternsecurity/bbot) | Multipurpose scanner. | `multi` |
86
- | [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher based on ExploitDB. | `exploit/search`|
87
- | [bup](https://github.com/laluka/bypass-url-parser) | 40X bypasser. | `http` |
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.15.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)