secator 0.16.4__tar.gz → 0.16.5__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 (213) hide show
  1. {secator-0.16.4 → secator-0.16.5}/CHANGELOG.md +9 -0
  2. {secator-0.16.4 → secator-0.16.5}/PKG-INFO +1 -1
  3. {secator-0.16.4 → secator-0.16.5}/cloudbuild.yaml +4 -2
  4. {secator-0.16.4 → secator-0.16.5}/pyproject.toml +1 -1
  5. {secator-0.16.4 → secator-0.16.5}/secator/celery.py +8 -3
  6. {secator-0.16.4 → secator-0.16.5}/secator/hooks/gcs.py +4 -2
  7. {secator-0.16.4 → secator-0.16.5}/secator/hooks/mongodb.py +8 -3
  8. {secator-0.16.4 → secator-0.16.5}/secator/tasks/_categories.py +14 -0
  9. {secator-0.16.4 → secator-0.16.5}/.coderabbit.yaml +0 -0
  10. {secator-0.16.4 → secator-0.16.5}/.docker/Dockerfile.alpine +0 -0
  11. {secator-0.16.4 → secator-0.16.5}/.docker/Dockerfile.arch +0 -0
  12. {secator-0.16.4 → secator-0.16.5}/.docker/Dockerfile.debian +0 -0
  13. {secator-0.16.4 → secator-0.16.5}/.docker/Dockerfile.kali +0 -0
  14. {secator-0.16.4 → secator-0.16.5}/.docker/Dockerfile.osx +0 -0
  15. {secator-0.16.4 → secator-0.16.5}/.docker/Dockerfile.ubuntu +0 -0
  16. {secator-0.16.4 → secator-0.16.5}/.docker/build_all.sh +0 -0
  17. {secator-0.16.4 → secator-0.16.5}/.dockerignore +0 -0
  18. {secator-0.16.4 → secator-0.16.5}/.flake8 +0 -0
  19. {secator-0.16.4 → secator-0.16.5}/.gitignore +0 -0
  20. {secator-0.16.4 → secator-0.16.5}/CONTRIBUTING.md +0 -0
  21. {secator-0.16.4 → secator-0.16.5}/Dockerfile +0 -0
  22. {secator-0.16.4 → secator-0.16.5}/LICENSE +0 -0
  23. {secator-0.16.4 → secator-0.16.5}/README.md +0 -0
  24. {secator-0.16.4 → secator-0.16.5}/SECURITY.md +0 -0
  25. {secator-0.16.4 → secator-0.16.5}/helm/.helmignore +0 -0
  26. {secator-0.16.4 → secator-0.16.5}/helm/Chart.yaml +0 -0
  27. {secator-0.16.4 → secator-0.16.5}/helm/templates/redis-service.yaml +0 -0
  28. {secator-0.16.4 → secator-0.16.5}/helm/templates/redis.yaml +0 -0
  29. {secator-0.16.4 → secator-0.16.5}/helm/templates/secator-manager.yaml +0 -0
  30. {secator-0.16.4 → secator-0.16.5}/helm/templates/secator-worker.yaml +0 -0
  31. {secator-0.16.4 → secator-0.16.5}/helm/values.yaml +0 -0
  32. {secator-0.16.4 → secator-0.16.5}/scripts/download_cves.sh +0 -0
  33. {secator-0.16.4 → secator-0.16.5}/scripts/generate_tools_md_table.py +0 -0
  34. {secator-0.16.4 → secator-0.16.5}/scripts/install.sh +0 -0
  35. {secator-0.16.4 → secator-0.16.5}/scripts/install_asciinema.sh +0 -0
  36. {secator-0.16.4 → secator-0.16.5}/scripts/install_go.sh +0 -0
  37. {secator-0.16.4 → secator-0.16.5}/scripts/install_ruby.sh +0 -0
  38. {secator-0.16.4 → secator-0.16.5}/scripts/msf/exploit_cve.rc +0 -0
  39. {secator-0.16.4 → secator-0.16.5}/scripts/msf/ftp_anonymous.rc +0 -0
  40. {secator-0.16.4 → secator-0.16.5}/scripts/msf/ftp_version.rc +0 -0
  41. {secator-0.16.4 → secator-0.16.5}/scripts/msf/ftp_vsftpd_234_backdoor.rc +0 -0
  42. {secator-0.16.4 → secator-0.16.5}/scripts/msf/redis.rc +0 -0
  43. {secator-0.16.4 → secator-0.16.5}/scripts/stories/STORY.md +0 -0
  44. {secator-0.16.4 → secator-0.16.5}/scripts/stories/aliases.sh +0 -0
  45. {secator-0.16.4 → secator-0.16.5}/scripts/stories/demo.sh +0 -0
  46. {secator-0.16.4 → secator-0.16.5}/scripts/stories/fmt.sh +0 -0
  47. {secator-0.16.4 → secator-0.16.5}/scripts/stories/input.sh +0 -0
  48. {secator-0.16.4 → secator-0.16.5}/scripts/stories/pipe.sh +0 -0
  49. {secator-0.16.4 → secator-0.16.5}/scripts/stories/short_demo.sh +0 -0
  50. {secator-0.16.4 → secator-0.16.5}/scripts/update_tools.sh +0 -0
  51. {secator-0.16.4 → secator-0.16.5}/secator/.gitignore +0 -0
  52. {secator-0.16.4 → secator-0.16.5}/secator/__init__.py +0 -0
  53. {secator-0.16.4 → secator-0.16.5}/secator/celery_signals.py +0 -0
  54. {secator-0.16.4 → secator-0.16.5}/secator/celery_utils.py +0 -0
  55. {secator-0.16.4 → secator-0.16.5}/secator/cli.py +0 -0
  56. {secator-0.16.4 → secator-0.16.5}/secator/cli_helper.py +0 -0
  57. {secator-0.16.4 → secator-0.16.5}/secator/click.py +0 -0
  58. {secator-0.16.4 → secator-0.16.5}/secator/config.py +0 -0
  59. {secator-0.16.4 → secator-0.16.5}/secator/configs/__init__.py +0 -0
  60. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/__init__.py +0 -0
  61. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/aggressive.yaml +0 -0
  62. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/http_headless.yaml +0 -0
  63. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/http_record.yaml +0 -0
  64. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/insane.yaml +0 -0
  65. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/paranoid.yaml +0 -0
  66. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/polite.yaml +0 -0
  67. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/sneaky.yaml +0 -0
  68. {secator-0.16.4 → secator-0.16.5}/secator/configs/profiles/tor.yaml +0 -0
  69. {secator-0.16.4 → secator-0.16.5}/secator/configs/scans/__init__.py +0 -0
  70. {secator-0.16.4 → secator-0.16.5}/secator/configs/scans/domain.yaml +0 -0
  71. {secator-0.16.4 → secator-0.16.5}/secator/configs/scans/host.yaml +0 -0
  72. {secator-0.16.4 → secator-0.16.5}/secator/configs/scans/network.yaml +0 -0
  73. {secator-0.16.4 → secator-0.16.5}/secator/configs/scans/subdomain.yaml +0 -0
  74. {secator-0.16.4 → secator-0.16.5}/secator/configs/scans/url.yaml +0 -0
  75. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/__init__.py +0 -0
  76. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/cidr_recon.yaml +0 -0
  77. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/code_scan.yaml +0 -0
  78. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/host_recon.yaml +0 -0
  79. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/subdomain_recon.yaml +0 -0
  80. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/url_bypass.yaml +0 -0
  81. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/url_crawl.yaml +0 -0
  82. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/url_dirsearch.yaml +0 -0
  83. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/url_fuzz.yaml +0 -0
  84. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/url_params_fuzz.yaml +0 -0
  85. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/url_vuln.yaml +0 -0
  86. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/user_hunt.yaml +0 -0
  87. {secator-0.16.4 → secator-0.16.5}/secator/configs/workflows/wordpress.yaml +0 -0
  88. {secator-0.16.4 → secator-0.16.5}/secator/cve.py +0 -0
  89. {secator-0.16.4 → secator-0.16.5}/secator/decorators.py +0 -0
  90. {secator-0.16.4 → secator-0.16.5}/secator/definitions.py +0 -0
  91. {secator-0.16.4 → secator-0.16.5}/secator/exporters/__init__.py +0 -0
  92. {secator-0.16.4 → secator-0.16.5}/secator/exporters/_base.py +0 -0
  93. {secator-0.16.4 → secator-0.16.5}/secator/exporters/console.py +0 -0
  94. {secator-0.16.4 → secator-0.16.5}/secator/exporters/csv.py +0 -0
  95. {secator-0.16.4 → secator-0.16.5}/secator/exporters/gdrive.py +0 -0
  96. {secator-0.16.4 → secator-0.16.5}/secator/exporters/json.py +0 -0
  97. {secator-0.16.4 → secator-0.16.5}/secator/exporters/table.py +0 -0
  98. {secator-0.16.4 → secator-0.16.5}/secator/exporters/txt.py +0 -0
  99. {secator-0.16.4 → secator-0.16.5}/secator/hooks/__init__.py +0 -0
  100. {secator-0.16.4 → secator-0.16.5}/secator/installer.py +0 -0
  101. {secator-0.16.4 → secator-0.16.5}/secator/loader.py +0 -0
  102. {secator-0.16.4 → secator-0.16.5}/secator/output_types/__init__.py +0 -0
  103. {secator-0.16.4 → secator-0.16.5}/secator/output_types/_base.py +0 -0
  104. {secator-0.16.4 → secator-0.16.5}/secator/output_types/certificate.py +0 -0
  105. {secator-0.16.4 → secator-0.16.5}/secator/output_types/error.py +0 -0
  106. {secator-0.16.4 → secator-0.16.5}/secator/output_types/exploit.py +0 -0
  107. {secator-0.16.4 → secator-0.16.5}/secator/output_types/info.py +0 -0
  108. {secator-0.16.4 → secator-0.16.5}/secator/output_types/ip.py +0 -0
  109. {secator-0.16.4 → secator-0.16.5}/secator/output_types/port.py +0 -0
  110. {secator-0.16.4 → secator-0.16.5}/secator/output_types/progress.py +0 -0
  111. {secator-0.16.4 → secator-0.16.5}/secator/output_types/record.py +0 -0
  112. {secator-0.16.4 → secator-0.16.5}/secator/output_types/stat.py +0 -0
  113. {secator-0.16.4 → secator-0.16.5}/secator/output_types/state.py +0 -0
  114. {secator-0.16.4 → secator-0.16.5}/secator/output_types/subdomain.py +0 -0
  115. {secator-0.16.4 → secator-0.16.5}/secator/output_types/tag.py +0 -0
  116. {secator-0.16.4 → secator-0.16.5}/secator/output_types/target.py +0 -0
  117. {secator-0.16.4 → secator-0.16.5}/secator/output_types/url.py +0 -0
  118. {secator-0.16.4 → secator-0.16.5}/secator/output_types/user_account.py +0 -0
  119. {secator-0.16.4 → secator-0.16.5}/secator/output_types/vulnerability.py +0 -0
  120. {secator-0.16.4 → secator-0.16.5}/secator/output_types/warning.py +0 -0
  121. {secator-0.16.4 → secator-0.16.5}/secator/report.py +0 -0
  122. {secator-0.16.4 → secator-0.16.5}/secator/rich.py +0 -0
  123. {secator-0.16.4 → secator-0.16.5}/secator/runners/__init__.py +0 -0
  124. {secator-0.16.4 → secator-0.16.5}/secator/runners/_base.py +0 -0
  125. {secator-0.16.4 → secator-0.16.5}/secator/runners/_helpers.py +0 -0
  126. {secator-0.16.4 → secator-0.16.5}/secator/runners/celery.py +0 -0
  127. {secator-0.16.4 → secator-0.16.5}/secator/runners/command.py +0 -0
  128. {secator-0.16.4 → secator-0.16.5}/secator/runners/scan.py +0 -0
  129. {secator-0.16.4 → secator-0.16.5}/secator/runners/task.py +0 -0
  130. {secator-0.16.4 → secator-0.16.5}/secator/runners/workflow.py +0 -0
  131. {secator-0.16.4 → secator-0.16.5}/secator/scans/__init__.py +0 -0
  132. {secator-0.16.4 → secator-0.16.5}/secator/serializers/__init__.py +0 -0
  133. {secator-0.16.4 → secator-0.16.5}/secator/serializers/dataclass.py +0 -0
  134. {secator-0.16.4 → secator-0.16.5}/secator/serializers/json.py +0 -0
  135. {secator-0.16.4 → secator-0.16.5}/secator/serializers/regex.py +0 -0
  136. {secator-0.16.4 → secator-0.16.5}/secator/tasks/__init__.py +0 -0
  137. {secator-0.16.4 → secator-0.16.5}/secator/tasks/arjun.py +0 -0
  138. {secator-0.16.4 → secator-0.16.5}/secator/tasks/bbot.py +0 -0
  139. {secator-0.16.4 → secator-0.16.5}/secator/tasks/bup.py +0 -0
  140. {secator-0.16.4 → secator-0.16.5}/secator/tasks/cariddi.py +0 -0
  141. {secator-0.16.4 → secator-0.16.5}/secator/tasks/dalfox.py +0 -0
  142. {secator-0.16.4 → secator-0.16.5}/secator/tasks/dirsearch.py +0 -0
  143. {secator-0.16.4 → secator-0.16.5}/secator/tasks/dnsx.py +0 -0
  144. {secator-0.16.4 → secator-0.16.5}/secator/tasks/feroxbuster.py +0 -0
  145. {secator-0.16.4 → secator-0.16.5}/secator/tasks/ffuf.py +0 -0
  146. {secator-0.16.4 → secator-0.16.5}/secator/tasks/fping.py +0 -0
  147. {secator-0.16.4 → secator-0.16.5}/secator/tasks/gau.py +0 -0
  148. {secator-0.16.4 → secator-0.16.5}/secator/tasks/gf.py +0 -0
  149. {secator-0.16.4 → secator-0.16.5}/secator/tasks/gitleaks.py +0 -0
  150. {secator-0.16.4 → secator-0.16.5}/secator/tasks/gospider.py +0 -0
  151. {secator-0.16.4 → secator-0.16.5}/secator/tasks/grype.py +0 -0
  152. {secator-0.16.4 → secator-0.16.5}/secator/tasks/h8mail.py +0 -0
  153. {secator-0.16.4 → secator-0.16.5}/secator/tasks/httpx.py +0 -0
  154. {secator-0.16.4 → secator-0.16.5}/secator/tasks/katana.py +0 -0
  155. {secator-0.16.4 → secator-0.16.5}/secator/tasks/maigret.py +0 -0
  156. {secator-0.16.4 → secator-0.16.5}/secator/tasks/mapcidr.py +0 -0
  157. {secator-0.16.4 → secator-0.16.5}/secator/tasks/msfconsole.py +0 -0
  158. {secator-0.16.4 → secator-0.16.5}/secator/tasks/naabu.py +0 -0
  159. {secator-0.16.4 → secator-0.16.5}/secator/tasks/nmap.py +0 -0
  160. {secator-0.16.4 → secator-0.16.5}/secator/tasks/nuclei.py +0 -0
  161. {secator-0.16.4 → secator-0.16.5}/secator/tasks/searchsploit.py +0 -0
  162. {secator-0.16.4 → secator-0.16.5}/secator/tasks/subfinder.py +0 -0
  163. {secator-0.16.4 → secator-0.16.5}/secator/tasks/testssl.py +0 -0
  164. {secator-0.16.4 → secator-0.16.5}/secator/tasks/trivy.py +0 -0
  165. {secator-0.16.4 → secator-0.16.5}/secator/tasks/wafw00f.py +0 -0
  166. {secator-0.16.4 → secator-0.16.5}/secator/tasks/wpprobe.py +0 -0
  167. {secator-0.16.4 → secator-0.16.5}/secator/tasks/wpscan.py +0 -0
  168. {secator-0.16.4 → secator-0.16.5}/secator/template.py +0 -0
  169. {secator-0.16.4 → secator-0.16.5}/secator/thread.py +0 -0
  170. {secator-0.16.4 → secator-0.16.5}/secator/tree.py +0 -0
  171. {secator-0.16.4 → secator-0.16.5}/secator/utils.py +0 -0
  172. {secator-0.16.4 → secator-0.16.5}/secator/utils_test.py +0 -0
  173. {secator-0.16.4 → secator-0.16.5}/secator/workflows/__init__.py +0 -0
  174. {secator-0.16.4 → secator-0.16.5}/tests/__init__.py +0 -0
  175. {secator-0.16.4 → secator-0.16.5}/tests/fixtures/h8mail_breach.txt +0 -0
  176. {secator-0.16.4 → secator-0.16.5}/tests/fixtures/ls.py +0 -0
  177. {secator-0.16.4 → secator-0.16.5}/tests/fixtures/msfconsole_input.rc +0 -0
  178. {secator-0.16.4 → secator-0.16.5}/tests/fixtures/nmap_output.xml +0 -0
  179. {secator-0.16.4 → secator-0.16.5}/tests/integration/__init__.py +0 -0
  180. {secator-0.16.4 → secator-0.16.5}/tests/integration/all.yaml +0 -0
  181. {secator-0.16.4 → secator-0.16.5}/tests/integration/inputs.py +0 -0
  182. {secator-0.16.4 → secator-0.16.5}/tests/integration/outputs.py +0 -0
  183. {secator-0.16.4 → secator-0.16.5}/tests/integration/setup.sh +0 -0
  184. {secator-0.16.4 → secator-0.16.5}/tests/integration/teardown.sh +0 -0
  185. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_addons.py +0 -0
  186. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_celery.py +0 -0
  187. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_scans.py +0 -0
  188. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_tasks.py +0 -0
  189. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_tasks_categories.py +0 -0
  190. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_worker.py +0 -0
  191. {secator-0.16.4 → secator-0.16.5}/tests/integration/test_workflows.py +0 -0
  192. {secator-0.16.4 → secator-0.16.5}/tests/integration/wordlist.txt +0 -0
  193. {secator-0.16.4 → secator-0.16.5}/tests/integration/wordlist_dns.txt +0 -0
  194. {secator-0.16.4 → secator-0.16.5}/tests/integration/wordpress_toolbox/Dockerfile +0 -0
  195. {secator-0.16.4 → secator-0.16.5}/tests/integration/wordpress_toolbox/Makefile +0 -0
  196. {secator-0.16.4 → secator-0.16.5}/tests/performance/__init__.py +0 -0
  197. {secator-0.16.4 → secator-0.16.5}/tests/performance/loadtester.py +0 -0
  198. {secator-0.16.4 → secator-0.16.5}/tests/performance/test_worker.py +0 -0
  199. {secator-0.16.4 → secator-0.16.5}/tests/template/test_templates.py +0 -0
  200. {secator-0.16.4 → secator-0.16.5}/tests/unit/__init__.py +0 -0
  201. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_celery.py +0 -0
  202. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_cli.py +0 -0
  203. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_command.py +0 -0
  204. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_config.py +0 -0
  205. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_offline.py +0 -0
  206. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_runners.py +0 -0
  207. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_runners_helpers.py +0 -0
  208. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_scans.py +0 -0
  209. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_serializers.py +0 -0
  210. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_tasks.py +0 -0
  211. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_tasks_categories.py +0 -0
  212. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_template.py +0 -0
  213. {secator-0.16.4 → secator-0.16.5}/tests/unit/test_utils.py +0 -0
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.16.5](https://github.com/freelabz/secator/compare/v0.16.4...v0.16.5) (2025-06-25)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **celery:** pass mongodb uuids when enabled ([#701](https://github.com/freelabz/secator/issues/701)) ([64b43e8](https://github.com/freelabz/secator/commit/64b43e88659c963a0c526829a2f72ee75348edef))
9
+ * **ci:** add apt update in ci ([261d1e8](https://github.com/freelabz/secator/commit/261d1e8bdbca06e85adf3df7a9489bff7ba445ab))
10
+ * prod optimizations (GCS ValueError, dynamic profile for fuzzers with big wordlists) ([#707](https://github.com/freelabz/secator/issues/707)) ([bcd6024](https://github.com/freelabz/secator/commit/bcd6024d91362ca141b71a49c4f80c759e1801ca))
11
+
3
12
  ## [0.16.4](https://github.com/freelabz/secator/compare/v0.16.3...v0.16.4) (2025-06-13)
4
13
 
5
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: secator
3
- Version: 0.16.4
3
+ Version: 0.16.5
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
@@ -3,11 +3,13 @@ steps:
3
3
  entrypoint: 'bash'
4
4
  args: ['-c', 'docker pull ${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/secator:${_VERSION} || exit 0']
5
5
  - name: 'gcr.io/cloud-builders/docker'
6
- args: ['build', '-t', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/secator:${_VERSION}', '--cache-from', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/secator:${_VERSION}', '.']
6
+ args: ['build', '-t', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/secator:${_VERSION}', '--build-arg', 'flavor=${_FLAVOR}', '--cache-from', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/secator:${_VERSION}', '.']
7
+
7
8
  substitutions:
8
9
  _REPOSITORY: secator
9
10
  _LOCATION: europe-west1
10
- _VERSION: latest
11
+ _VERSION: dev
12
+ _FLAVOR: full
11
13
 
12
14
  images:
13
15
  - '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/secator:${_VERSION}'
@@ -4,7 +4,7 @@ build-backend = 'hatchling.build'
4
4
 
5
5
  [project]
6
6
  name = 'secator'
7
- version = "0.16.4"
7
+ version = "0.16.5"
8
8
  authors = [{ name = 'FreeLabz', email = 'sales@freelabz.com' }]
9
9
  readme = 'README.md'
10
10
  description = "The pentester's swiss knife."
@@ -240,7 +240,8 @@ def forward_results(results):
240
240
  console.print(Info(message=f'Deduplicating {len(results)} results'))
241
241
 
242
242
  results = flatten(results)
243
- if CONFIG.addons.mongodb.enabled:
243
+ if IN_CELERY_WORKER_PROCESS and CONFIG.addons.mongodb.enabled:
244
+ console.print(Info(message=f'Extracting uuids from {len(results)} results'))
244
245
  uuids = [r._uuid for r in results if hasattr(r, '_uuid')]
245
246
  uuids.extend([r for r in results if isinstance(r, str)])
246
247
  results = list(set(uuids))
@@ -271,12 +272,14 @@ def mark_runner_started(results, runner, enable_hooks=True):
271
272
  if results:
272
273
  results = forward_results(results)
273
274
  runner.enable_hooks = enable_hooks
274
- if CONFIG.addons.mongodb.enabled:
275
+ if IN_CELERY_WORKER_PROCESS and CONFIG.addons.mongodb.enabled:
275
276
  from secator.hooks.mongodb import get_results
276
277
  results = get_results(results)
277
278
  for item in results:
278
279
  runner.add_result(item, print=False)
279
280
  runner.mark_started()
281
+ if IN_CELERY_WORKER_PROCESS and CONFIG.addons.mongodb.enabled:
282
+ return [r._uuid for r in runner.results]
280
283
  return runner.results
281
284
 
282
285
 
@@ -297,12 +300,14 @@ def mark_runner_completed(results, runner, enable_hooks=True):
297
300
  debug(f'Runner {runner.unique_name} has finished, running mark_completed', sub='celery')
298
301
  results = forward_results(results)
299
302
  runner.enable_hooks = enable_hooks
300
- if CONFIG.addons.mongodb.enabled:
303
+ if IN_CELERY_WORKER_PROCESS and CONFIG.addons.mongodb.enabled:
301
304
  from secator.hooks.mongodb import get_results
302
305
  results = get_results(results)
303
306
  for item in results:
304
307
  runner.add_result(item, print=False)
305
308
  runner.mark_completed()
309
+ if IN_CELERY_WORKER_PROCESS and CONFIG.addons.mongodb.enabled:
310
+ return [r._uuid for r in runner.results]
306
311
  return runner.results
307
312
 
308
313
 
@@ -42,10 +42,12 @@ def upload_blob(bucket_name, source_file_name, destination_blob_name):
42
42
  storage_client = storage.Client()
43
43
  bucket = storage_client.bucket(bucket_name)
44
44
  blob = bucket.blob(destination_blob_name)
45
- blob.upload_from_filename(source_file_name)
45
+ with open(source_file_name, 'rb') as f:
46
+ f.seek(0)
47
+ blob.upload_from_file(f)
46
48
  end_time = time()
47
49
  elapsed = end_time - start_time
48
- debug(f'in {elapsed:.4f}s', obj={'blob': 'CREATED', 'blob_name': destination_blob_name, 'bucket': bucket_name}, obj_after=False, sub='hooks.gcs', verbose=True) # noqa: E501
50
+ debug(f'in {elapsed:.4f}s', obj={'blob': 'UPLOADED', 'blob_name': destination_blob_name, 'bucket': bucket_name}, obj_after=False, sub='hooks.gcs', verbose=True) # noqa: E501
49
51
 
50
52
 
51
53
  HOOKS = {
@@ -30,7 +30,8 @@ def get_mongodb_client():
30
30
  _mongodb_client = pymongo.MongoClient(
31
31
  escape_mongodb_url(MONGODB_URL),
32
32
  maxPoolSize=MONGODB_MAX_POOL_SIZE,
33
- serverSelectionTimeoutMS=MONGODB_CONNECT_TIMEOUT
33
+ serverSelectionTimeoutMS=MONGODB_CONNECT_TIMEOUT,
34
+ connect=False
34
35
  )
35
36
  return _mongodb_client
36
37
 
@@ -157,19 +158,23 @@ def load_findings(objs):
157
158
 
158
159
 
159
160
  @shared_task
160
- def tag_duplicates(ws_id: str = None):
161
+ def tag_duplicates(ws_id: str = None, full_scan: bool = False):
161
162
  """Tag duplicates in workspace.
162
163
 
163
164
  Args:
164
165
  ws_id (str): Workspace id.
166
+ full_scan (bool): If True, scan all findings, otherwise only untagged findings.
165
167
  """
166
168
  debug(f'running duplicate check on workspace {ws_id}', sub='hooks.mongodb')
167
169
  client = get_mongodb_client()
168
170
  db = client.main
169
171
  workspace_query = list(
170
172
  db.findings.find({'_context.workspace_id': str(ws_id), '_tagged': True}).sort('_timestamp', -1))
173
+ untagged_query = {'_context.workspace_id': str(ws_id)}
174
+ if not full_scan:
175
+ untagged_query['_tagged'] = {'$ne': True}
171
176
  untagged_query = list(
172
- db.findings.find({'_context.workspace_id': str(ws_id), '_tagged': {'$ne': True}}).sort('_timestamp', -1))
177
+ db.findings.find(untagged_query).sort('_timestamp', -1))
173
178
  if not untagged_query:
174
179
  debug('no untagged findings. Skipping.', id=ws_id, sub='hooks.mongodb')
175
180
  return
@@ -96,6 +96,20 @@ class HttpFuzzer(Command):
96
96
  meta_opts = {k: OPTS[k] for k in OPTS_HTTP_FUZZERS}
97
97
  input_types = [URL]
98
98
  output_types = [Url]
99
+ profile = lambda opts: HttpFuzzer.dynamic_profile(opts) # noqa: E731
100
+
101
+ @staticmethod
102
+ def dynamic_profile(opts):
103
+ wordlist = HttpFuzzer._get_opt_value(
104
+ opts,
105
+ 'wordlist',
106
+ opts_conf=dict(HttpFuzzer.opts, **HttpFuzzer.meta_opts),
107
+ opt_aliases=opts.get('aliases', []),
108
+ preprocess=True,
109
+ process=True,
110
+ )
111
+ wordlist_size_mb = os.path.getsize(wordlist) / (1024 * 1024)
112
+ return 'cpu' if wordlist_size_mb > 5 else 'io'
99
113
 
100
114
 
101
115
  #----------------#
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes