souleyez 2.28.0__tar.gz → 2.40.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 (409) hide show
  1. souleyez-2.40.0/PKG-INFO +265 -0
  2. {souleyez-2.28.0 → souleyez-2.40.0}/pyproject.toml +2 -2
  3. souleyez-2.40.0/souleyez/__init__.py +2 -0
  4. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_auto_mapper.py +3 -2
  5. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/tool_chaining.py +77 -11
  6. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/README.md +1 -1
  7. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/__init__.py +2 -0
  8. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/factory.py +26 -5
  9. souleyez-2.40.0/souleyez/integrations/siem/googlesecops.py +614 -0
  10. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/wazuh/config.py +143 -20
  11. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/main.py +7 -40
  12. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/database.py +59 -20
  13. souleyez-2.40.0/souleyez/storage/migrations/_027_multi_siem_persistence.py +119 -0
  14. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/__init__.py +6 -0
  15. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/schema.sql +44 -4
  16. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/interactive.py +575 -237
  17. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/tool_setup.py +6 -0
  18. souleyez-2.40.0/souleyez.egg-info/PKG-INFO +265 -0
  19. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez.egg-info/SOURCES.txt +2 -1
  20. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_config.py +10 -1
  21. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_result_handler_sqlmap.py +11 -4
  22. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_storage.py +5 -4
  23. souleyez-2.28.0/BETA_README.md +0 -268
  24. souleyez-2.28.0/PKG-INFO +0 -319
  25. souleyez-2.28.0/souleyez/__init__.py +0 -1
  26. souleyez-2.28.0/souleyez.egg-info/PKG-INFO +0 -319
  27. {souleyez-2.28.0 → souleyez-2.40.0}/LICENSE +0 -0
  28. {souleyez-2.28.0 → souleyez-2.40.0}/MANIFEST.in +0 -0
  29. {souleyez-2.28.0 → souleyez-2.40.0}/README.md +0 -0
  30. {souleyez-2.28.0 → souleyez-2.40.0}/setup.cfg +0 -0
  31. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/__init__.py +0 -0
  32. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/action_mapper.py +0 -0
  33. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/chain_advisor.py +0 -0
  34. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/claude_provider.py +0 -0
  35. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/context_builder.py +0 -0
  36. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/executor.py +0 -0
  37. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/feedback_handler.py +0 -0
  38. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/llm_factory.py +0 -0
  39. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/llm_provider.py +0 -0
  40. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/ollama_provider.py +0 -0
  41. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/ollama_service.py +0 -0
  42. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/path_scorer.py +0 -0
  43. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/recommender.py +0 -0
  44. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/report_context.py +0 -0
  45. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/report_prompts.py +0 -0
  46. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/report_service.py +0 -0
  47. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/result_parser.py +0 -0
  48. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ai/safety.py +0 -0
  49. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/assets/__init__.py +0 -0
  50. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/assets/souleyez-icon.png +0 -0
  51. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/auth/__init__.py +0 -0
  52. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/auth/audit.py +0 -0
  53. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/auth/engagement_access.py +0 -0
  54. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/auth/permissions.py +0 -0
  55. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/auth/session_manager.py +0 -0
  56. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/auth/user_manager.py +0 -0
  57. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/__init__.py +0 -0
  58. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/audit.py +0 -0
  59. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/auth.py +0 -0
  60. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/deliverables.py +0 -0
  61. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/engagement.py +0 -0
  62. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/license.py +0 -0
  63. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/screenshots.py +0 -0
  64. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/commands/user.py +0 -0
  65. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/config.py +0 -0
  66. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/__init__.py +0 -0
  67. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/credential_tester.py +0 -0
  68. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/cve_mappings.py +0 -0
  69. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/cve_matcher.py +0 -0
  70. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_chain_engine.py +0 -0
  71. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_database.py +0 -0
  72. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_integration.py +0 -0
  73. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_rpc_client.py +0 -0
  74. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_rpc_manager.py +0 -0
  75. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/msf_sync_manager.py +0 -0
  76. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/network_utils.py +0 -0
  77. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/parser_handler.py +0 -0
  78. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/pending_chains.py +0 -0
  79. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/templates.py +0 -0
  80. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/version_utils.py +0 -0
  81. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/vuln_correlation.py +0 -0
  82. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/core/web_utils.py +0 -0
  83. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/README.md +0 -0
  84. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/active_directory.json +0 -0
  85. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/cis_controls_v8.json +0 -0
  86. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/cloud_security.json +0 -0
  87. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/cmmc_2.0.json +0 -0
  88. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/external_network.json +0 -0
  89. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/ffiec_cat.json +0 -0
  90. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/gdpr_article32.json +0 -0
  91. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/glba_safeguards.json +0 -0
  92. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/hipaa_security.json +0 -0
  93. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/hitrust_csf.json +0 -0
  94. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/internal_network.json +0 -0
  95. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/iso27001.json +0 -0
  96. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/nerc_cip.json +0 -0
  97. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/nist_csf.json +0 -0
  98. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/owasp_top10_2021.json +0 -0
  99. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/pci_dss_4.0.json +0 -0
  100. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/ptes_standard.json +0 -0
  101. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/red_team.json +0 -0
  102. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/soc2_type2.json +0 -0
  103. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/templates/webapp_advanced.json +0 -0
  104. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/README.md +0 -0
  105. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/all_users.txt +0 -0
  106. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/api_endpoints.txt +0 -0
  107. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/default_credentials.txt +0 -0
  108. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/macos_users.txt +0 -0
  109. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/router_passwords.txt +0 -0
  110. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/router_users.txt +0 -0
  111. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/soul_pass.txt +0 -0
  112. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/soul_users.txt +0 -0
  113. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/subdomains_common.txt +0 -0
  114. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/top100.txt +0 -0
  115. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/top20_quick.txt +0 -0
  116. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
  117. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
  118. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/web_extensions.txt +0 -0
  119. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/data/wordlists/web_files_common.txt +0 -0
  120. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/detection/__init__.py +0 -0
  121. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/detection/attack_signatures.py +0 -0
  122. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/detection/mitre_mappings.py +0 -0
  123. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/detection/validator.py +0 -0
  124. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/devtools.py +0 -0
  125. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/api-reference/cli-commands.md +0 -0
  126. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/api-reference/engagement-api.md +0 -0
  127. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/api-reference/integration-guide.md +0 -0
  128. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/api-reference/parser-formats.md +0 -0
  129. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/architecture/decisions/000-template.md +0 -0
  130. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
  131. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
  132. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
  133. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/architecture/overview.md +0 -0
  134. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/database/MIGRATIONS.md +0 -0
  135. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/database/SCHEMA.md +0 -0
  136. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
  137. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
  138. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
  139. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/images/README.md +0 -0
  140. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/security/best-practices.md +0 -0
  141. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/security/credential-encryption.md +0 -0
  142. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/security/password-protected-commands.md +0 -0
  143. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/security/secure-defaults.md +0 -0
  144. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/security/threat-model.md +0 -0
  145. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/ai-integration.md +0 -0
  146. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/attack-surface.md +0 -0
  147. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/auto-chaining.md +0 -0
  148. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/configuration.md +0 -0
  149. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
  150. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/dependencies.md +0 -0
  151. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/evidence-vault.md +0 -0
  152. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
  153. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/getting-started.md +0 -0
  154. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/installation.md +0 -0
  155. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
  156. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/rbac.md +0 -0
  157. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/report-generation.md +0 -0
  158. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/scope-management.md +0 -0
  159. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/siem-integration.md +0 -0
  160. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/tools-reference.md +0 -0
  161. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/troubleshooting.md +0 -0
  162. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/uninstall.md +0 -0
  163. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/worker-management.md +0 -0
  164. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/docs/user-guide/workflows.md +0 -0
  165. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/__init__.py +0 -0
  166. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/background.py +0 -0
  167. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/base.py +0 -0
  168. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/job_status.py +0 -0
  169. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/loader.py +0 -0
  170. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/log_sanitizer.py +0 -0
  171. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/manager.py +0 -0
  172. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/result_handler.py +0 -0
  173. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/engine/worker_manager.py +0 -0
  174. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/export/__init__.py +0 -0
  175. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/export/evidence_bundle.py +0 -0
  176. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/feature_flags/__init__.py +0 -0
  177. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/feature_flags/features.py +0 -0
  178. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/feature_flags.py +0 -0
  179. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/history.py +0 -0
  180. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/importers/__init__.py +0 -0
  181. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/importers/msf_importer.py +0 -0
  182. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/importers/smart_importer.py +0 -0
  183. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/__init__.py +0 -0
  184. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/base.py +0 -0
  185. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/elastic.py +0 -0
  186. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
  187. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
  188. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/sentinel.py +0 -0
  189. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/splunk.py +0 -0
  190. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/siem/wazuh.py +0 -0
  191. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/wazuh/__init__.py +0 -0
  192. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/wazuh/client.py +0 -0
  193. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/wazuh/host_mapper.py +0 -0
  194. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/integrations/wazuh/sync.py +0 -0
  195. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/__init__.py +0 -0
  196. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/correlation_analyzer.py +0 -0
  197. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/exploit_knowledge.py +0 -0
  198. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/exploit_suggestions.py +0 -0
  199. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/gap_analyzer.py +0 -0
  200. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/gap_detector.py +0 -0
  201. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/sensitive_tables.py +0 -0
  202. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/service_parser.py +0 -0
  203. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/surface_analyzer.py +0 -0
  204. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/intelligence/target_parser.py +0 -0
  205. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/licensing/__init__.py +0 -0
  206. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/licensing/validator.py +0 -0
  207. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/log_config.py +0 -0
  208. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/migrations/__init__.py +0 -0
  209. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/migrations/fix_job_counter.py +0 -0
  210. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/__init__.py +0 -0
  211. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/bloodhound_parser.py +0 -0
  212. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/crackmapexec_parser.py +0 -0
  213. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/dalfox_parser.py +0 -0
  214. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/dnsrecon_parser.py +0 -0
  215. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/enum4linux_parser.py +0 -0
  216. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/ffuf_parser.py +0 -0
  217. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/gobuster_parser.py +0 -0
  218. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/hashcat_parser.py +0 -0
  219. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/http_fingerprint_parser.py +0 -0
  220. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/hydra_parser.py +0 -0
  221. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/impacket_parser.py +0 -0
  222. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/john_parser.py +0 -0
  223. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/msf_parser.py +0 -0
  224. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/nikto_parser.py +0 -0
  225. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/nmap_parser.py +0 -0
  226. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/nuclei_parser.py +0 -0
  227. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/responder_parser.py +0 -0
  228. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/searchsploit_parser.py +0 -0
  229. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/smbmap_parser.py +0 -0
  230. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/sqlmap_parser.py +0 -0
  231. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/theharvester_parser.py +0 -0
  232. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/whois_parser.py +0 -0
  233. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/parsers/wpscan_parser.py +0 -0
  234. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/__init__.py +0 -0
  235. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/afp.py +0 -0
  236. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/afp_brute.py +0 -0
  237. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/ard.py +0 -0
  238. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/bloodhound.py +0 -0
  239. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/crackmapexec.py +0 -0
  240. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/dalfox.py +0 -0
  241. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/dns_hijack.py +0 -0
  242. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/dnsrecon.py +0 -0
  243. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/enum4linux.py +0 -0
  244. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/ffuf.py +0 -0
  245. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/firmware_extract.py +0 -0
  246. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/gobuster.py +0 -0
  247. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/hashcat.py +0 -0
  248. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/http_fingerprint.py +0 -0
  249. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/hydra.py +0 -0
  250. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/impacket_getnpusers.py +0 -0
  251. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/impacket_psexec.py +0 -0
  252. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/impacket_secretsdump.py +0 -0
  253. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/impacket_smbclient.py +0 -0
  254. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/john.py +0 -0
  255. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/macos_ssh.py +0 -0
  256. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/mdns.py +0 -0
  257. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/msf_auxiliary.py +0 -0
  258. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/msf_exploit.py +0 -0
  259. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/nikto.py +0 -0
  260. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/nmap.py +0 -0
  261. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/nuclei.py +0 -0
  262. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/plugin_base.py +0 -0
  263. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/plugin_template.py +0 -0
  264. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/responder.py +0 -0
  265. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/router_http_brute.py +0 -0
  266. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/router_ssh_brute.py +0 -0
  267. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/router_telnet_brute.py +0 -0
  268. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/routersploit.py +0 -0
  269. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/routersploit_exploit.py +0 -0
  270. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/searchsploit.py +0 -0
  271. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/smbmap.py +0 -0
  272. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/sqlmap.py +0 -0
  273. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/theharvester.py +0 -0
  274. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/tr069.py +0 -0
  275. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/upnp.py +0 -0
  276. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/upnp_abuse.py +0 -0
  277. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/vnc_access.py +0 -0
  278. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/vnc_brute.py +0 -0
  279. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/whois.py +0 -0
  280. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/plugins/wpscan.py +0 -0
  281. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/__init__.py +0 -0
  282. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/attack_chain.py +0 -0
  283. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/charts.py +0 -0
  284. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/compliance_mappings.py +0 -0
  285. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/detection_report.py +0 -0
  286. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/formatters.py +0 -0
  287. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/generator.py +0 -0
  288. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/reporting/metrics.py +0 -0
  289. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/scanner.py +0 -0
  290. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/security/__init__.py +0 -0
  291. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/security/scope_validator.py +0 -0
  292. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/security/validation.py +0 -0
  293. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/security.py +0 -0
  294. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/__init__.py +0 -0
  295. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/credentials.py +0 -0
  296. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/crypto.py +0 -0
  297. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/db.py +0 -0
  298. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/deliverable_evidence.py +0 -0
  299. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/deliverable_exporter.py +0 -0
  300. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/deliverable_templates.py +0 -0
  301. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/deliverables.py +0 -0
  302. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/engagements.py +0 -0
  303. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/evidence.py +0 -0
  304. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/execution_log.py +0 -0
  305. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/exploit_attempts.py +0 -0
  306. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/exploits.py +0 -0
  307. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/findings.py +0 -0
  308. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/hosts.py +0 -0
  309. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrate_to_engagements.py +0 -0
  310. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
  311. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
  312. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
  313. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_005_screenshots.py +0 -0
  314. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_006_deliverables.py +0 -0
  315. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
  316. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
  317. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
  318. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
  319. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
  320. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
  321. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
  322. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
  323. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
  324. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
  325. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
  326. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
  327. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
  328. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
  329. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
  330. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
  331. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
  332. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
  333. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
  334. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
  335. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/migrations/migration_manager.py +0 -0
  336. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/msf_sessions.py +0 -0
  337. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/osint.py +0 -0
  338. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/recommendation_engine.py +0 -0
  339. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/screenshots.py +0 -0
  340. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/smb_shares.py +0 -0
  341. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/sqlmap_data.py +0 -0
  342. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/team_collaboration.py +0 -0
  343. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/timeline_tracker.py +0 -0
  344. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/wazuh_vulns.py +0 -0
  345. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/storage/web_paths.py +0 -0
  346. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/testing/__init__.py +0 -0
  347. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/testing/credential_tester.py +0 -0
  348. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/__init__.py +0 -0
  349. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/ai_quotes.py +0 -0
  350. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/attack_surface.py +0 -0
  351. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/chain_rules_view.py +0 -0
  352. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/correlation_view.py +0 -0
  353. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/dashboard.py +0 -0
  354. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/deliverables_view.py +0 -0
  355. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/design_system.py +0 -0
  356. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/errors.py +0 -0
  357. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/evidence_linking_view.py +0 -0
  358. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/evidence_vault.py +0 -0
  359. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/exploit_suggestions_view.py +0 -0
  360. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/export_view.py +0 -0
  361. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/gap_analysis_view.py +0 -0
  362. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/help_system.py +0 -0
  363. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/intelligence_view.py +0 -0
  364. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/interactive_selector.py +0 -0
  365. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/log_formatter.py +0 -0
  366. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/menu_components.py +0 -0
  367. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/msf_auxiliary_menu.py +0 -0
  368. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/pending_chains_view.py +0 -0
  369. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/progress_indicators.py +0 -0
  370. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/recommendations_view.py +0 -0
  371. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/rule_builder.py +0 -0
  372. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/setup_wizard.py +0 -0
  373. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/shortcuts.py +0 -0
  374. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
  375. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/splunk_vulns_view.py +0 -0
  376. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/team_dashboard.py +0 -0
  377. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/template_selector.py +0 -0
  378. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/terminal.py +0 -0
  379. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/timeline_view.py +0 -0
  380. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/tutorial.py +0 -0
  381. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/tutorial_state.py +0 -0
  382. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui/wazuh_vulns_view.py +0 -0
  383. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/ui.py +0 -0
  384. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/utils/__init__.py +0 -0
  385. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/utils/tool_checker.py +0 -0
  386. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/utils.py +0 -0
  387. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez/wordlists.py +0 -0
  388. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez.egg-info/dependency_links.txt +0 -0
  389. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez.egg-info/entry_points.txt +0 -0
  390. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez.egg-info/requires.txt +0 -0
  391. {souleyez-2.28.0 → souleyez-2.40.0}/souleyez.egg-info/top_level.txt +0 -0
  392. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_config_enhanced.py +0 -0
  393. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_crypto.py +0 -0
  394. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_database_100_final.py +0 -0
  395. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_engagements.py +0 -0
  396. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_engagements_simple.py +0 -0
  397. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_job_status_tracking.py +0 -0
  398. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_logging.py +0 -0
  399. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_network_utils.py +0 -0
  400. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_ollama_service.py +0 -0
  401. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_plugin_base.py +0 -0
  402. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_recommender.py +0 -0
  403. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_schema.py +0 -0
  404. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_scope_integration.py +0 -0
  405. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_scope_validator.py +0 -0
  406. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_security_hardening.py +0 -0
  407. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_security_validation.py +0 -0
  408. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_sqlmap_parser.py +0 -0
  409. {souleyez-2.28.0 → souleyez-2.40.0}/tests/test_version_utils.py +0 -0
@@ -0,0 +1,265 @@
1
+ Metadata-Version: 2.4
2
+ Name: souleyez
3
+ Version: 2.40.0
4
+ Summary: AI-Powered Penetration Testing Platform with 40+ integrated tools
5
+ Author-email: CyberSoul Security <contact@cybersoulsecurity.com>
6
+ Maintainer-email: CyberSoul Security <contact@cybersoulsecurity.com>
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/cyber-soul-security/SoulEyez
9
+ Project-URL: Documentation, https://github.com/cyber-soul-security/SoulEyez#readme
10
+ Project-URL: Repository, https://github.com/cyber-soul-security/SoulEyez.git
11
+ Project-URL: Issues, https://github.com/cyber-soul-security/SoulEyez/issues
12
+ Keywords: pentesting,security,hacking,penetration-testing,cybersecurity,nmap,metasploit
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Environment :: Console :: Curses
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: Information Technology
18
+ Classifier: Intended Audience :: System Administrators
19
+ Classifier: License :: OSI Approved :: MIT License
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Classifier: Operating System :: MacOS
22
+ Classifier: Programming Language :: Python :: 3
23
+ Classifier: Programming Language :: Python :: 3.8
24
+ Classifier: Programming Language :: Python :: 3.9
25
+ Classifier: Programming Language :: Python :: 3.10
26
+ Classifier: Programming Language :: Python :: 3.11
27
+ Classifier: Programming Language :: Python :: 3.12
28
+ Classifier: Programming Language :: Python :: 3.13
29
+ Classifier: Topic :: Security
30
+ Classifier: Topic :: System :: Networking
31
+ Requires-Python: >=3.8
32
+ Description-Content-Type: text/markdown
33
+ License-File: LICENSE
34
+ Requires-Dist: anthropic>=0.40.0
35
+ Requires-Dist: click>=8.0.0
36
+ Requires-Dist: cryptography>=3.4.0
37
+ Requires-Dist: defusedxml>=0.7.0
38
+ Requires-Dist: impacket>=0.11.0
39
+ Requires-Dist: markdown>=3.4.0
40
+ Requires-Dist: msgpack>=1.0.0
41
+ Requires-Dist: ollama>=0.1.0
42
+ Requires-Dist: psycopg2-binary>=2.9.0
43
+ Requires-Dist: psutil>=5.9.0
44
+ Requires-Dist: python-json-logger>=2.0.0
45
+ Requires-Dist: requests>=2.28.0
46
+ Requires-Dist: rich>=10.0.0
47
+ Requires-Dist: wcwidth>=0.2.0
48
+ Provides-Extra: dev
49
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
50
+ Dynamic: license-file
51
+
52
+ # SoulEyez — AI-Powered Penetration Testing Platform
53
+
54
+ [![CI](https://github.com/cyber-soul-security/souleyez/actions/workflows/python-ci.yml/badge.svg)](https://github.com/cyber-soul-security/souleyez/actions/workflows/python-ci.yml)
55
+ [![codecov](https://codecov.io/gh/cyber-soul-security/souleyez/branch/main/graph/badge.svg)](https://codecov.io/gh/cyber-soul-security/souleyez)
56
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
57
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
58
+ [![Security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
59
+
60
+ **LEGAL NOTICE — Use Responsibly**
61
+ Only use SoulEyez on systems you own or have explicit written permission to test.
62
+ Unauthorized scanning or exploitation is illegal. The authors are not responsible for misuse.
63
+
64
+ ---
65
+
66
+ ## Features
67
+
68
+ ### Core Capabilities
69
+ - 🎯 **Interactive Dashboard** - Real-time engagement monitoring with live updates
70
+ - 🔗 **Smart Tool Chaining** - Automatic follow-up scans based on discoveries
71
+ - 📊 **Findings Management** - Track and categorize vulnerabilities by severity
72
+ - 🔑 **Credential Vault** - Encrypted storage for discovered credentials
73
+ - 🌐 **Network Mapping** - Host discovery and service enumeration
74
+ - 📈 **Progress Tracking** - Monitor scan completion and tool execution
75
+ - 💾 **SQLite Storage** - Local database for all engagement data
76
+ - 🔄 **Background Jobs** - Queue-based tool execution with status monitoring
77
+
78
+ ### Integrated Tools (40+)
79
+ - **Reconnaissance**: nmap, masscan, theHarvester, whois, dnsrecon
80
+ - **Web Testing**: nikto, gobuster, ffuf, sqlmap, nuclei, wpscan
81
+ - **Enumeration**: enum4linux-ng, smbmap, crackmapexec, snmpwalk
82
+ - **Exploitation**: Metasploit integration, searchsploit
83
+ - **Password Attacks**: hydra, hashcat, john
84
+ - **Post-Exploitation**: impacket suite, bloodhound
85
+
86
+ ### Pentest Workflow & Intelligence
87
+ - 📁 **Evidence Vault** - Unified artifact collection organized by PTES phases
88
+ - 🎯 **Attack Surface Dashboard** - Track what's exploited vs pending with priority scoring
89
+ - 💣 **Exploit Suggestions** - Automatic CVE/Metasploit recommendations for discovered services
90
+ - 🔗 **Correlation Engine** - Cross-phase attack tracking and gap analysis
91
+ - 📝 **Report Generator** - Professional reports in Markdown/HTML/PDF formats
92
+ - ✅ **Deliverable Tracking** - Manage testing requirements and acceptance criteria
93
+ - 📸 **Screenshot Management** - Organized visual evidence by methodology phase
94
+
95
+ ### Purple Team / SIEM Integration
96
+ - 🛡️ **Wazuh Integration** - Connect to Wazuh Manager for detection validation
97
+ - 📊 **Splunk Integration** - Query Splunk for alerts and vulnerability data
98
+ - ✓ **Detection Validation** - Verify if your attacks triggered SIEM alerts
99
+ - 🔍 **Vulnerability Management** - View CVEs from Wazuh agents synced to Splunk
100
+ - ⚖️ **Gap Analysis** - Compare passive (SIEM) vs active (scan) findings
101
+ - 🗺️ **MITRE ATT&CK Reports** - Detection coverage heatmaps by technique
102
+ - 📡 **Real-time Alerts** - Monitor SIEM alerts during live engagements
103
+
104
+ ---
105
+
106
+ ## 🔐 Security & Data Protection
107
+
108
+ ### Credential Encryption
109
+
110
+ SoulEyez encrypts all stored credentials using Fernet (AES-128-CBC + HMAC-SHA256) with PBKDF2 key derivation (600k iterations).
111
+
112
+ ```bash
113
+ # Enable encryption with master password
114
+ souleyez db encrypt
115
+
116
+ # Add credentials (automatically encrypted)
117
+ souleyez creds add --username admin --password secret123 --service ssh --host 10.0.0.82
118
+
119
+ # View credentials (requires master password)
120
+ souleyez creds list
121
+ ```
122
+
123
+ **Key Points:**
124
+ - Master password is never stored (cannot be recovered if lost)
125
+ - Credentials encrypted at rest with industry-standard cryptography
126
+ - Dashboard shows masked values (••••••••) until explicitly revealed
127
+ - Each user should maintain their own database
128
+
129
+ ### Data Masking
130
+
131
+ Sensitive data is automatically masked in the UI:
132
+ - Passwords: `Su***********3!`
133
+ - Credit card numbers: `45**************34`
134
+ - Access warning prompts before viewing sensitive data
135
+
136
+ See [SECURITY.md](SECURITY.md) for complete security guidelines.
137
+
138
+ ---
139
+
140
+ ## 📝 Configuration
141
+
142
+ SoulEyez uses a flexible configuration system:
143
+
144
+ 1. **Environment Variables** - `SOULEYEZ_*` prefix (highest priority)
145
+ 2. **Config File** - `~/.souleyez/config.json` (auto-created)
146
+ 3. **Default Values** - Built-in safe defaults
147
+
148
+ ```bash
149
+ # Edit config file
150
+ nano ~/.souleyez/config.json
151
+
152
+ # Or use environment variables
153
+ export SOULEYEZ_DATABASE_PATH=/custom/path/souleyez.db
154
+ export SOULEYEZ_LOGGING_LEVEL=DEBUG
155
+ ```
156
+
157
+ See [docs/CONFIG.md](souleyez/docs/CONFIG.md) for complete configuration options.
158
+
159
+ ---
160
+
161
+ ## Supported Operating Systems
162
+
163
+ | OS | Status | Notes |
164
+ |----|--------|-------|
165
+ | **Kali Linux** | ✅ Recommended | All pentesting tools pre-installed |
166
+ | **Ubuntu 22.04+** | ✅ Supported | Tools installed via `souleyez setup` |
167
+ | **Parrot OS** | ✅ Supported | Security-focused distro |
168
+ | **Debian 12+** | ✅ Supported | Stable base system |
169
+ | **Other Linux** | ⚠️ Unofficial | Manual testing required |
170
+ | **macOS/Windows** | ❌ Not Supported | Use Linux in a VM |
171
+
172
+ **Architectures:** AMD64, ARM64
173
+
174
+ ---
175
+
176
+ ## System Requirements
177
+
178
+ | Component | Minimum | Recommended |
179
+ |-----------|---------|-------------|
180
+ | **CPU** | 2 cores | 4+ cores |
181
+ | **RAM** | 4GB | 8GB+ |
182
+ | **Disk** | 10GB | 50GB+ |
183
+ | **GPU** | None | Optional (for hashcat) |
184
+
185
+ ---
186
+
187
+ ## Installation
188
+
189
+ ```bash
190
+ # Install pipx if needed
191
+ sudo apt install pipx
192
+ pipx ensurepath
193
+ source ~/.bashrc # Kali Linux: use 'source ~/.zshrc' instead
194
+
195
+ # Install SoulEyez
196
+ pipx install souleyez
197
+
198
+ # Install pentesting tools
199
+ souleyez setup
200
+ ```
201
+
202
+ > **Kali Linux users:** Kali uses zsh by default. Use `source ~/.zshrc` instead of `source ~/.bashrc`
203
+
204
+ See [docs/user-guide/installation.md](souleyez/docs/user-guide/installation.md) for detailed instructions.
205
+
206
+ ---
207
+
208
+ ## Usage
209
+
210
+ ### Interactive Mode (Recommended)
211
+
212
+ ```bash
213
+ souleyez interactive
214
+ ```
215
+
216
+ Menu-driven interface with guided workflows, tool selection by phase, and integrated help.
217
+
218
+ ### Dashboard
219
+
220
+ ```bash
221
+ souleyez dashboard
222
+ ```
223
+
224
+ Real-time monitoring with hotkeys: `[h]` Help, `[a]` Auto-chain, `[m]` Menu, `[q]` Quit
225
+
226
+ ### Command Line
227
+
228
+ ```bash
229
+ # Engagement management
230
+ souleyez workspace create <name>
231
+ souleyez workspace use <name>
232
+
233
+ # Run scans
234
+ souleyez run nmap <target>
235
+ souleyez run gobuster <target>
236
+
237
+ # View results
238
+ souleyez findings list
239
+ souleyez creds list
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Documentation
245
+
246
+ - **[Installation Guide](souleyez/docs/user-guide/installation.md)** - Setup instructions
247
+ - **[Getting Started](souleyez/docs/user-guide/getting-started.md)** - Quick start guide
248
+ - **[Workflows](souleyez/docs/user-guide/workflows.md)** - Complete pentesting workflows
249
+ - **[Evidence Vault](souleyez/docs/user-guide/evidence-vault.md)** - Artifact collection
250
+ - **[Report Generation](souleyez/docs/user-guide/report-generation.md)** - Professional reports
251
+ - **[SECURITY.md](SECURITY.md)** - Security best practices
252
+ - **[AUTO_CHAINING_GUIDE.md](AUTO_CHAINING_GUIDE.md)** - Automated workflows
253
+
254
+ ---
255
+
256
+ ## Support
257
+
258
+ - **GitHub Issues**: https://github.com/cyber-soul-security/SoulEyez/issues
259
+ - **Security Issues**: Report privately (see SECURITY.md)
260
+
261
+ ---
262
+
263
+ ## License
264
+
265
+ See [LICENSE](LICENSE) for details.
@@ -4,9 +4,9 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "souleyez"
7
- version = "2.28.0"
7
+ version = "2.40.0"
8
8
  description = "AI-Powered Penetration Testing Platform with 40+ integrated tools"
9
- readme = "BETA_README.md"
9
+ readme = "README.md"
10
10
  license = {text = "MIT"}
11
11
  authors = [{name = "CyberSoul Security", email = "contact@cybersoulsecurity.com"}]
12
12
  maintainers = [{name = "CyberSoul Security", email = "contact@cybersoulsecurity.com"}]
@@ -0,0 +1,2 @@
1
+ __version__ = '2.40.0'
2
+
@@ -49,8 +49,9 @@ class MSFAutoMapper:
49
49
  risk_levels=['safe', 'noisy', 'moderate', 'dangerous']
50
50
  )
51
51
 
52
- # Filter to top 10 recommendations
53
- service_map[service_id] = recommendations[:10]
52
+ # Only store services with actual recommendations
53
+ if recommendations:
54
+ service_map[service_id] = recommendations[:10]
54
55
 
55
56
  return service_map
56
57
  except Exception as e:
@@ -1759,6 +1759,20 @@ class ToolChaining:
1759
1759
  )
1760
1760
  )
1761
1761
 
1762
+ # Database Admin → SQLMap (gentler settings for phpMyAdmin/Adminer)
1763
+ # These panels are slow and easily overwhelmed - use single thread and basic tests
1764
+ self.rules.append(
1765
+ ChainRule(
1766
+ trigger_tool='gobuster',
1767
+ trigger_condition='category:database_admin',
1768
+ target_tool='sqlmap',
1769
+ priority=6, # Lower priority than CVE/exploit scans
1770
+ args_template=['-u', '{target}', '--batch', '--forms', '--threads=1', '--time-sec=10',
1771
+ '--level=1', '--risk=1', '--technique=BEU', '--timeout=30'],
1772
+ description='Database admin panel detected, testing login form for SQL injection (low intensity)'
1773
+ )
1774
+ )
1775
+
1762
1776
  # WordPress → WPScan enumeration
1763
1777
  self.rules.append(
1764
1778
  ChainRule(
@@ -3958,7 +3972,7 @@ class ToolChaining:
3958
3972
  # This reduces noise and focuses on high-value targets
3959
3973
  from souleyez.intelligence.sensitive_tables import is_sensitive_table, is_system_table
3960
3974
 
3961
- MAX_TABLES_FOR_COLUMN_ENUM = 15 # Focused on sensitive tables only
3975
+ MAX_TABLES_FOR_COLUMN_ENUM = 10 # Focused on sensitive tables only
3962
3976
  tables_queued = 0
3963
3977
  skipped_tables = 0
3964
3978
 
@@ -5017,6 +5031,7 @@ class ToolChaining:
5017
5031
  label=f"Auto-retry: gobuster (wildcard {exclude_length}b)",
5018
5032
  engagement_id=engagement_id,
5019
5033
  parent_id=job.get('id'),
5034
+ reason=f"Auto-triggered by gobuster: Wildcard response detected, retrying with --exclude-length {exclude_length}",
5020
5035
  metadata={'retry_attempt': 1, 'retry_parent_job_id': job.get('id')}
5021
5036
  )
5022
5037
 
@@ -5116,7 +5131,8 @@ class ToolChaining:
5116
5131
  args=sqlmap_args,
5117
5132
  label=f"Auto-chain: SQLMap testing {endpoint_url}",
5118
5133
  engagement_id=engagement_id,
5119
- parent_id=job.get('id')
5134
+ parent_id=job.get('id'),
5135
+ reason=f"Auto-triggered by ffuf: Database/dynamic endpoint detected ({status_code} response)"
5120
5136
  )
5121
5137
 
5122
5138
  job_ids.append(sqlmap_job_id)
@@ -5144,6 +5160,7 @@ class ToolChaining:
5144
5160
  label=f"Auto-chain: ffuf recursive {endpoint_url}",
5145
5161
  engagement_id=engagement_id,
5146
5162
  parent_id=job.get('id'),
5163
+ reason=f"Auto-triggered by ffuf: {status_code} response suggests deeper path, fuzzing recursively",
5147
5164
  metadata={'ffuf_depth': current_depth + 1}
5148
5165
  )
5149
5166
 
@@ -5367,7 +5384,8 @@ class ToolChaining:
5367
5384
  args=['-m', '18200', '-a', '0', 'data/wordlists/top100.txt'],
5368
5385
  label='CRACK_ASREP',
5369
5386
  engagement_id=engagement_id,
5370
- parent_id=job.get('id')
5387
+ parent_id=job.get('id'),
5388
+ reason="Auto-triggered by impacket-getnpusers: AS-REP hash extracted, attempting to crack"
5371
5389
  )
5372
5390
 
5373
5391
  job_ids.append(job_id)
@@ -5412,7 +5430,8 @@ class ToolChaining:
5412
5430
  args=['-m', '1000', '-a', '0', 'data/wordlists/top100.txt'],
5413
5431
  label='CRACK_NTLM',
5414
5432
  engagement_id=engagement_id,
5415
- parent_id=job.get('id')
5433
+ parent_id=job.get('id'),
5434
+ reason="Auto-triggered by impacket-secretsdump: NTLM hash extracted, attempting to crack"
5416
5435
  )
5417
5436
 
5418
5437
  job_ids.append(job_id)
@@ -5452,7 +5471,8 @@ class ToolChaining:
5452
5471
  args=[cred_str],
5453
5472
  label='EXTRACT_CREDS',
5454
5473
  engagement_id=engagement_id,
5455
- parent_id=job.get('id')
5474
+ parent_id=job.get('id'),
5475
+ reason="Auto-triggered by hydra: Valid credentials found, attempting to extract domain secrets"
5456
5476
  )
5457
5477
 
5458
5478
  job_ids.append(job_id)
@@ -5750,6 +5770,17 @@ class ToolChaining:
5750
5770
 
5751
5771
  status = existing_job.get('status')
5752
5772
 
5773
+ # === SQLMAP RULE-BASED DEDUP (check ALL completed jobs, not just recent) ===
5774
+ # For sqlmap: if same rule was already applied to this URL, skip it entirely
5775
+ # This prevents infinite loops where each sqlmap job re-triggers the same rules
5776
+ if cmd['tool'] == 'sqlmap' and status in ['done', 'queued', 'running']:
5777
+ cmd_rule_id = cmd.get('rule_id')
5778
+ existing_rule_id = existing_job.get('rule_id')
5779
+ if cmd_rule_id and existing_rule_id and cmd_rule_id == existing_rule_id:
5780
+ similar_exists = True
5781
+ print(f" ⏭️ Skipping sqlmap for {cmd_target}: rule #{cmd_rule_id} already applied (job #{existing_job['id']} {status})")
5782
+ break
5783
+
5753
5784
  # Check if job is active (queued/running)
5754
5785
  is_active = status in ['queued', 'running']
5755
5786
 
@@ -5764,11 +5795,28 @@ class ToolChaining:
5764
5795
  current_time = datetime.now(finished_time.tzinfo) if finished_time.tzinfo else datetime.now()
5765
5796
  time_delta = (current_time - finished_time).total_seconds()
5766
5797
 
5767
- # Only block if same args AND finished < 5 min ago
5798
+ # Only block if finished < 5 min ago AND (same args OR same rule_id for sqlmap)
5768
5799
  if time_delta < DUPLICATE_WINDOW_SECONDS:
5769
5800
  existing_args = existing_job.get('args', [])
5770
5801
  cmd_args = cmd.get('args', [])
5771
- if existing_args == cmd_args:
5802
+
5803
+ # For sqlmap: also check rule_id (same rule = duplicate even with different parent)
5804
+ if cmd['tool'] == 'sqlmap':
5805
+ cmd_rule_id = cmd.get('rule_id')
5806
+ existing_rule_id = existing_job.get('rule_id')
5807
+ if cmd_rule_id and existing_rule_id and cmd_rule_id == existing_rule_id:
5808
+ is_recent_duplicate = True
5809
+ minutes_ago = int(time_delta // 60)
5810
+ seconds_ago = int(time_delta % 60)
5811
+ time_str = f"{minutes_ago}m {seconds_ago}s ago" if minutes_ago > 0 else f"{seconds_ago}s ago"
5812
+ print(f" ⏭️ Skipping sqlmap for {cmd_target}: rule #{cmd_rule_id} completed {time_str} (duplicate)")
5813
+ elif existing_args == cmd_args:
5814
+ is_recent_duplicate = True
5815
+ minutes_ago = int(time_delta // 60)
5816
+ seconds_ago = int(time_delta % 60)
5817
+ time_str = f"{minutes_ago}m {seconds_ago}s ago" if minutes_ago > 0 else f"{seconds_ago}s ago"
5818
+ print(f" ⏭️ Skipping sqlmap for {cmd_target}: job #{existing_job['id']} completed {time_str} (duplicate)")
5819
+ elif existing_args == cmd_args:
5772
5820
  is_recent_duplicate = True
5773
5821
  minutes_ago = int(time_delta // 60)
5774
5822
  seconds_ago = int(time_delta % 60)
@@ -5790,16 +5838,34 @@ class ToolChaining:
5790
5838
  print(f" ⏭️ Skipping {cmd['tool']} for {cmd_target}: similar job #{existing_job['id']} already exists ({existing_job['status']})")
5791
5839
  break
5792
5840
 
5793
- # For sqlmap, gobuster: check if args match (allow different ports/phases)
5794
- elif cmd['tool'] in ['sqlmap', 'gobuster']:
5841
+ # For sqlmap: check by rule_id to prevent same rule firing twice on same URL
5842
+ elif cmd['tool'] == 'sqlmap':
5843
+ cmd_rule_id = cmd.get('rule_id')
5844
+ existing_rule_id = existing_job.get('rule_id')
5845
+ existing_args = existing_job.get('args', [])
5846
+ cmd_args = cmd.get('args', [])
5847
+
5848
+ # If both have rule_id and they match, it's a duplicate
5849
+ # (same rule already applied to this injection point)
5850
+ if cmd_rule_id and existing_rule_id and cmd_rule_id == existing_rule_id:
5851
+ similar_exists = True
5852
+ print(f" ⏭️ Skipping sqlmap for {cmd_target}: rule #{cmd_rule_id} already applied (job #{existing_job['id']} {existing_job['status']})")
5853
+ break
5854
+ # Also check if exact same args (covers manual/no-rule jobs)
5855
+ elif existing_args == cmd_args:
5856
+ similar_exists = True
5857
+ print(f" ⏭️ Skipping sqlmap for {cmd_target}: similar job #{existing_job['id']} already exists ({existing_job['status']})")
5858
+ break
5859
+ # If different rule_id and different args, allow it (different SQLMap phase)
5860
+
5861
+ # For gobuster: check if args match
5862
+ elif cmd['tool'] == 'gobuster':
5795
5863
  existing_args = existing_job.get('args', [])
5796
5864
  cmd_args = cmd.get('args', [])
5797
- # Compare args - if they're the same, it's a duplicate
5798
5865
  if existing_args == cmd_args:
5799
5866
  similar_exists = True
5800
5867
  print(f" ⏭️ Skipping {cmd['tool']} for {cmd_target}: similar job #{existing_job['id']} already exists ({existing_job['status']})")
5801
5868
  break
5802
- # If args are different, allow it (different SQLMap phase)
5803
5869
 
5804
5870
  # For quick lookup tools (whois, dnsrecon), skip 5-min duplicate check
5805
5871
  # They're fast and each theHarvester run should trigger them
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.28.0
3
+ **Version:** 2.40.0
4
4
  **Last Updated:** January 9, 2026
5
5
  **Organization:** CyberSoul Security
6
6
 
@@ -30,6 +30,7 @@ from souleyez.integrations.siem.wazuh import WazuhSIEMClient
30
30
  from souleyez.integrations.siem.splunk import SplunkSIEMClient
31
31
  from souleyez.integrations.siem.elastic import ElasticSIEMClient
32
32
  from souleyez.integrations.siem.sentinel import SentinelSIEMClient
33
+ from souleyez.integrations.siem.googlesecops import GoogleSecOpsSIEMClient
33
34
  from souleyez.integrations.siem.factory import SIEMFactory
34
35
 
35
36
  __all__ = [
@@ -45,4 +46,5 @@ __all__ = [
45
46
  'SplunkSIEMClient',
46
47
  'ElasticSIEMClient',
47
48
  'SentinelSIEMClient',
49
+ 'GoogleSecOpsSIEMClient',
48
50
  ]
@@ -11,7 +11,8 @@ from souleyez.integrations.siem.base import SIEMClient, SIEMConnectionStatus
11
11
 
12
12
 
13
13
  # Registry of available SIEM types
14
- SIEM_TYPES = ['wazuh', 'splunk', 'elastic', 'sentinel']
14
+ # Ordered: Open Source first, then Commercial
15
+ SIEM_TYPES = ['wazuh', 'elastic', 'splunk', 'sentinel', 'google_secops']
15
16
 
16
17
 
17
18
  class SIEMFactory:
@@ -60,6 +61,10 @@ class SIEMFactory:
60
61
  from souleyez.integrations.siem.sentinel import SentinelSIEMClient
61
62
  return SentinelSIEMClient.from_config(config)
62
63
 
64
+ elif siem_type_lower == 'google_secops':
65
+ from souleyez.integrations.siem.googlesecops import GoogleSecOpsSIEMClient
66
+ return GoogleSecOpsSIEMClient.from_config(config)
67
+
63
68
  else:
64
69
  raise ValueError(
65
70
  f"Unsupported SIEM type: {siem_type}. "
@@ -114,7 +119,7 @@ class SIEMFactory:
114
119
  info_map = {
115
120
  'wazuh': {
116
121
  'name': 'Wazuh',
117
- 'description': 'Open source security monitoring (OSSEC fork)',
122
+ 'description': '[Open Source] Security monitoring platform (OSSEC fork)',
118
123
  'config_fields': [
119
124
  {'name': 'api_url', 'label': 'Manager API URL', 'required': True,
120
125
  'placeholder': 'https://wazuh.example.com:55000'},
@@ -130,7 +135,7 @@ class SIEMFactory:
130
135
  },
131
136
  'splunk': {
132
137
  'name': 'Splunk',
133
- 'description': 'Enterprise SIEM and log management platform',
138
+ 'description': '[Commercial] Enterprise SIEM and log management',
134
139
  'config_fields': [
135
140
  {'name': 'api_url', 'label': 'REST API URL', 'required': True,
136
141
  'placeholder': 'https://splunk.example.com:8089'},
@@ -144,7 +149,7 @@ class SIEMFactory:
144
149
  },
145
150
  'elastic': {
146
151
  'name': 'Elastic Security',
147
- 'description': 'Elastic SIEM (formerly Elastic Security)',
152
+ 'description': '[Open Source] Elastic Stack security solution (ELK SIEM)',
148
153
  'config_fields': [
149
154
  {'name': 'elasticsearch_url', 'label': 'Elasticsearch URL', 'required': True,
150
155
  'placeholder': 'https://elastic.example.com:9200'},
@@ -159,7 +164,7 @@ class SIEMFactory:
159
164
  },
160
165
  'sentinel': {
161
166
  'name': 'Microsoft Sentinel',
162
- 'description': 'Azure cloud-native SIEM',
167
+ 'description': '[Commercial] Azure cloud-native SIEM',
163
168
  'config_fields': [
164
169
  {'name': 'tenant_id', 'label': 'Azure Tenant ID', 'required': True},
165
170
  {'name': 'client_id', 'label': 'App Client ID', 'required': True},
@@ -170,6 +175,22 @@ class SIEMFactory:
170
175
  {'name': 'workspace_id', 'label': 'Workspace ID (GUID)', 'required': True},
171
176
  ],
172
177
  },
178
+ 'google_secops': {
179
+ 'name': 'Google SecOps',
180
+ 'description': '[Commercial] Google Cloud security operations (Chronicle)',
181
+ 'config_fields': [
182
+ {'name': 'customer_id', 'label': 'Chronicle Customer ID', 'required': True,
183
+ 'placeholder': 'Your Chronicle customer ID'},
184
+ {'name': 'region', 'label': 'Chronicle Region', 'required': True,
185
+ 'placeholder': 'us, europe, asia-southeast1'},
186
+ {'name': 'project_id', 'label': 'Google Cloud Project ID', 'required': False,
187
+ 'placeholder': 'Optional if in service account JSON'},
188
+ {'name': 'credentials_json', 'label': 'Service Account JSON', 'required': True,
189
+ 'secret': True, 'type': 'textarea',
190
+ 'placeholder': 'Paste service account JSON key'},
191
+ {'name': 'verify_ssl', 'label': 'Verify SSL', 'required': False, 'type': 'boolean'},
192
+ ],
193
+ },
173
194
  }
174
195
 
175
196
  return info_map.get(siem_type.lower(), {