souleyez 2.31.0__tar.gz → 2.32.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.
Files changed (406) hide show
  1. {souleyez-2.31.0 → souleyez-2.32.0}/BETA_README.md +2 -2
  2. {souleyez-2.31.0/souleyez.egg-info → souleyez-2.32.0}/PKG-INFO +3 -3
  3. {souleyez-2.31.0 → souleyez-2.32.0}/pyproject.toml +1 -1
  4. souleyez-2.32.0/souleyez/__init__.py +1 -0
  5. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/README.md +1 -1
  6. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/wazuh/config.py +141 -18
  7. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/main.py +1 -1
  8. souleyez-2.32.0/souleyez/storage/migrations/_027_multi_siem_persistence.py +119 -0
  9. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/__init__.py +2 -0
  10. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/schema.sql +8 -4
  11. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/interactive.py +56 -13
  12. {souleyez-2.31.0 → souleyez-2.32.0/souleyez.egg-info}/PKG-INFO +3 -3
  13. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez.egg-info/SOURCES.txt +1 -0
  14. souleyez-2.31.0/souleyez/__init__.py +0 -1
  15. {souleyez-2.31.0 → souleyez-2.32.0}/LICENSE +0 -0
  16. {souleyez-2.31.0 → souleyez-2.32.0}/MANIFEST.in +0 -0
  17. {souleyez-2.31.0 → souleyez-2.32.0}/README.md +0 -0
  18. {souleyez-2.31.0 → souleyez-2.32.0}/setup.cfg +0 -0
  19. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/__init__.py +0 -0
  20. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/action_mapper.py +0 -0
  21. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/chain_advisor.py +0 -0
  22. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/claude_provider.py +0 -0
  23. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/context_builder.py +0 -0
  24. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/executor.py +0 -0
  25. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/feedback_handler.py +0 -0
  26. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/llm_factory.py +0 -0
  27. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/llm_provider.py +0 -0
  28. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/ollama_provider.py +0 -0
  29. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/ollama_service.py +0 -0
  30. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/path_scorer.py +0 -0
  31. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/recommender.py +0 -0
  32. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/report_context.py +0 -0
  33. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/report_prompts.py +0 -0
  34. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/report_service.py +0 -0
  35. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/result_parser.py +0 -0
  36. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ai/safety.py +0 -0
  37. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/assets/__init__.py +0 -0
  38. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/assets/souleyez-icon.png +0 -0
  39. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/auth/__init__.py +0 -0
  40. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/auth/audit.py +0 -0
  41. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/auth/engagement_access.py +0 -0
  42. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/auth/permissions.py +0 -0
  43. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/auth/session_manager.py +0 -0
  44. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/auth/user_manager.py +0 -0
  45. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/__init__.py +0 -0
  46. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/audit.py +0 -0
  47. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/auth.py +0 -0
  48. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/deliverables.py +0 -0
  49. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/engagement.py +0 -0
  50. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/license.py +0 -0
  51. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/screenshots.py +0 -0
  52. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/commands/user.py +0 -0
  53. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/config.py +0 -0
  54. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/__init__.py +0 -0
  55. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/credential_tester.py +0 -0
  56. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/cve_mappings.py +0 -0
  57. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/cve_matcher.py +0 -0
  58. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_auto_mapper.py +0 -0
  59. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_chain_engine.py +0 -0
  60. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_database.py +0 -0
  61. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_integration.py +0 -0
  62. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_rpc_client.py +0 -0
  63. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_rpc_manager.py +0 -0
  64. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/msf_sync_manager.py +0 -0
  65. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/network_utils.py +0 -0
  66. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/parser_handler.py +0 -0
  67. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/pending_chains.py +0 -0
  68. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/templates.py +0 -0
  69. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/tool_chaining.py +0 -0
  70. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/version_utils.py +0 -0
  71. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/vuln_correlation.py +0 -0
  72. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/core/web_utils.py +0 -0
  73. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/README.md +0 -0
  74. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/active_directory.json +0 -0
  75. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/cis_controls_v8.json +0 -0
  76. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/cloud_security.json +0 -0
  77. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/cmmc_2.0.json +0 -0
  78. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/external_network.json +0 -0
  79. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/ffiec_cat.json +0 -0
  80. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/gdpr_article32.json +0 -0
  81. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/glba_safeguards.json +0 -0
  82. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/hipaa_security.json +0 -0
  83. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/hitrust_csf.json +0 -0
  84. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/internal_network.json +0 -0
  85. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/iso27001.json +0 -0
  86. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/nerc_cip.json +0 -0
  87. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/nist_csf.json +0 -0
  88. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/owasp_top10_2021.json +0 -0
  89. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/pci_dss_4.0.json +0 -0
  90. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/ptes_standard.json +0 -0
  91. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/red_team.json +0 -0
  92. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/soc2_type2.json +0 -0
  93. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/templates/webapp_advanced.json +0 -0
  94. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/README.md +0 -0
  95. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/all_users.txt +0 -0
  96. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/api_endpoints.txt +0 -0
  97. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/default_credentials.txt +0 -0
  98. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/macos_users.txt +0 -0
  99. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/router_passwords.txt +0 -0
  100. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/router_users.txt +0 -0
  101. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/soul_pass.txt +0 -0
  102. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/soul_users.txt +0 -0
  103. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/subdomains_common.txt +0 -0
  104. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/top100.txt +0 -0
  105. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/top20_quick.txt +0 -0
  106. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
  107. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
  108. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/web_extensions.txt +0 -0
  109. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/data/wordlists/web_files_common.txt +0 -0
  110. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/detection/__init__.py +0 -0
  111. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/detection/attack_signatures.py +0 -0
  112. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/detection/mitre_mappings.py +0 -0
  113. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/detection/validator.py +0 -0
  114. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/devtools.py +0 -0
  115. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/api-reference/cli-commands.md +0 -0
  116. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/api-reference/engagement-api.md +0 -0
  117. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/api-reference/integration-guide.md +0 -0
  118. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/api-reference/parser-formats.md +0 -0
  119. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/architecture/decisions/000-template.md +0 -0
  120. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
  121. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
  122. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
  123. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/architecture/overview.md +0 -0
  124. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/database/MIGRATIONS.md +0 -0
  125. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/database/SCHEMA.md +0 -0
  126. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
  127. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
  128. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
  129. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/images/README.md +0 -0
  130. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/security/best-practices.md +0 -0
  131. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/security/credential-encryption.md +0 -0
  132. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/security/password-protected-commands.md +0 -0
  133. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/security/secure-defaults.md +0 -0
  134. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/security/threat-model.md +0 -0
  135. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/ai-integration.md +0 -0
  136. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/attack-surface.md +0 -0
  137. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/auto-chaining.md +0 -0
  138. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/configuration.md +0 -0
  139. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
  140. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/dependencies.md +0 -0
  141. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/evidence-vault.md +0 -0
  142. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
  143. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/getting-started.md +0 -0
  144. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/installation.md +0 -0
  145. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
  146. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/rbac.md +0 -0
  147. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/report-generation.md +0 -0
  148. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/scope-management.md +0 -0
  149. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/siem-integration.md +0 -0
  150. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/tools-reference.md +0 -0
  151. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/troubleshooting.md +0 -0
  152. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/uninstall.md +0 -0
  153. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/worker-management.md +0 -0
  154. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/docs/user-guide/workflows.md +0 -0
  155. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/__init__.py +0 -0
  156. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/background.py +0 -0
  157. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/base.py +0 -0
  158. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/job_status.py +0 -0
  159. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/loader.py +0 -0
  160. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/log_sanitizer.py +0 -0
  161. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/manager.py +0 -0
  162. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/result_handler.py +0 -0
  163. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/engine/worker_manager.py +0 -0
  164. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/export/__init__.py +0 -0
  165. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/export/evidence_bundle.py +0 -0
  166. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/feature_flags/__init__.py +0 -0
  167. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/feature_flags/features.py +0 -0
  168. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/feature_flags.py +0 -0
  169. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/history.py +0 -0
  170. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/importers/__init__.py +0 -0
  171. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/importers/msf_importer.py +0 -0
  172. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/importers/smart_importer.py +0 -0
  173. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/__init__.py +0 -0
  174. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/__init__.py +0 -0
  175. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/base.py +0 -0
  176. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/elastic.py +0 -0
  177. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/factory.py +0 -0
  178. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
  179. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
  180. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/sentinel.py +0 -0
  181. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/splunk.py +0 -0
  182. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/siem/wazuh.py +0 -0
  183. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/wazuh/__init__.py +0 -0
  184. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/wazuh/client.py +0 -0
  185. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/wazuh/host_mapper.py +0 -0
  186. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/integrations/wazuh/sync.py +0 -0
  187. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/__init__.py +0 -0
  188. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/correlation_analyzer.py +0 -0
  189. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/exploit_knowledge.py +0 -0
  190. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/exploit_suggestions.py +0 -0
  191. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/gap_analyzer.py +0 -0
  192. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/gap_detector.py +0 -0
  193. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/sensitive_tables.py +0 -0
  194. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/service_parser.py +0 -0
  195. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/surface_analyzer.py +0 -0
  196. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/intelligence/target_parser.py +0 -0
  197. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/licensing/__init__.py +0 -0
  198. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/licensing/validator.py +0 -0
  199. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/log_config.py +0 -0
  200. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/migrations/__init__.py +0 -0
  201. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/migrations/fix_job_counter.py +0 -0
  202. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/__init__.py +0 -0
  203. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/bloodhound_parser.py +0 -0
  204. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/crackmapexec_parser.py +0 -0
  205. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/dalfox_parser.py +0 -0
  206. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/dnsrecon_parser.py +0 -0
  207. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/enum4linux_parser.py +0 -0
  208. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/ffuf_parser.py +0 -0
  209. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/gobuster_parser.py +0 -0
  210. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/hashcat_parser.py +0 -0
  211. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/http_fingerprint_parser.py +0 -0
  212. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/hydra_parser.py +0 -0
  213. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/impacket_parser.py +0 -0
  214. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/john_parser.py +0 -0
  215. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/msf_parser.py +0 -0
  216. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/nikto_parser.py +0 -0
  217. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/nmap_parser.py +0 -0
  218. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/nuclei_parser.py +0 -0
  219. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/responder_parser.py +0 -0
  220. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/searchsploit_parser.py +0 -0
  221. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/smbmap_parser.py +0 -0
  222. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/sqlmap_parser.py +0 -0
  223. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/theharvester_parser.py +0 -0
  224. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/whois_parser.py +0 -0
  225. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/parsers/wpscan_parser.py +0 -0
  226. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/__init__.py +0 -0
  227. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/afp.py +0 -0
  228. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/afp_brute.py +0 -0
  229. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/ard.py +0 -0
  230. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/bloodhound.py +0 -0
  231. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/crackmapexec.py +0 -0
  232. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/dalfox.py +0 -0
  233. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/dns_hijack.py +0 -0
  234. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/dnsrecon.py +0 -0
  235. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/enum4linux.py +0 -0
  236. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/ffuf.py +0 -0
  237. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/firmware_extract.py +0 -0
  238. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/gobuster.py +0 -0
  239. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/hashcat.py +0 -0
  240. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/http_fingerprint.py +0 -0
  241. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/hydra.py +0 -0
  242. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/impacket_getnpusers.py +0 -0
  243. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/impacket_psexec.py +0 -0
  244. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/impacket_secretsdump.py +0 -0
  245. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/impacket_smbclient.py +0 -0
  246. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/john.py +0 -0
  247. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/macos_ssh.py +0 -0
  248. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/mdns.py +0 -0
  249. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/msf_auxiliary.py +0 -0
  250. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/msf_exploit.py +0 -0
  251. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/nikto.py +0 -0
  252. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/nmap.py +0 -0
  253. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/nuclei.py +0 -0
  254. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/plugin_base.py +0 -0
  255. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/plugin_template.py +0 -0
  256. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/responder.py +0 -0
  257. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/router_http_brute.py +0 -0
  258. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/router_ssh_brute.py +0 -0
  259. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/router_telnet_brute.py +0 -0
  260. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/routersploit.py +0 -0
  261. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/routersploit_exploit.py +0 -0
  262. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/searchsploit.py +0 -0
  263. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/smbmap.py +0 -0
  264. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/sqlmap.py +0 -0
  265. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/theharvester.py +0 -0
  266. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/tr069.py +0 -0
  267. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/upnp.py +0 -0
  268. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/upnp_abuse.py +0 -0
  269. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/vnc_access.py +0 -0
  270. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/vnc_brute.py +0 -0
  271. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/whois.py +0 -0
  272. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/plugins/wpscan.py +0 -0
  273. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/__init__.py +0 -0
  274. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/attack_chain.py +0 -0
  275. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/charts.py +0 -0
  276. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/compliance_mappings.py +0 -0
  277. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/detection_report.py +0 -0
  278. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/formatters.py +0 -0
  279. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/generator.py +0 -0
  280. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/reporting/metrics.py +0 -0
  281. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/scanner.py +0 -0
  282. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/security/__init__.py +0 -0
  283. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/security/scope_validator.py +0 -0
  284. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/security/validation.py +0 -0
  285. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/security.py +0 -0
  286. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/__init__.py +0 -0
  287. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/credentials.py +0 -0
  288. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/crypto.py +0 -0
  289. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/database.py +0 -0
  290. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/db.py +0 -0
  291. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/deliverable_evidence.py +0 -0
  292. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/deliverable_exporter.py +0 -0
  293. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/deliverable_templates.py +0 -0
  294. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/deliverables.py +0 -0
  295. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/engagements.py +0 -0
  296. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/evidence.py +0 -0
  297. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/execution_log.py +0 -0
  298. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/exploit_attempts.py +0 -0
  299. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/exploits.py +0 -0
  300. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/findings.py +0 -0
  301. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/hosts.py +0 -0
  302. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrate_to_engagements.py +0 -0
  303. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
  304. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
  305. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
  306. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_005_screenshots.py +0 -0
  307. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_006_deliverables.py +0 -0
  308. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
  309. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
  310. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
  311. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
  312. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
  313. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
  314. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
  315. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
  316. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
  317. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
  318. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
  319. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
  320. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
  321. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
  322. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
  323. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
  324. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
  325. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
  326. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
  327. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
  328. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/migrations/migration_manager.py +0 -0
  329. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/msf_sessions.py +0 -0
  330. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/osint.py +0 -0
  331. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/recommendation_engine.py +0 -0
  332. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/screenshots.py +0 -0
  333. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/smb_shares.py +0 -0
  334. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/sqlmap_data.py +0 -0
  335. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/team_collaboration.py +0 -0
  336. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/timeline_tracker.py +0 -0
  337. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/wazuh_vulns.py +0 -0
  338. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/storage/web_paths.py +0 -0
  339. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/testing/__init__.py +0 -0
  340. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/testing/credential_tester.py +0 -0
  341. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/__init__.py +0 -0
  342. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/ai_quotes.py +0 -0
  343. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/attack_surface.py +0 -0
  344. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/chain_rules_view.py +0 -0
  345. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/correlation_view.py +0 -0
  346. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/dashboard.py +0 -0
  347. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/deliverables_view.py +0 -0
  348. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/design_system.py +0 -0
  349. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/errors.py +0 -0
  350. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/evidence_linking_view.py +0 -0
  351. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/evidence_vault.py +0 -0
  352. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/exploit_suggestions_view.py +0 -0
  353. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/export_view.py +0 -0
  354. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/gap_analysis_view.py +0 -0
  355. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/help_system.py +0 -0
  356. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/intelligence_view.py +0 -0
  357. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/interactive_selector.py +0 -0
  358. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/log_formatter.py +0 -0
  359. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/menu_components.py +0 -0
  360. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/msf_auxiliary_menu.py +0 -0
  361. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/pending_chains_view.py +0 -0
  362. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/progress_indicators.py +0 -0
  363. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/recommendations_view.py +0 -0
  364. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/rule_builder.py +0 -0
  365. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/setup_wizard.py +0 -0
  366. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/shortcuts.py +0 -0
  367. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
  368. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/splunk_vulns_view.py +0 -0
  369. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/team_dashboard.py +0 -0
  370. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/template_selector.py +0 -0
  371. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/terminal.py +0 -0
  372. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/timeline_view.py +0 -0
  373. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/tool_setup.py +0 -0
  374. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/tutorial.py +0 -0
  375. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/tutorial_state.py +0 -0
  376. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui/wazuh_vulns_view.py +0 -0
  377. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/ui.py +0 -0
  378. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/utils/__init__.py +0 -0
  379. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/utils/tool_checker.py +0 -0
  380. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/utils.py +0 -0
  381. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez/wordlists.py +0 -0
  382. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez.egg-info/dependency_links.txt +0 -0
  383. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez.egg-info/entry_points.txt +0 -0
  384. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez.egg-info/requires.txt +0 -0
  385. {souleyez-2.31.0 → souleyez-2.32.0}/souleyez.egg-info/top_level.txt +0 -0
  386. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_config.py +0 -0
  387. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_config_enhanced.py +0 -0
  388. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_crypto.py +0 -0
  389. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_database_100_final.py +0 -0
  390. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_engagements.py +0 -0
  391. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_engagements_simple.py +0 -0
  392. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_job_status_tracking.py +0 -0
  393. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_logging.py +0 -0
  394. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_network_utils.py +0 -0
  395. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_ollama_service.py +0 -0
  396. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_plugin_base.py +0 -0
  397. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_recommender.py +0 -0
  398. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_result_handler_sqlmap.py +0 -0
  399. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_schema.py +0 -0
  400. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_scope_integration.py +0 -0
  401. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_scope_validator.py +0 -0
  402. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_security_hardening.py +0 -0
  403. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_security_validation.py +0 -0
  404. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_sqlmap_parser.py +0 -0
  405. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_storage.py +0 -0
  406. {souleyez-2.31.0 → souleyez-2.32.0}/tests/test_version_utils.py +0 -0
@@ -27,7 +27,7 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
27
27
 
28
28
  > ⚠️ **Important**: Only use SoulEyez on systems you have explicit authorization to test.
29
29
 
30
- ## Version: 2.31.0
30
+ ## Version: 2.32.0
31
31
 
32
32
  ### What's Included
33
33
 
@@ -265,4 +265,4 @@ Happy hacking! 🛡️
265
265
 
266
266
  ---
267
267
 
268
- **Version**: 2.31.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
268
+ **Version**: 2.32.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: souleyez
3
- Version: 2.31.0
3
+ Version: 2.32.0
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>
@@ -78,7 +78,7 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
78
78
 
79
79
  > ⚠️ **Important**: Only use SoulEyez on systems you have explicit authorization to test.
80
80
 
81
- ## Version: 2.31.0
81
+ ## Version: 2.32.0
82
82
 
83
83
  ### What's Included
84
84
 
@@ -316,4 +316,4 @@ Happy hacking! 🛡️
316
316
 
317
317
  ---
318
318
 
319
- **Version**: 2.31.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
319
+ **Version**: 2.32.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "souleyez"
7
- version = "2.31.0"
7
+ version = "2.32.0"
8
8
  description = "AI-Powered Penetration Testing Platform with 40+ integrated tools"
9
9
  readme = "BETA_README.md"
10
10
  license = {text = "MIT"}
@@ -0,0 +1 @@
1
+ __version__ = '2.32.0'
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.31.0
3
+ **Version:** 2.32.0
4
4
  **Last Updated:** January 9, 2026
5
5
  **Organization:** CyberSoul Security
6
6
 
@@ -22,10 +22,14 @@ class WazuhConfig:
22
22
  """
23
23
 
24
24
  @staticmethod
25
- def get_config(engagement_id: int) -> Optional[Dict[str, Any]]:
25
+ def get_config(engagement_id: int, siem_type: str = None) -> Optional[Dict[str, Any]]:
26
26
  """
27
27
  Get SIEM config for an engagement.
28
28
 
29
+ Args:
30
+ engagement_id: Engagement ID
31
+ siem_type: Optional SIEM type to filter by. If None, returns first/active config.
32
+
29
33
  Returns:
30
34
  Config dict or None if not configured
31
35
  """
@@ -33,19 +37,31 @@ class WazuhConfig:
33
37
  conn = db.get_connection()
34
38
  cursor = conn.cursor()
35
39
 
36
- # Check if new columns exist (migration 025)
40
+ # Check if new columns exist (migration 025+)
37
41
  cursor.execute("PRAGMA table_info(wazuh_config)")
38
42
  columns = [col[1] for col in cursor.fetchall()]
39
43
  has_new_columns = 'siem_type' in columns
40
44
 
41
45
  # Query with or without new columns
42
46
  if has_new_columns:
43
- cursor.execute("""
44
- SELECT api_url, api_user, api_password, indexer_url, indexer_user,
45
- indexer_password, verify_ssl, enabled, siem_type, config_json
46
- FROM wazuh_config
47
- WHERE engagement_id = ?
48
- """, (engagement_id,))
47
+ if siem_type:
48
+ cursor.execute("""
49
+ SELECT api_url, api_user, api_password, indexer_url, indexer_user,
50
+ indexer_password, verify_ssl, enabled, siem_type, config_json
51
+ FROM wazuh_config
52
+ WHERE engagement_id = ? AND siem_type = ?
53
+ """, (engagement_id, siem_type))
54
+ else:
55
+ # Get most recently updated config (the "current" selected SIEM)
56
+ # Not filtering by enabled - user may have selected but not configured yet
57
+ cursor.execute("""
58
+ SELECT api_url, api_user, api_password, indexer_url, indexer_user,
59
+ indexer_password, verify_ssl, enabled, siem_type, config_json
60
+ FROM wazuh_config
61
+ WHERE engagement_id = ?
62
+ ORDER BY updated_at DESC
63
+ LIMIT 1
64
+ """, (engagement_id,))
49
65
  else:
50
66
  cursor.execute("""
51
67
  SELECT api_url, api_user, api_password, indexer_url, indexer_user,
@@ -190,7 +206,7 @@ class WazuhConfig:
190
206
  pass
191
207
  config_json_str = json.dumps(encrypted_config)
192
208
 
193
- # Upsert config
209
+ # Upsert config - keyed by (engagement_id, siem_type) for multi-SIEM support
194
210
  cursor.execute("""
195
211
  INSERT INTO wazuh_config (
196
212
  engagement_id, api_url, api_user, api_password, indexer_url,
@@ -198,7 +214,7 @@ class WazuhConfig:
198
214
  siem_type, config_json
199
215
  )
200
216
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
201
- ON CONFLICT(engagement_id) DO UPDATE SET
217
+ ON CONFLICT(engagement_id, siem_type) DO UPDATE SET
202
218
  api_url = excluded.api_url,
203
219
  api_user = excluded.api_user,
204
220
  api_password = excluded.api_password,
@@ -207,8 +223,8 @@ class WazuhConfig:
207
223
  indexer_password = excluded.indexer_password,
208
224
  verify_ssl = excluded.verify_ssl,
209
225
  enabled = excluded.enabled,
210
- siem_type = excluded.siem_type,
211
- config_json = excluded.config_json
226
+ config_json = excluded.config_json,
227
+ updated_at = CURRENT_TIMESTAMP
212
228
  """, (
213
229
  engagement_id, api_url, api_user, encrypted_api_password,
214
230
  indexer_url, indexer_user or 'admin', encrypted_indexer_password,
@@ -262,17 +278,124 @@ class WazuhConfig:
262
278
  )
263
279
 
264
280
  @staticmethod
265
- def delete_config(engagement_id: int) -> bool:
266
- """Delete Wazuh config for an engagement."""
281
+ def delete_config(engagement_id: int, siem_type: str = None) -> bool:
282
+ """
283
+ Delete SIEM config for an engagement.
284
+
285
+ Args:
286
+ engagement_id: Engagement ID
287
+ siem_type: Optional SIEM type. If None, deletes ALL SIEM configs for engagement.
288
+ """
267
289
  db = get_db()
268
290
  conn = db.get_connection()
269
291
  cursor = conn.cursor()
270
- cursor.execute("DELETE FROM wazuh_config WHERE engagement_id = ?", (engagement_id,))
292
+ if siem_type:
293
+ cursor.execute(
294
+ "DELETE FROM wazuh_config WHERE engagement_id = ? AND siem_type = ?",
295
+ (engagement_id, siem_type)
296
+ )
297
+ else:
298
+ cursor.execute("DELETE FROM wazuh_config WHERE engagement_id = ?", (engagement_id,))
271
299
  conn.commit()
272
300
  return cursor.rowcount > 0
273
301
 
274
302
  @staticmethod
275
- def is_configured(engagement_id: int) -> bool:
276
- """Check if Wazuh is configured for an engagement."""
277
- config = WazuhConfig.get_config(engagement_id)
303
+ def is_configured(engagement_id: int, siem_type: str = None) -> bool:
304
+ """Check if SIEM is configured for an engagement."""
305
+ config = WazuhConfig.get_config(engagement_id, siem_type)
278
306
  return config is not None and config.get("enabled", False)
307
+
308
+ @staticmethod
309
+ def list_configured_siems(engagement_id: int) -> List[Dict[str, Any]]:
310
+ """
311
+ List all configured SIEMs for an engagement.
312
+
313
+ Returns:
314
+ List of dicts with siem_type, enabled, and api_url for each configured SIEM
315
+ """
316
+ db = get_db()
317
+ conn = db.get_connection()
318
+ cursor = conn.cursor()
319
+
320
+ cursor.execute("PRAGMA table_info(wazuh_config)")
321
+ columns = [col[1] for col in cursor.fetchall()]
322
+
323
+ if 'siem_type' not in columns:
324
+ # Old schema - only one config possible
325
+ cursor.execute("""
326
+ SELECT 'wazuh' as siem_type, enabled, api_url
327
+ FROM wazuh_config
328
+ WHERE engagement_id = ?
329
+ """, (engagement_id,))
330
+ else:
331
+ cursor.execute("""
332
+ SELECT siem_type, enabled, api_url, updated_at
333
+ FROM wazuh_config
334
+ WHERE engagement_id = ?
335
+ ORDER BY siem_type
336
+ """, (engagement_id,))
337
+
338
+ rows = cursor.fetchall()
339
+ return [
340
+ {
341
+ 'siem_type': row[0],
342
+ 'enabled': bool(row[1]),
343
+ 'api_url': row[2],
344
+ 'updated_at': row[3] if len(row) > 3 else None
345
+ }
346
+ for row in rows
347
+ ]
348
+
349
+ @staticmethod
350
+ def get_all_configs(engagement_id: int) -> Dict[str, Dict[str, Any]]:
351
+ """
352
+ Get all SIEM configs for an engagement, keyed by siem_type.
353
+
354
+ Returns:
355
+ Dict mapping siem_type to config dict
356
+ """
357
+ configs = {}
358
+ for siem in SIEM_TYPES:
359
+ config = WazuhConfig.get_config(engagement_id, siem)
360
+ if config:
361
+ configs[siem] = config
362
+ return configs
363
+
364
+ @staticmethod
365
+ def get_current_siem_type(engagement_id: int) -> str:
366
+ """
367
+ Get the currently selected SIEM type for an engagement.
368
+
369
+ Returns the most recently selected SIEM type, even if not fully configured.
370
+
371
+ Returns:
372
+ SIEM type string ('wazuh', 'splunk', etc.) or 'wazuh' as default
373
+ """
374
+ config = WazuhConfig.get_config(engagement_id)
375
+ if config:
376
+ return config.get('siem_type', 'wazuh')
377
+ return 'wazuh'
378
+
379
+ @staticmethod
380
+ def set_current_siem(engagement_id: int, siem_type: str) -> bool:
381
+ """
382
+ Set a SIEM type as current by updating its timestamp.
383
+
384
+ This makes the specified SIEM the "active" one without changing its config.
385
+
386
+ Args:
387
+ engagement_id: Engagement ID
388
+ siem_type: SIEM type to make current
389
+
390
+ Returns:
391
+ True if successful
392
+ """
393
+ db = get_db()
394
+ conn = db.get_connection()
395
+ cursor = conn.cursor()
396
+ cursor.execute(
397
+ "UPDATE wazuh_config SET updated_at = CURRENT_TIMESTAMP WHERE engagement_id = ? AND siem_type = ?",
398
+ (engagement_id, siem_type)
399
+ )
400
+ conn.commit()
401
+ return cursor.rowcount > 0
@@ -173,7 +173,7 @@ def _check_privileged_tools():
173
173
 
174
174
 
175
175
  @click.group()
176
- @click.version_option(version='2.31.0')
176
+ @click.version_option(version='2.32.0')
177
177
  def cli():
178
178
  """SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
179
179
  from souleyez.log_config import init_logging
@@ -0,0 +1,119 @@
1
+ """
2
+ Migration 027: Multi-SIEM Persistence
3
+
4
+ Changes wazuh_config table to support multiple SIEM configs per engagement.
5
+ - Removes UNIQUE constraint on engagement_id
6
+ - Adds UNIQUE constraint on (engagement_id, siem_type)
7
+ - Allows each engagement to have separate configs for Wazuh, Splunk, etc.
8
+ """
9
+ import os
10
+
11
+
12
+ def upgrade(conn):
13
+ """Migrate to multi-SIEM persistence."""
14
+ cursor = conn.cursor()
15
+
16
+ # Check if siem_type column exists (from migration 025)
17
+ cursor.execute("PRAGMA table_info(wazuh_config)")
18
+ columns = [col[1] for col in cursor.fetchall()]
19
+
20
+ if 'siem_type' not in columns:
21
+ cursor.execute("ALTER TABLE wazuh_config ADD COLUMN siem_type TEXT DEFAULT 'wazuh'")
22
+ if 'config_json' not in columns:
23
+ cursor.execute("ALTER TABLE wazuh_config ADD COLUMN config_json TEXT")
24
+
25
+ # Create new table with correct constraint
26
+ cursor.execute("""
27
+ CREATE TABLE IF NOT EXISTS siem_config_new (
28
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
29
+ engagement_id INTEGER NOT NULL,
30
+ siem_type TEXT NOT NULL DEFAULT 'wazuh',
31
+ api_url TEXT,
32
+ api_user TEXT,
33
+ api_password TEXT,
34
+ indexer_url TEXT,
35
+ indexer_user TEXT DEFAULT 'admin',
36
+ indexer_password TEXT,
37
+ verify_ssl BOOLEAN DEFAULT 0,
38
+ enabled BOOLEAN DEFAULT 1,
39
+ config_json TEXT,
40
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
41
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
42
+ FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE,
43
+ UNIQUE(engagement_id, siem_type)
44
+ )
45
+ """)
46
+
47
+ # Copy existing data
48
+ cursor.execute("""
49
+ INSERT OR IGNORE INTO siem_config_new (
50
+ id, engagement_id, siem_type, api_url, api_user, api_password,
51
+ indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
52
+ config_json, created_at, updated_at
53
+ )
54
+ SELECT
55
+ id, engagement_id, COALESCE(siem_type, 'wazuh'), api_url, api_user, api_password,
56
+ indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
57
+ config_json, created_at, updated_at
58
+ FROM wazuh_config
59
+ """)
60
+
61
+ # Drop old table and rename new one
62
+ cursor.execute("DROP TABLE wazuh_config")
63
+ cursor.execute("ALTER TABLE siem_config_new RENAME TO wazuh_config")
64
+
65
+ # Recreate index
66
+ cursor.execute("CREATE INDEX IF NOT EXISTS idx_wazuh_config_engagement ON wazuh_config(engagement_id)")
67
+ cursor.execute("CREATE INDEX IF NOT EXISTS idx_wazuh_config_siem_type ON wazuh_config(siem_type)")
68
+
69
+ conn.commit()
70
+
71
+ if not os.environ.get('SOULEYEZ_MIGRATION_SILENT'):
72
+ print("Migration 027: Multi-SIEM persistence enabled")
73
+
74
+
75
+ def downgrade(conn):
76
+ """Revert to single SIEM per engagement (lossy - keeps only first config per engagement)."""
77
+ cursor = conn.cursor()
78
+
79
+ cursor.execute("""
80
+ CREATE TABLE IF NOT EXISTS wazuh_config_old (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ engagement_id INTEGER NOT NULL UNIQUE,
83
+ api_url TEXT NOT NULL,
84
+ api_user TEXT NOT NULL,
85
+ api_password TEXT,
86
+ indexer_url TEXT,
87
+ indexer_user TEXT DEFAULT 'admin',
88
+ indexer_password TEXT,
89
+ verify_ssl BOOLEAN DEFAULT 0,
90
+ enabled BOOLEAN DEFAULT 1,
91
+ siem_type TEXT DEFAULT 'wazuh',
92
+ config_json TEXT,
93
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
94
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
95
+ FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
96
+ )
97
+ """)
98
+
99
+ # Copy only first config per engagement
100
+ cursor.execute("""
101
+ INSERT OR IGNORE INTO wazuh_config_old (
102
+ engagement_id, api_url, api_user, api_password,
103
+ indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
104
+ siem_type, config_json, created_at, updated_at
105
+ )
106
+ SELECT
107
+ engagement_id, api_url, api_user, api_password,
108
+ indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
109
+ siem_type, config_json, created_at, updated_at
110
+ FROM wazuh_config
111
+ GROUP BY engagement_id
112
+ """)
113
+
114
+ cursor.execute("DROP TABLE wazuh_config")
115
+ cursor.execute("ALTER TABLE wazuh_config_old RENAME TO wazuh_config")
116
+ cursor.execute("CREATE INDEX IF NOT EXISTS idx_wazuh_config_engagement ON wazuh_config(engagement_id)")
117
+
118
+ conn.commit()
119
+ print("Migration 027: Reverted to single SIEM per engagement")
@@ -31,6 +31,7 @@ from . import (
31
31
  _024_wazuh_vulnerabilities,
32
32
  _025_multi_siem_support,
33
33
  _026_add_engagement_scope,
34
+ _027_multi_siem_persistence,
34
35
  )
35
36
 
36
37
  # Migration registry - maps version to module
@@ -60,6 +61,7 @@ MIGRATIONS_REGISTRY = {
60
61
  '024': _024_wazuh_vulnerabilities,
61
62
  '025': _025_multi_siem_support,
62
63
  '026': _026_add_engagement_scope,
64
+ '027': _027_multi_siem_persistence,
63
65
  }
64
66
 
65
67
 
@@ -504,18 +504,21 @@ CREATE INDEX IF NOT EXISTS idx_msf_sessions_active ON msf_sessions(is_active);
504
504
  -- Wazuh SIEM Integration (Detection Validation)
505
505
  CREATE TABLE IF NOT EXISTS wazuh_config (
506
506
  id INTEGER PRIMARY KEY AUTOINCREMENT,
507
- engagement_id INTEGER NOT NULL UNIQUE,
508
- api_url TEXT NOT NULL,
509
- api_user TEXT NOT NULL,
507
+ engagement_id INTEGER NOT NULL,
508
+ siem_type TEXT NOT NULL DEFAULT 'wazuh',
509
+ api_url TEXT,
510
+ api_user TEXT,
510
511
  api_password TEXT,
511
512
  indexer_url TEXT,
512
513
  indexer_user TEXT DEFAULT 'admin',
513
514
  indexer_password TEXT,
514
515
  verify_ssl BOOLEAN DEFAULT 0,
515
516
  enabled BOOLEAN DEFAULT 1,
517
+ config_json TEXT,
516
518
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
517
519
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
518
- FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
520
+ FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE,
521
+ UNIQUE(engagement_id, siem_type)
519
522
  );
520
523
 
521
524
  -- Detection validation results per job
@@ -539,6 +542,7 @@ CREATE TABLE IF NOT EXISTS detection_results (
539
542
  );
540
543
 
541
544
  CREATE INDEX IF NOT EXISTS idx_wazuh_config_engagement ON wazuh_config(engagement_id);
545
+ CREATE INDEX IF NOT EXISTS idx_wazuh_config_siem_type ON wazuh_config(siem_type);
542
546
  CREATE INDEX IF NOT EXISTS idx_detection_results_job ON detection_results(job_id);
543
547
  CREATE INDEX IF NOT EXISTS idx_detection_results_engagement ON detection_results(engagement_id);
544
548
  CREATE INDEX IF NOT EXISTS idx_detection_results_status ON detection_results(detection_status);
@@ -8152,6 +8152,40 @@ def manage_engagements_menu():
8152
8152
  click.echo(click.style(f" ✓ Created engagement '{ws_name}' (ID: {ws_id})", fg='green'))
8153
8153
  if selected_template:
8154
8154
  click.echo(click.style(f" ✓ Applied preset: {selected_template.name}", fg='green'))
8155
+
8156
+ # Save scope to engagement_scope table if provided
8157
+ if ws_scope.strip():
8158
+ from souleyez.security.scope_validator import ScopeManager
8159
+ import ipaddress
8160
+ scope_mgr = ScopeManager()
8161
+ scope_value = ws_scope.strip()
8162
+
8163
+ # Determine scope type
8164
+ scope_type = None
8165
+ try:
8166
+ # Check if CIDR
8167
+ ipaddress.ip_network(scope_value, strict=False)
8168
+ scope_type = 'cidr'
8169
+ except ValueError:
8170
+ try:
8171
+ # Check if single IP
8172
+ ipaddress.ip_address(scope_value)
8173
+ scope_type = 'cidr'
8174
+ scope_value = f"{scope_value}/32" # Convert single IP to CIDR
8175
+ except ValueError:
8176
+ # Check if URL
8177
+ if scope_value.startswith(('http://', 'https://')):
8178
+ scope_type = 'url'
8179
+ else:
8180
+ # Assume domain
8181
+ scope_type = 'domain'
8182
+
8183
+ try:
8184
+ scope_mgr.add_scope(ws_id, scope_type, scope_value, description="Added during engagement creation")
8185
+ click.echo(click.style(f" ✓ Added scope: {scope_type}={scope_value}", fg='green'))
8186
+ except Exception as scope_err:
8187
+ click.echo(click.style(f" ⚠ Could not save scope: {scope_err}", fg='yellow'))
8188
+
8155
8189
  click.echo()
8156
8190
 
8157
8191
  # Show next steps based on preset
@@ -8929,19 +8963,28 @@ def _select_siem_type(engagement_id: int):
8929
8963
  if new_type == current_type:
8930
8964
  click.echo(f"\n {info['name']} is already selected.")
8931
8965
  else:
8932
- # If switching SIEM types, we need to reconfigure
8933
- click.echo(f"\n Switching to {click.style(info['name'], bold=True)}...")
8934
- click.echo(" You'll need to configure the connection settings.")
8935
-
8936
- # Save minimal config to set the SIEM type
8937
- WazuhConfig.save_siem_config(
8938
- engagement_id=engagement_id,
8939
- siem_type=new_type,
8940
- config={'siem_type': new_type},
8941
- enabled=False # Not enabled until configured
8942
- )
8943
- click.echo(click.style(f"\n SIEM type set to {info['name']}", fg='green'))
8944
- click.echo(" Use 'Configure Connection' to set up credentials.")
8966
+ # Check if this SIEM type already has a config
8967
+ existing_config = WazuhConfig.get_config(engagement_id, new_type)
8968
+
8969
+ if existing_config and existing_config.get('enabled'):
8970
+ # Already configured - just make it current by updating timestamp
8971
+ click.echo(f"\n Switching to {click.style(info['name'], bold=True)}...")
8972
+ WazuhConfig.set_current_siem(engagement_id, new_type)
8973
+ click.echo(click.style(f"\n ✓ Switched to {info['name']} (existing config restored)", fg='green'))
8974
+ else:
8975
+ # Not configured - create placeholder
8976
+ click.echo(f"\n Switching to {click.style(info['name'], bold=True)}...")
8977
+ click.echo(" You'll need to configure the connection settings.")
8978
+
8979
+ # Save minimal config to set the SIEM type
8980
+ WazuhConfig.save_siem_config(
8981
+ engagement_id=engagement_id,
8982
+ siem_type=new_type,
8983
+ config={'siem_type': new_type},
8984
+ enabled=False # Not enabled until configured
8985
+ )
8986
+ click.echo(click.style(f"\n ✓ SIEM type set to {info['name']}", fg='green'))
8987
+ click.echo(" Use 'Configure Connection' to set up credentials.")
8945
8988
  else:
8946
8989
  click.echo(click.style("\n ✗ Invalid choice", fg='red'))
8947
8990
  except ValueError:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: souleyez
3
- Version: 2.31.0
3
+ Version: 2.32.0
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>
@@ -78,7 +78,7 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
78
78
 
79
79
  > ⚠️ **Important**: Only use SoulEyez on systems you have explicit authorization to test.
80
80
 
81
- ## Version: 2.31.0
81
+ ## Version: 2.32.0
82
82
 
83
83
  ### What's Included
84
84
 
@@ -316,4 +316,4 @@ Happy hacking! 🛡️
316
316
 
317
317
  ---
318
318
 
319
- **Version**: 2.31.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
319
+ **Version**: 2.32.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
@@ -336,6 +336,7 @@ souleyez/storage/migrations/_023_fix_detection_results_fk.py
336
336
  souleyez/storage/migrations/_024_wazuh_vulnerabilities.py
337
337
  souleyez/storage/migrations/_025_multi_siem_support.py
338
338
  souleyez/storage/migrations/_026_add_engagement_scope.py
339
+ souleyez/storage/migrations/_027_multi_siem_persistence.py
339
340
  souleyez/storage/migrations/__init__.py
340
341
  souleyez/storage/migrations/migration_manager.py
341
342
  souleyez/testing/__init__.py
@@ -1 +0,0 @@
1
- __version__ = '2.31.0'
File without changes
File without changes
File without changes
File without changes