souleyez 2.43.13__tar.gz → 2.43.15__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.
Files changed (407) hide show
  1. {souleyez-2.43.13/souleyez.egg-info → souleyez-2.43.15}/PKG-INFO +1 -1
  2. {souleyez-2.43.13 → souleyez-2.43.15}/pyproject.toml +1 -1
  3. souleyez-2.43.15/souleyez/__init__.py +2 -0
  4. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/tool_chaining.py +103 -0
  5. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/README.md +1 -1
  6. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/result_handler.py +21 -0
  7. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/main.py +1 -1
  8. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/gobuster.py +48 -1
  9. souleyez-2.43.15/souleyez/ui/wordlist_browser.py +481 -0
  10. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/wordlists.py +12 -0
  11. {souleyez-2.43.13 → souleyez-2.43.15/souleyez.egg-info}/PKG-INFO +1 -1
  12. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez.egg-info/SOURCES.txt +1 -0
  13. souleyez-2.43.13/souleyez/__init__.py +0 -2
  14. {souleyez-2.43.13 → souleyez-2.43.15}/LICENSE +0 -0
  15. {souleyez-2.43.13 → souleyez-2.43.15}/MANIFEST.in +0 -0
  16. {souleyez-2.43.13 → souleyez-2.43.15}/README.md +0 -0
  17. {souleyez-2.43.13 → souleyez-2.43.15}/setup.cfg +0 -0
  18. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/__init__.py +0 -0
  19. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/action_mapper.py +0 -0
  20. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/chain_advisor.py +0 -0
  21. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/claude_provider.py +0 -0
  22. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/context_builder.py +0 -0
  23. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/executor.py +0 -0
  24. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/feedback_handler.py +0 -0
  25. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/llm_factory.py +0 -0
  26. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/llm_provider.py +0 -0
  27. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/ollama_provider.py +0 -0
  28. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/ollama_service.py +0 -0
  29. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/path_scorer.py +0 -0
  30. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/recommender.py +0 -0
  31. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/report_context.py +0 -0
  32. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/report_prompts.py +0 -0
  33. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/report_service.py +0 -0
  34. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/result_parser.py +0 -0
  35. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ai/safety.py +0 -0
  36. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/assets/__init__.py +0 -0
  37. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/assets/souleyez-icon.png +0 -0
  38. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/auth/__init__.py +0 -0
  39. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/auth/audit.py +0 -0
  40. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/auth/engagement_access.py +0 -0
  41. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/auth/permissions.py +0 -0
  42. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/auth/session_manager.py +0 -0
  43. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/auth/user_manager.py +0 -0
  44. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/__init__.py +0 -0
  45. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/audit.py +0 -0
  46. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/auth.py +0 -0
  47. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/deliverables.py +0 -0
  48. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/engagement.py +0 -0
  49. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/license.py +0 -0
  50. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/screenshots.py +0 -0
  51. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/commands/user.py +0 -0
  52. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/config.py +0 -0
  53. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/__init__.py +0 -0
  54. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/credential_tester.py +0 -0
  55. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/cve_mappings.py +0 -0
  56. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/cve_matcher.py +0 -0
  57. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_auto_mapper.py +0 -0
  58. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_chain_engine.py +0 -0
  59. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_database.py +0 -0
  60. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_integration.py +0 -0
  61. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_rpc_client.py +0 -0
  62. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_rpc_manager.py +0 -0
  63. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/msf_sync_manager.py +0 -0
  64. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/network_utils.py +0 -0
  65. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/parser_handler.py +0 -0
  66. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/pending_chains.py +0 -0
  67. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/templates.py +0 -0
  68. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/version_utils.py +0 -0
  69. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/vuln_correlation.py +0 -0
  70. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/core/web_utils.py +0 -0
  71. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/README.md +0 -0
  72. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/active_directory.json +0 -0
  73. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/cis_controls_v8.json +0 -0
  74. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/cloud_security.json +0 -0
  75. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/cmmc_2.0.json +0 -0
  76. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/external_network.json +0 -0
  77. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/ffiec_cat.json +0 -0
  78. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/gdpr_article32.json +0 -0
  79. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/glba_safeguards.json +0 -0
  80. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/hipaa_security.json +0 -0
  81. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/hitrust_csf.json +0 -0
  82. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/internal_network.json +0 -0
  83. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/iso27001.json +0 -0
  84. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/nerc_cip.json +0 -0
  85. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/nist_csf.json +0 -0
  86. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/owasp_top10_2021.json +0 -0
  87. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/pci_dss_4.0.json +0 -0
  88. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/ptes_standard.json +0 -0
  89. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/red_team.json +0 -0
  90. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/soc2_type2.json +0 -0
  91. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/templates/webapp_advanced.json +0 -0
  92. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/README.md +0 -0
  93. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/all_users.txt +0 -0
  94. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/api_endpoints.txt +0 -0
  95. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/default_credentials.txt +0 -0
  96. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/macos_users.txt +0 -0
  97. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/router_passwords.txt +0 -0
  98. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/router_users.txt +0 -0
  99. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/soul_pass.txt +0 -0
  100. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/soul_users.txt +0 -0
  101. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/subdomains_common.txt +0 -0
  102. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/top100.txt +0 -0
  103. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/top20_quick.txt +0 -0
  104. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
  105. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
  106. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/web_extensions.txt +0 -0
  107. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/data/wordlists/web_files_common.txt +0 -0
  108. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/detection/__init__.py +0 -0
  109. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/detection/attack_signatures.py +0 -0
  110. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/detection/mitre_mappings.py +0 -0
  111. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/detection/validator.py +0 -0
  112. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/devtools.py +0 -0
  113. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/api-reference/cli-commands.md +0 -0
  114. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/api-reference/engagement-api.md +0 -0
  115. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/api-reference/integration-guide.md +0 -0
  116. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/api-reference/parser-formats.md +0 -0
  117. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/architecture/decisions/000-template.md +0 -0
  118. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
  119. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
  120. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
  121. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/architecture/overview.md +0 -0
  122. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/database/MIGRATIONS.md +0 -0
  123. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/database/SCHEMA.md +0 -0
  124. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
  125. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
  126. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
  127. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/images/README.md +0 -0
  128. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/security/best-practices.md +0 -0
  129. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/security/credential-encryption.md +0 -0
  130. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/security/password-protected-commands.md +0 -0
  131. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/security/secure-defaults.md +0 -0
  132. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/security/threat-model.md +0 -0
  133. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/ai-integration.md +0 -0
  134. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/attack-surface.md +0 -0
  135. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/auto-chaining.md +0 -0
  136. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/configuration.md +0 -0
  137. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
  138. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/dependencies.md +0 -0
  139. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/evidence-vault.md +0 -0
  140. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
  141. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/getting-started.md +0 -0
  142. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/installation.md +0 -0
  143. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
  144. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/rbac.md +0 -0
  145. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/report-generation.md +0 -0
  146. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/scope-management.md +0 -0
  147. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/siem-integration.md +0 -0
  148. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/tools-reference.md +0 -0
  149. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/troubleshooting.md +0 -0
  150. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/uninstall.md +0 -0
  151. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/worker-management.md +0 -0
  152. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/docs/user-guide/workflows.md +0 -0
  153. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/__init__.py +0 -0
  154. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/background.py +0 -0
  155. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/base.py +0 -0
  156. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/job_status.py +0 -0
  157. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/loader.py +0 -0
  158. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/log_sanitizer.py +0 -0
  159. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/manager.py +0 -0
  160. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/engine/worker_manager.py +0 -0
  161. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/export/__init__.py +0 -0
  162. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/export/evidence_bundle.py +0 -0
  163. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/feature_flags/__init__.py +0 -0
  164. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/feature_flags/features.py +0 -0
  165. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/feature_flags.py +0 -0
  166. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/history.py +0 -0
  167. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/importers/__init__.py +0 -0
  168. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/importers/msf_importer.py +0 -0
  169. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/importers/smart_importer.py +0 -0
  170. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/__init__.py +0 -0
  171. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/__init__.py +0 -0
  172. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/base.py +0 -0
  173. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/elastic.py +0 -0
  174. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/factory.py +0 -0
  175. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/googlesecops.py +0 -0
  176. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
  177. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
  178. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/sentinel.py +0 -0
  179. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/splunk.py +0 -0
  180. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/siem/wazuh.py +0 -0
  181. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/wazuh/__init__.py +0 -0
  182. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/wazuh/client.py +0 -0
  183. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/wazuh/config.py +0 -0
  184. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/wazuh/host_mapper.py +0 -0
  185. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/integrations/wazuh/sync.py +0 -0
  186. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/__init__.py +0 -0
  187. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/correlation_analyzer.py +0 -0
  188. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/exploit_knowledge.py +0 -0
  189. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/exploit_suggestions.py +0 -0
  190. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/gap_analyzer.py +0 -0
  191. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/gap_detector.py +0 -0
  192. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/sensitive_tables.py +0 -0
  193. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/service_parser.py +0 -0
  194. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/surface_analyzer.py +0 -0
  195. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/intelligence/target_parser.py +0 -0
  196. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/licensing/__init__.py +0 -0
  197. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/licensing/validator.py +0 -0
  198. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/log_config.py +0 -0
  199. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/migrations/__init__.py +0 -0
  200. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/migrations/fix_job_counter.py +0 -0
  201. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/__init__.py +0 -0
  202. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/bloodhound_parser.py +0 -0
  203. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/crackmapexec_parser.py +0 -0
  204. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/dalfox_parser.py +0 -0
  205. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/dnsrecon_parser.py +0 -0
  206. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/enum4linux_parser.py +0 -0
  207. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/ffuf_parser.py +0 -0
  208. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/gobuster_parser.py +0 -0
  209. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/hashcat_parser.py +0 -0
  210. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/http_fingerprint_parser.py +0 -0
  211. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/hydra_parser.py +0 -0
  212. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/impacket_parser.py +0 -0
  213. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/john_parser.py +0 -0
  214. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/msf_parser.py +0 -0
  215. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/nikto_parser.py +0 -0
  216. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/nmap_parser.py +0 -0
  217. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/nuclei_parser.py +0 -0
  218. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/responder_parser.py +0 -0
  219. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/searchsploit_parser.py +0 -0
  220. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/smbmap_parser.py +0 -0
  221. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/sqlmap_parser.py +0 -0
  222. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/theharvester_parser.py +0 -0
  223. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/whois_parser.py +0 -0
  224. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/parsers/wpscan_parser.py +0 -0
  225. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/__init__.py +0 -0
  226. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/afp.py +0 -0
  227. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/afp_brute.py +0 -0
  228. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/ard.py +0 -0
  229. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/bloodhound.py +0 -0
  230. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/crackmapexec.py +0 -0
  231. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/dalfox.py +0 -0
  232. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/dns_hijack.py +0 -0
  233. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/dnsrecon.py +0 -0
  234. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/enum4linux.py +0 -0
  235. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/ffuf.py +0 -0
  236. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/firmware_extract.py +0 -0
  237. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/hashcat.py +0 -0
  238. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/http_fingerprint.py +0 -0
  239. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/hydra.py +0 -0
  240. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/impacket_getnpusers.py +0 -0
  241. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/impacket_psexec.py +0 -0
  242. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/impacket_secretsdump.py +0 -0
  243. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/impacket_smbclient.py +0 -0
  244. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/john.py +0 -0
  245. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/macos_ssh.py +0 -0
  246. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/mdns.py +0 -0
  247. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/msf_auxiliary.py +0 -0
  248. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/msf_exploit.py +0 -0
  249. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/nikto.py +0 -0
  250. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/nmap.py +0 -0
  251. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/nuclei.py +0 -0
  252. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/plugin_base.py +0 -0
  253. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/plugin_template.py +0 -0
  254. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/responder.py +0 -0
  255. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/router_http_brute.py +0 -0
  256. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/router_ssh_brute.py +0 -0
  257. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/router_telnet_brute.py +0 -0
  258. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/routersploit.py +0 -0
  259. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/routersploit_exploit.py +0 -0
  260. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/searchsploit.py +0 -0
  261. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/smbmap.py +0 -0
  262. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/sqlmap.py +0 -0
  263. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/theharvester.py +0 -0
  264. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/tr069.py +0 -0
  265. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/upnp.py +0 -0
  266. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/upnp_abuse.py +0 -0
  267. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/vnc_access.py +0 -0
  268. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/vnc_brute.py +0 -0
  269. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/whois.py +0 -0
  270. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/plugins/wpscan.py +0 -0
  271. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/__init__.py +0 -0
  272. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/attack_chain.py +0 -0
  273. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/charts.py +0 -0
  274. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/compliance_mappings.py +0 -0
  275. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/detection_report.py +0 -0
  276. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/formatters.py +0 -0
  277. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/generator.py +0 -0
  278. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/reporting/metrics.py +0 -0
  279. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/scanner.py +0 -0
  280. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/security/__init__.py +0 -0
  281. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/security/scope_validator.py +0 -0
  282. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/security/validation.py +0 -0
  283. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/security.py +0 -0
  284. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/__init__.py +0 -0
  285. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/credentials.py +0 -0
  286. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/crypto.py +0 -0
  287. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/database.py +0 -0
  288. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/db.py +0 -0
  289. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/deliverable_evidence.py +0 -0
  290. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/deliverable_exporter.py +0 -0
  291. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/deliverable_templates.py +0 -0
  292. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/deliverables.py +0 -0
  293. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/engagements.py +0 -0
  294. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/evidence.py +0 -0
  295. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/execution_log.py +0 -0
  296. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/exploit_attempts.py +0 -0
  297. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/exploits.py +0 -0
  298. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/findings.py +0 -0
  299. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/hosts.py +0 -0
  300. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrate_to_engagements.py +0 -0
  301. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
  302. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
  303. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
  304. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_005_screenshots.py +0 -0
  305. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_006_deliverables.py +0 -0
  306. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
  307. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
  308. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
  309. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
  310. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
  311. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
  312. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
  313. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
  314. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
  315. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
  316. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
  317. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
  318. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
  319. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
  320. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
  321. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
  322. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
  323. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
  324. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
  325. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
  326. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/_027_multi_siem_persistence.py +0 -0
  327. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/__init__.py +0 -0
  328. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/migrations/migration_manager.py +0 -0
  329. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/msf_sessions.py +0 -0
  330. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/osint.py +0 -0
  331. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/recommendation_engine.py +0 -0
  332. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/schema.sql +0 -0
  333. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/screenshots.py +0 -0
  334. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/smb_shares.py +0 -0
  335. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/sqlmap_data.py +0 -0
  336. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/team_collaboration.py +0 -0
  337. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/timeline_tracker.py +0 -0
  338. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/wazuh_vulns.py +0 -0
  339. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/storage/web_paths.py +0 -0
  340. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/testing/__init__.py +0 -0
  341. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/testing/credential_tester.py +0 -0
  342. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/__init__.py +0 -0
  343. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/ai_quotes.py +0 -0
  344. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/attack_surface.py +0 -0
  345. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/chain_rules_view.py +0 -0
  346. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/correlation_view.py +0 -0
  347. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/dashboard.py +0 -0
  348. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/deliverables_view.py +0 -0
  349. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/design_system.py +0 -0
  350. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/errors.py +0 -0
  351. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/evidence_linking_view.py +0 -0
  352. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/evidence_vault.py +0 -0
  353. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/exploit_suggestions_view.py +0 -0
  354. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/export_view.py +0 -0
  355. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/gap_analysis_view.py +0 -0
  356. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/help_system.py +0 -0
  357. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/intelligence_view.py +0 -0
  358. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/interactive.py +0 -0
  359. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/interactive_selector.py +0 -0
  360. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/log_formatter.py +0 -0
  361. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/menu_components.py +0 -0
  362. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/msf_auxiliary_menu.py +0 -0
  363. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/pending_chains_view.py +0 -0
  364. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/progress_indicators.py +0 -0
  365. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/recommendations_view.py +0 -0
  366. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/rule_builder.py +0 -0
  367. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/setup_wizard.py +0 -0
  368. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/shortcuts.py +0 -0
  369. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
  370. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/splunk_vulns_view.py +0 -0
  371. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/team_dashboard.py +0 -0
  372. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/template_selector.py +0 -0
  373. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/terminal.py +0 -0
  374. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/timeline_view.py +0 -0
  375. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/tool_setup.py +0 -0
  376. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/tutorial.py +0 -0
  377. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/tutorial_state.py +0 -0
  378. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui/wazuh_vulns_view.py +0 -0
  379. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/ui.py +0 -0
  380. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/utils/__init__.py +0 -0
  381. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/utils/tool_checker.py +0 -0
  382. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez/utils.py +0 -0
  383. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez.egg-info/dependency_links.txt +0 -0
  384. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez.egg-info/entry_points.txt +0 -0
  385. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez.egg-info/requires.txt +0 -0
  386. {souleyez-2.43.13 → souleyez-2.43.15}/souleyez.egg-info/top_level.txt +0 -0
  387. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_config.py +0 -0
  388. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_config_enhanced.py +0 -0
  389. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_crypto.py +0 -0
  390. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_database_100_final.py +0 -0
  391. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_engagements.py +0 -0
  392. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_engagements_simple.py +0 -0
  393. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_job_status_tracking.py +0 -0
  394. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_logging.py +0 -0
  395. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_network_utils.py +0 -0
  396. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_ollama_service.py +0 -0
  397. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_plugin_base.py +0 -0
  398. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_recommender.py +0 -0
  399. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_result_handler_sqlmap.py +0 -0
  400. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_schema.py +0 -0
  401. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_scope_integration.py +0 -0
  402. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_scope_validator.py +0 -0
  403. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_security_hardening.py +0 -0
  404. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_security_validation.py +0 -0
  405. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_sqlmap_parser.py +0 -0
  406. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_storage.py +0 -0
  407. {souleyez-2.43.13 → souleyez-2.43.15}/tests/test_version_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: souleyez
3
- Version: 2.43.13
3
+ Version: 2.43.15
4
4
  Summary: AI-Powered Penetration Testing Platform with 40+ integrated tools
5
5
  Author-email: CyberSoul Security <contact@cybersoulsecurity.com>
6
6
  Maintainer-email: CyberSoul Security <contact@cybersoulsecurity.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "souleyez"
7
- version = "2.43.13"
7
+ version = "2.43.15"
8
8
  description = "AI-Powered Penetration Testing Platform with 40+ integrated tools"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -0,0 +1,2 @@
1
+ __version__ = '2.43.15'
2
+
@@ -4451,6 +4451,58 @@ class ToolChaining:
4451
4451
  return job_ids
4452
4452
  # === END Wildcard Auto-Retry ===
4453
4453
 
4454
+ # === Host Redirect Auto-Retry Logic ===
4455
+ # If gobuster detected a host-level redirect (e.g., non-www to www), auto-retry with corrected target
4456
+ if parse_results.get('host_redirect_detected') and parse_results.get('redirect_target'):
4457
+ # Check if this is already a retry attempt (prevent loops)
4458
+ is_retry = job.get('metadata', {}).get('redirect_retry', False)
4459
+
4460
+ if not is_retry:
4461
+ redirect_target = parse_results['redirect_target']
4462
+ original_target = target
4463
+ logger.info(f"🔄 Host redirect detected ({original_target} → {redirect_target}), creating auto-retry with corrected target")
4464
+
4465
+ # Get original args and update the -u parameter with new target
4466
+ args = job.get('args', [])
4467
+ retry_args = []
4468
+ for i, arg in enumerate(args):
4469
+ if arg == '-u' and i + 1 < len(args):
4470
+ # Next arg is the URL, replace it
4471
+ retry_args.append(arg)
4472
+ retry_args.append(redirect_target)
4473
+ # Skip the next iteration since we handled it
4474
+ elif i > 0 and args[i - 1] == '-u':
4475
+ # This is the URL after -u, skip it (already handled)
4476
+ continue
4477
+ else:
4478
+ # Replace <target> placeholder if present
4479
+ retry_args.append(arg.replace(original_target, redirect_target) if original_target in arg else arg)
4480
+
4481
+ # Build retry job command with corrected target
4482
+ retry_command = {
4483
+ 'tool': 'gobuster',
4484
+ 'target': redirect_target,
4485
+ 'args': retry_args,
4486
+ 'reason': f'Auto-retry: gobuster (host redirect detected: {original_target} → {redirect_target})',
4487
+ 'metadata': {
4488
+ 'redirect_retry': True,
4489
+ 'retry_parent_job_id': job.get('id'),
4490
+ 'original_target': original_target,
4491
+ 'redirect_target': redirect_target
4492
+ }
4493
+ }
4494
+
4495
+ # Enqueue the retry job
4496
+ retry_job_ids = self._enqueue_commands([retry_command], tool, engagement_id, redirect_target, parent_job_id=job.get('id'))
4497
+ if retry_job_ids:
4498
+ job_ids.extend(retry_job_ids)
4499
+ logger.info(f"✓ Retry job created with corrected target: {redirect_target}")
4500
+
4501
+ # Skip further processing of this redirect scan
4502
+ # Let the retry job complete and process properly
4503
+ return job_ids
4504
+ # === END Host Redirect Auto-Retry ===
4505
+
4454
4506
  # PHP/ASP files found → trigger SQLMap intelligently
4455
4507
  # High-value targets get direct testing, others get base URL crawl
4456
4508
  php_files = parse_results.get('php_files', [])
@@ -5041,6 +5093,57 @@ class ToolChaining:
5041
5093
  return job_ids
5042
5094
  # === END Gobuster wildcard retry ===
5043
5095
 
5096
+ # === Special handling for Gobuster host redirect retry ===
5097
+ if tool == 'gobuster' and parse_results.get('host_redirect_detected'):
5098
+ # Gobuster detected host-level redirect, auto-retry with corrected target
5099
+ from souleyez.engine.background import enqueue_job
5100
+ from souleyez.log_config import get_logger
5101
+ logger = get_logger(__name__)
5102
+
5103
+ # Check if this is already a redirect retry (prevent loops)
5104
+ is_redirect_retry = job.get('metadata', {}).get('redirect_retry', False)
5105
+ if is_redirect_retry:
5106
+ logger.info(f"Gobuster host redirect: Already attempted redirect retry, skipping")
5107
+ return job_ids
5108
+
5109
+ # Get the redirect target
5110
+ redirect_target = parse_results.get('redirect_target')
5111
+ if not redirect_target:
5112
+ logger.warning(f"Gobuster host redirect detected but no redirect_target found")
5113
+ return job_ids
5114
+
5115
+ original_target = target
5116
+ logger.info(f"Gobuster host redirect: Auto-retrying with corrected target {redirect_target}")
5117
+
5118
+ # Get original args and update the -u parameter with new target
5119
+ job_args = job.get('args', [])
5120
+ retry_args = []
5121
+ for i, arg in enumerate(job_args):
5122
+ if arg == '-u' and i + 1 < len(job_args):
5123
+ retry_args.append(arg)
5124
+ retry_args.append(redirect_target)
5125
+ elif i > 0 and job_args[i - 1] == '-u':
5126
+ continue
5127
+ else:
5128
+ retry_args.append(arg.replace(original_target, redirect_target) if original_target in arg else arg)
5129
+
5130
+ retry_job_id = enqueue_job(
5131
+ tool='gobuster',
5132
+ target=redirect_target,
5133
+ args=retry_args,
5134
+ label=f"Auto-retry: gobuster (redirect → {redirect_target})",
5135
+ engagement_id=engagement_id,
5136
+ parent_id=job.get('id'),
5137
+ reason=f"Auto-triggered by gobuster: Host redirect detected ({original_target} → {redirect_target})",
5138
+ metadata={'redirect_retry': True, 'retry_parent_job_id': job.get('id'), 'original_target': original_target}
5139
+ )
5140
+
5141
+ job_ids.append(retry_job_id)
5142
+ logger.info(f"Created gobuster redirect retry job #{retry_job_id}")
5143
+
5144
+ return job_ids
5145
+ # === END Gobuster host redirect retry ===
5146
+
5044
5147
  # === Special handling for ffuf: Create SQLMap jobs and recursive ffuf scans ===
5045
5148
  if tool == 'ffuf':
5046
5149
  from souleyez.engine.background import enqueue_job
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.43.13
3
+ **Version:** 2.43.15
4
4
  **Last Updated:** January 12, 2026
5
5
  **Organization:** CyberSoul Security
6
6
 
@@ -1218,12 +1218,27 @@ def parse_gobuster_job(engagement_id: int, log_path: str, job: Dict[str, Any]) -
1218
1218
  exclude_length = length_match.group(1)
1219
1219
  logger.info(f"Gobuster wildcard detected: Length {exclude_length}b")
1220
1220
 
1221
+ # Check for host-level redirect (for auto-retry with corrected target)
1222
+ host_redirect_detected = False
1223
+ redirect_target = None
1224
+
1225
+ if "HOST_REDIRECT_TARGET:" in log_content:
1226
+ host_redirect_detected = True
1227
+ import re
1228
+ redirect_match = re.search(r'HOST_REDIRECT_TARGET:\s*(\S+)', log_content)
1229
+ if redirect_match:
1230
+ redirect_target = redirect_match.group(1)
1231
+ logger.info(f"Gobuster host redirect detected: {redirect_target}")
1232
+
1221
1233
  # Check for gobuster errors
1222
1234
  gobuster_error = detect_tool_error(log_content, 'gobuster')
1223
1235
 
1224
1236
  # Determine status based on results
1225
1237
  if gobuster_error:
1226
1238
  status = STATUS_ERROR # Tool failed to connect
1239
+ elif host_redirect_detected:
1240
+ # Host redirect detected - warning status (triggers auto-retry with corrected target)
1241
+ status = STATUS_WARNING
1227
1242
  elif wildcard_detected:
1228
1243
  # Wildcard detected - warning status (triggers auto-retry)
1229
1244
  status = STATUS_WARNING
@@ -1255,6 +1270,12 @@ def parse_gobuster_job(engagement_id: int, log_path: str, job: Dict[str, Any]) -
1255
1270
  if exclude_length:
1256
1271
  result['exclude_length'] = exclude_length
1257
1272
 
1273
+ # Add host redirect info if detected
1274
+ if host_redirect_detected:
1275
+ result['host_redirect_detected'] = True
1276
+ if redirect_target:
1277
+ result['redirect_target'] = redirect_target
1278
+
1258
1279
  return result
1259
1280
  except Exception as e:
1260
1281
  return {'error': str(e)}
@@ -173,7 +173,7 @@ def _check_privileged_tools():
173
173
 
174
174
 
175
175
  @click.group()
176
- @click.version_option(version='2.43.13')
176
+ @click.version_option(version='2.43.15')
177
177
  def cli():
178
178
  """SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
179
179
  from souleyez.log_config import init_logging
@@ -239,18 +239,25 @@ class GobusterPlugin(PluginBase):
239
239
  This causes gobuster to fail or produce false positives. We detect this
240
240
  upfront and auto-add --exclude-length to filter them out.
241
241
 
242
+ Also detects host-level redirects (e.g., non-www to www) and warns the user.
243
+
242
244
  Returns:
243
245
  dict with keys:
244
246
  - exclude_length: str or None (response length to exclude)
245
247
  - exclude_status: str or None (status code detected)
246
248
  - reason: str or None (explanation)
249
+ - redirect_host: str or None (suggested target if host redirect detected)
247
250
  """
248
- result = {'exclude_length': None, 'exclude_status': None, 'reason': None}
251
+ result = {'exclude_length': None, 'exclude_status': None, 'reason': None, 'redirect_host': None}
249
252
 
250
253
  # Generate random UUID path that definitely doesn't exist
251
254
  test_path = str(uuid.uuid4())
252
255
  test_url = f"{base_url.rstrip('/')}/{test_path}"
253
256
 
257
+ # Parse the original target host for comparison
258
+ original_parsed = urlparse(base_url)
259
+ original_host = original_parsed.netloc.lower()
260
+
254
261
  try:
255
262
  resp = requests.get(
256
263
  test_url,
@@ -263,6 +270,46 @@ class GobusterPlugin(PluginBase):
263
270
  if resp.status_code == 404:
264
271
  return result
265
272
 
273
+ # Check for host-level redirects (301/302/307/308)
274
+ if resp.status_code in [301, 302, 307, 308]:
275
+ location = resp.headers.get('Location', '')
276
+ if location:
277
+ # Parse the redirect location
278
+ redirect_parsed = urlparse(location)
279
+ redirect_host = redirect_parsed.netloc.lower()
280
+
281
+ # If Location is relative, it's not a host redirect
282
+ if redirect_host and redirect_host != original_host:
283
+ # This is a host-level redirect (e.g., non-www to www)
284
+ suggested_url = f"{redirect_parsed.scheme or original_parsed.scheme}://{redirect_host}"
285
+ result['redirect_host'] = suggested_url
286
+ result['exclude_status'] = str(resp.status_code)
287
+ result['reason'] = (
288
+ f"Host redirect detected: {original_host} → {redirect_host}"
289
+ )
290
+
291
+ if log_path:
292
+ with open(log_path, 'a') as f:
293
+ f.write(f"\n{'=' * 70}\n")
294
+ f.write("⚠️ HOST-LEVEL REDIRECT DETECTED\n")
295
+ f.write(f"{'=' * 70}\n")
296
+ f.write(f"Target: {base_url}\n")
297
+ f.write(f"Redirects to: {redirect_host}\n")
298
+ f.write(f"Status: {resp.status_code}\n\n")
299
+ f.write("The server redirects ALL requests to a different host.\n")
300
+ f.write("This causes unreliable results because:\n")
301
+ f.write(" - Response sizes vary based on path length in redirect URL\n")
302
+ f.write(" - Gobuster may report false positives or miss real paths\n\n")
303
+ # Parseable marker for auto-retry
304
+ f.write(f"HOST_REDIRECT_TARGET: {suggested_url}\n\n")
305
+ f.write("Auto-retrying with corrected target...\n")
306
+ f.write(f"{'=' * 70}\n\n")
307
+
308
+ # Still try to exclude the response length for this scan
309
+ content_length = len(resp.content)
310
+ result['exclude_length'] = str(content_length)
311
+ return result
312
+
266
313
  # Any other status for a random UUID = false positive indicator
267
314
  # Common: 403 (blocked), 401 (auth required), 200 (catch-all), 500 (error page)
268
315
  if resp.status_code in [200, 301, 302, 400, 401, 403, 500, 503]: