souleyez 2.43.20__tar.gz → 2.43.23__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. {souleyez-2.43.20/souleyez.egg-info → souleyez-2.43.23}/PKG-INFO +2 -2
  2. {souleyez-2.43.20 → souleyez-2.43.23}/README.md +1 -1
  3. {souleyez-2.43.20 → souleyez-2.43.23}/pyproject.toml +1 -1
  4. souleyez-2.43.23/souleyez/__init__.py +2 -0
  5. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/README.md +1 -1
  6. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/background.py +12 -1
  7. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/result_handler.py +16 -4
  8. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/main.py +1 -1
  9. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/gobuster.py +12 -0
  10. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/interactive.py +215 -1
  11. {souleyez-2.43.20 → souleyez-2.43.23/souleyez.egg-info}/PKG-INFO +2 -2
  12. souleyez-2.43.20/souleyez/__init__.py +0 -2
  13. {souleyez-2.43.20 → souleyez-2.43.23}/LICENSE +0 -0
  14. {souleyez-2.43.20 → souleyez-2.43.23}/MANIFEST.in +0 -0
  15. {souleyez-2.43.20 → souleyez-2.43.23}/setup.cfg +0 -0
  16. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/__init__.py +0 -0
  17. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/action_mapper.py +0 -0
  18. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/chain_advisor.py +0 -0
  19. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/claude_provider.py +0 -0
  20. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/context_builder.py +0 -0
  21. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/executor.py +0 -0
  22. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/feedback_handler.py +0 -0
  23. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/llm_factory.py +0 -0
  24. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/llm_provider.py +0 -0
  25. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/ollama_provider.py +0 -0
  26. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/ollama_service.py +0 -0
  27. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/path_scorer.py +0 -0
  28. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/recommender.py +0 -0
  29. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/report_context.py +0 -0
  30. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/report_prompts.py +0 -0
  31. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/report_service.py +0 -0
  32. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/result_parser.py +0 -0
  33. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ai/safety.py +0 -0
  34. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/assets/__init__.py +0 -0
  35. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/assets/souleyez-icon.png +0 -0
  36. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/auth/__init__.py +0 -0
  37. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/auth/audit.py +0 -0
  38. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/auth/engagement_access.py +0 -0
  39. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/auth/permissions.py +0 -0
  40. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/auth/session_manager.py +0 -0
  41. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/auth/user_manager.py +0 -0
  42. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/__init__.py +0 -0
  43. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/audit.py +0 -0
  44. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/auth.py +0 -0
  45. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/deliverables.py +0 -0
  46. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/engagement.py +0 -0
  47. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/license.py +0 -0
  48. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/screenshots.py +0 -0
  49. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/commands/user.py +0 -0
  50. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/config.py +0 -0
  51. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/__init__.py +0 -0
  52. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/credential_tester.py +0 -0
  53. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/cve_mappings.py +0 -0
  54. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/cve_matcher.py +0 -0
  55. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_auto_mapper.py +0 -0
  56. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_chain_engine.py +0 -0
  57. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_database.py +0 -0
  58. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_integration.py +0 -0
  59. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_rpc_client.py +0 -0
  60. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_rpc_manager.py +0 -0
  61. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/msf_sync_manager.py +0 -0
  62. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/network_utils.py +0 -0
  63. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/parser_handler.py +0 -0
  64. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/pending_chains.py +0 -0
  65. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/templates.py +0 -0
  66. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/tool_chaining.py +0 -0
  67. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/version_utils.py +0 -0
  68. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/vuln_correlation.py +0 -0
  69. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/core/web_utils.py +0 -0
  70. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/README.md +0 -0
  71. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/active_directory.json +0 -0
  72. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/cis_controls_v8.json +0 -0
  73. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/cloud_security.json +0 -0
  74. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/cmmc_2.0.json +0 -0
  75. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/external_network.json +0 -0
  76. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/ffiec_cat.json +0 -0
  77. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/gdpr_article32.json +0 -0
  78. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/glba_safeguards.json +0 -0
  79. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/hipaa_security.json +0 -0
  80. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/hitrust_csf.json +0 -0
  81. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/internal_network.json +0 -0
  82. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/iso27001.json +0 -0
  83. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/nerc_cip.json +0 -0
  84. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/nist_csf.json +0 -0
  85. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/owasp_top10_2021.json +0 -0
  86. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/pci_dss_4.0.json +0 -0
  87. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/ptes_standard.json +0 -0
  88. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/red_team.json +0 -0
  89. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/soc2_type2.json +0 -0
  90. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/templates/webapp_advanced.json +0 -0
  91. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/README.md +0 -0
  92. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/all_users.txt +0 -0
  93. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/api_endpoints.txt +0 -0
  94. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/default_credentials.txt +0 -0
  95. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/macos_users.txt +0 -0
  96. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/router_passwords.txt +0 -0
  97. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/router_users.txt +0 -0
  98. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/soul_pass.txt +0 -0
  99. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/soul_users.txt +0 -0
  100. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/subdomains_common.txt +0 -0
  101. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/top100.txt +0 -0
  102. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/top20_quick.txt +0 -0
  103. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
  104. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
  105. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/web_extensions.txt +0 -0
  106. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/data/wordlists/web_files_common.txt +0 -0
  107. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/detection/__init__.py +0 -0
  108. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/detection/attack_signatures.py +0 -0
  109. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/detection/mitre_mappings.py +0 -0
  110. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/detection/validator.py +0 -0
  111. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/devtools.py +0 -0
  112. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/api-reference/cli-commands.md +0 -0
  113. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/api-reference/engagement-api.md +0 -0
  114. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/api-reference/integration-guide.md +0 -0
  115. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/api-reference/parser-formats.md +0 -0
  116. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/architecture/decisions/000-template.md +0 -0
  117. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
  118. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
  119. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
  120. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/architecture/overview.md +0 -0
  121. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/database/MIGRATIONS.md +0 -0
  122. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/database/SCHEMA.md +0 -0
  123. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
  124. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
  125. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
  126. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/images/README.md +0 -0
  127. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/security/best-practices.md +0 -0
  128. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/security/credential-encryption.md +0 -0
  129. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/security/password-protected-commands.md +0 -0
  130. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/security/secure-defaults.md +0 -0
  131. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/security/threat-model.md +0 -0
  132. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/ai-integration.md +0 -0
  133. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/attack-surface.md +0 -0
  134. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/auto-chaining.md +0 -0
  135. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/configuration.md +0 -0
  136. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
  137. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/dependencies.md +0 -0
  138. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/evidence-vault.md +0 -0
  139. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
  140. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/getting-started.md +0 -0
  141. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/installation.md +0 -0
  142. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
  143. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/rbac.md +0 -0
  144. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/report-generation.md +0 -0
  145. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/scope-management.md +0 -0
  146. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/siem-integration.md +0 -0
  147. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/tools-reference.md +0 -0
  148. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/troubleshooting.md +0 -0
  149. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/uninstall.md +0 -0
  150. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/worker-management.md +0 -0
  151. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/docs/user-guide/workflows.md +0 -0
  152. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/__init__.py +0 -0
  153. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/base.py +0 -0
  154. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/job_status.py +0 -0
  155. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/loader.py +0 -0
  156. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/log_sanitizer.py +0 -0
  157. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/manager.py +0 -0
  158. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/engine/worker_manager.py +0 -0
  159. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/export/__init__.py +0 -0
  160. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/export/evidence_bundle.py +0 -0
  161. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/feature_flags/__init__.py +0 -0
  162. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/feature_flags/features.py +0 -0
  163. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/feature_flags.py +0 -0
  164. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/history.py +0 -0
  165. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/importers/__init__.py +0 -0
  166. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/importers/msf_importer.py +0 -0
  167. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/importers/smart_importer.py +0 -0
  168. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/__init__.py +0 -0
  169. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/__init__.py +0 -0
  170. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/base.py +0 -0
  171. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/elastic.py +0 -0
  172. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/factory.py +0 -0
  173. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/googlesecops.py +0 -0
  174. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
  175. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
  176. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/sentinel.py +0 -0
  177. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/splunk.py +0 -0
  178. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/siem/wazuh.py +0 -0
  179. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/wazuh/__init__.py +0 -0
  180. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/wazuh/client.py +0 -0
  181. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/wazuh/config.py +0 -0
  182. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/wazuh/host_mapper.py +0 -0
  183. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/integrations/wazuh/sync.py +0 -0
  184. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/__init__.py +0 -0
  185. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/correlation_analyzer.py +0 -0
  186. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/exploit_knowledge.py +0 -0
  187. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/exploit_suggestions.py +0 -0
  188. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/gap_analyzer.py +0 -0
  189. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/gap_detector.py +0 -0
  190. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/sensitive_tables.py +0 -0
  191. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/service_parser.py +0 -0
  192. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/surface_analyzer.py +0 -0
  193. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/intelligence/target_parser.py +0 -0
  194. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/licensing/__init__.py +0 -0
  195. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/licensing/validator.py +0 -0
  196. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/log_config.py +0 -0
  197. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/migrations/__init__.py +0 -0
  198. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/migrations/fix_job_counter.py +0 -0
  199. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/__init__.py +0 -0
  200. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/bloodhound_parser.py +0 -0
  201. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/crackmapexec_parser.py +0 -0
  202. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/dalfox_parser.py +0 -0
  203. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/dnsrecon_parser.py +0 -0
  204. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/enum4linux_parser.py +0 -0
  205. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/ffuf_parser.py +0 -0
  206. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/gobuster_parser.py +0 -0
  207. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/hashcat_parser.py +0 -0
  208. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/http_fingerprint_parser.py +0 -0
  209. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/hydra_parser.py +0 -0
  210. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/impacket_parser.py +0 -0
  211. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/john_parser.py +0 -0
  212. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/msf_parser.py +0 -0
  213. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/nikto_parser.py +0 -0
  214. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/nmap_parser.py +0 -0
  215. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/nuclei_parser.py +0 -0
  216. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/responder_parser.py +0 -0
  217. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/searchsploit_parser.py +0 -0
  218. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/smbmap_parser.py +0 -0
  219. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/sqlmap_parser.py +0 -0
  220. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/theharvester_parser.py +0 -0
  221. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/whois_parser.py +0 -0
  222. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/parsers/wpscan_parser.py +0 -0
  223. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/__init__.py +0 -0
  224. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/afp.py +0 -0
  225. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/afp_brute.py +0 -0
  226. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/ard.py +0 -0
  227. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/bloodhound.py +0 -0
  228. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/crackmapexec.py +0 -0
  229. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/dalfox.py +0 -0
  230. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/dns_hijack.py +0 -0
  231. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/dnsrecon.py +0 -0
  232. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/enum4linux.py +0 -0
  233. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/ffuf.py +0 -0
  234. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/firmware_extract.py +0 -0
  235. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/hashcat.py +0 -0
  236. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/http_fingerprint.py +0 -0
  237. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/hydra.py +0 -0
  238. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/impacket_getnpusers.py +0 -0
  239. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/impacket_psexec.py +0 -0
  240. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/impacket_secretsdump.py +0 -0
  241. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/impacket_smbclient.py +0 -0
  242. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/john.py +0 -0
  243. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/macos_ssh.py +0 -0
  244. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/mdns.py +0 -0
  245. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/msf_auxiliary.py +0 -0
  246. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/msf_exploit.py +0 -0
  247. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/nikto.py +0 -0
  248. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/nmap.py +0 -0
  249. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/nuclei.py +0 -0
  250. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/plugin_base.py +0 -0
  251. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/plugin_template.py +0 -0
  252. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/responder.py +0 -0
  253. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/router_http_brute.py +0 -0
  254. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/router_ssh_brute.py +0 -0
  255. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/router_telnet_brute.py +0 -0
  256. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/routersploit.py +0 -0
  257. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/routersploit_exploit.py +0 -0
  258. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/searchsploit.py +0 -0
  259. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/smbmap.py +0 -0
  260. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/sqlmap.py +0 -0
  261. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/theharvester.py +0 -0
  262. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/tr069.py +0 -0
  263. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/upnp.py +0 -0
  264. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/upnp_abuse.py +0 -0
  265. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/vnc_access.py +0 -0
  266. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/vnc_brute.py +0 -0
  267. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/whois.py +0 -0
  268. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/plugins/wpscan.py +0 -0
  269. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/__init__.py +0 -0
  270. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/attack_chain.py +0 -0
  271. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/charts.py +0 -0
  272. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/compliance_mappings.py +0 -0
  273. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/detection_report.py +0 -0
  274. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/formatters.py +0 -0
  275. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/generator.py +0 -0
  276. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/reporting/metrics.py +0 -0
  277. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/scanner.py +0 -0
  278. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/security/__init__.py +0 -0
  279. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/security/scope_validator.py +0 -0
  280. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/security/validation.py +0 -0
  281. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/security.py +0 -0
  282. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/__init__.py +0 -0
  283. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/credentials.py +0 -0
  284. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/crypto.py +0 -0
  285. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/database.py +0 -0
  286. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/db.py +0 -0
  287. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/deliverable_evidence.py +0 -0
  288. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/deliverable_exporter.py +0 -0
  289. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/deliverable_templates.py +0 -0
  290. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/deliverables.py +0 -0
  291. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/engagements.py +0 -0
  292. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/evidence.py +0 -0
  293. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/execution_log.py +0 -0
  294. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/exploit_attempts.py +0 -0
  295. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/exploits.py +0 -0
  296. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/findings.py +0 -0
  297. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/hosts.py +0 -0
  298. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrate_to_engagements.py +0 -0
  299. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
  300. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
  301. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
  302. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_005_screenshots.py +0 -0
  303. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_006_deliverables.py +0 -0
  304. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
  305. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
  306. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
  307. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
  308. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
  309. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
  310. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
  311. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
  312. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
  313. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
  314. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
  315. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
  316. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
  317. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
  318. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
  319. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
  320. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
  321. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
  322. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
  323. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
  324. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/_027_multi_siem_persistence.py +0 -0
  325. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/__init__.py +0 -0
  326. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/migrations/migration_manager.py +0 -0
  327. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/msf_sessions.py +0 -0
  328. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/osint.py +0 -0
  329. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/recommendation_engine.py +0 -0
  330. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/schema.sql +0 -0
  331. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/screenshots.py +0 -0
  332. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/smb_shares.py +0 -0
  333. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/sqlmap_data.py +0 -0
  334. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/team_collaboration.py +0 -0
  335. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/timeline_tracker.py +0 -0
  336. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/wazuh_vulns.py +0 -0
  337. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/storage/web_paths.py +0 -0
  338. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/testing/__init__.py +0 -0
  339. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/testing/credential_tester.py +0 -0
  340. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/__init__.py +0 -0
  341. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/ai_quotes.py +0 -0
  342. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/attack_surface.py +0 -0
  343. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/chain_rules_view.py +0 -0
  344. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/correlation_view.py +0 -0
  345. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/dashboard.py +0 -0
  346. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/deliverables_view.py +0 -0
  347. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/design_system.py +0 -0
  348. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/errors.py +0 -0
  349. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/evidence_linking_view.py +0 -0
  350. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/evidence_vault.py +0 -0
  351. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/exploit_suggestions_view.py +0 -0
  352. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/export_view.py +0 -0
  353. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/gap_analysis_view.py +0 -0
  354. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/help_system.py +0 -0
  355. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/intelligence_view.py +0 -0
  356. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/interactive_selector.py +0 -0
  357. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/log_formatter.py +0 -0
  358. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/menu_components.py +0 -0
  359. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/msf_auxiliary_menu.py +0 -0
  360. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/pending_chains_view.py +0 -0
  361. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/progress_indicators.py +0 -0
  362. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/recommendations_view.py +0 -0
  363. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/rule_builder.py +0 -0
  364. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/setup_wizard.py +0 -0
  365. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/shortcuts.py +0 -0
  366. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
  367. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/splunk_vulns_view.py +0 -0
  368. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/team_dashboard.py +0 -0
  369. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/template_selector.py +0 -0
  370. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/terminal.py +0 -0
  371. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/timeline_view.py +0 -0
  372. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/tool_setup.py +0 -0
  373. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/tutorial.py +0 -0
  374. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/tutorial_state.py +0 -0
  375. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/wazuh_vulns_view.py +0 -0
  376. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui/wordlist_browser.py +0 -0
  377. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/ui.py +0 -0
  378. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/utils/__init__.py +0 -0
  379. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/utils/tool_checker.py +0 -0
  380. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/utils.py +0 -0
  381. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez/wordlists.py +0 -0
  382. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez.egg-info/SOURCES.txt +0 -0
  383. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez.egg-info/dependency_links.txt +0 -0
  384. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez.egg-info/entry_points.txt +0 -0
  385. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez.egg-info/requires.txt +0 -0
  386. {souleyez-2.43.20 → souleyez-2.43.23}/souleyez.egg-info/top_level.txt +0 -0
  387. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_config.py +0 -0
  388. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_config_enhanced.py +0 -0
  389. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_crypto.py +0 -0
  390. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_database_100_final.py +0 -0
  391. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_engagements.py +0 -0
  392. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_engagements_simple.py +0 -0
  393. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_job_status_tracking.py +0 -0
  394. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_logging.py +0 -0
  395. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_network_utils.py +0 -0
  396. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_ollama_service.py +0 -0
  397. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_plugin_base.py +0 -0
  398. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_recommender.py +0 -0
  399. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_result_handler_sqlmap.py +0 -0
  400. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_schema.py +0 -0
  401. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_scope_integration.py +0 -0
  402. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_scope_validator.py +0 -0
  403. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_security_hardening.py +0 -0
  404. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_security_validation.py +0 -0
  405. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_sqlmap_parser.py +0 -0
  406. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_storage.py +0 -0
  407. {souleyez-2.43.20 → souleyez-2.43.23}/tests/test_version_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: souleyez
3
- Version: 2.43.20
3
+ Version: 2.43.23
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>
@@ -266,4 +266,4 @@ See [LICENSE](LICENSE) for details.
266
266
 
267
267
  ---
268
268
 
269
- **Version**: 2.43.20 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
269
+ **Version**: 2.43.21 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
@@ -215,4 +215,4 @@ See [LICENSE](LICENSE) for details.
215
215
 
216
216
  ---
217
217
 
218
- **Version**: 2.43.20 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
218
+ **Version**: 2.43.21 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "souleyez"
7
- version = "2.43.20"
7
+ version = "2.43.23"
8
8
  description = "AI-Powered Penetration Testing Platform with 40+ integrated tools"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -0,0 +1,2 @@
1
+ __version__ = '2.43.23'
2
+
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.43.20
3
+ **Version:** 2.43.23
4
4
  **Last Updated:** January 12, 2026
5
5
  **Organization:** CyberSoul Security
6
6
 
@@ -833,7 +833,18 @@ def _try_run_plugin(tool: str, target: str, args: List[str], label: str, log_pat
833
833
  cmd_spec = build_command_method(target, args or [], label or "", log_path)
834
834
 
835
835
  if cmd_spec is None:
836
- # build_command returned None - check if plugin has run() method
836
+ # build_command returned None - check if this is a deliberate abort
837
+ # (e.g., gobuster detected host redirect and aborted to avoid wasted scan)
838
+ if os.path.exists(log_path):
839
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as fh:
840
+ log_content = fh.read()
841
+ if 'HOST_REDIRECT_TARGET:' in log_content:
842
+ # Plugin aborted due to host redirect - don't fall through to run()
843
+ # Return success (0) so parser can set WARNING status and trigger retry
844
+ _append_worker_log(f"job {jid}: gobuster aborted due to host redirect")
845
+ return (True, 0)
846
+
847
+ # Otherwise check if plugin has run() method
837
848
  # This allows plugins to signal "use run() instead" by returning None
838
849
  run_method = getattr(plugin, "run", None)
839
850
  if callable(run_method):
@@ -2522,10 +2522,17 @@ def parse_hydra_job(engagement_id: int, log_path: str, job: Dict[str, Any]) -> D
2522
2522
 
2523
2523
  # Check for hydra errors
2524
2524
  hydra_error = detect_tool_error(log_content, 'hydra')
2525
+ summary = None
2525
2526
 
2526
2527
  # Determine status based on results
2527
2528
  if hydra_error:
2528
- status = STATUS_ERROR # Tool failed to connect
2529
+ # "Connection refused" means service not available - not a tool error
2530
+ # This is a valid result: we successfully tested, service doesn't exist
2531
+ if 'connection refused' in hydra_error.lower():
2532
+ status = STATUS_NO_RESULTS # Service not reachable
2533
+ summary = f"Service not reachable (connection refused)"
2534
+ else:
2535
+ status = STATUS_ERROR # Actual tool failure
2529
2536
  elif len(parsed.get('credentials', [])) > 0:
2530
2537
  status = STATUS_DONE # Found valid credentials
2531
2538
  elif len(parsed.get('usernames', [])) > 0:
@@ -2533,7 +2540,7 @@ def parse_hydra_job(engagement_id: int, log_path: str, job: Dict[str, Any]) -> D
2533
2540
  else:
2534
2541
  status = STATUS_NO_RESULTS # No valid credentials or usernames found
2535
2542
 
2536
- return {
2543
+ result = {
2537
2544
  'tool': 'hydra',
2538
2545
  'status': status,
2539
2546
  'target': target,
@@ -2548,6 +2555,9 @@ def parse_hydra_job(engagement_id: int, log_path: str, job: Dict[str, Any]) -> D
2548
2555
  'findings_added': findings_added,
2549
2556
  'attempts': parsed.get('attempts', 0)
2550
2557
  }
2558
+ if summary:
2559
+ result['summary'] = summary
2560
+ return result
2551
2561
  except Exception as e:
2552
2562
  return {'error': str(e)}
2553
2563
 
@@ -3316,8 +3326,10 @@ def parse_http_fingerprint_job(engagement_id: int, log_path: str, job: Dict[str,
3316
3326
  summary_parts = []
3317
3327
 
3318
3328
  if parsed.get('error'):
3319
- status = STATUS_ERROR
3320
- summary_parts.append(f"Error: {parsed.get('error')}")
3329
+ # Network errors (connection refused, timeout, etc.) are findings about the target,
3330
+ # not job failures. The job ran successfully - it just couldn't reach the target.
3331
+ status = STATUS_WARNING
3332
+ summary_parts.append(f"Unreachable: {parsed.get('error')}")
3321
3333
  elif parsed.get('managed_hosting') or parsed.get('waf') or parsed.get('cdn'):
3322
3334
  status = STATUS_DONE # Found useful info
3323
3335
  elif parsed.get('server'):
@@ -173,7 +173,7 @@ def _check_privileged_tools():
173
173
 
174
174
 
175
175
  @click.group()
176
- @click.version_option(version='2.43.20')
176
+ @click.version_option(version='2.43.23')
177
177
  def cli():
178
178
  """SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
179
179
  from souleyez.log_config import init_logging
@@ -420,6 +420,18 @@ class GobusterPlugin(PluginBase):
420
420
 
421
421
  # Always run preflight - merge detected length with any existing exclusions
422
422
  preflight = self._preflight_check(base_url, timeout=5.0, log_path=log_path)
423
+
424
+ # If host redirect detected, abort scan immediately
425
+ # Don't waste time running on wrong target - result_handler will spawn retry
426
+ if preflight.get('redirect_host'):
427
+ if log_path:
428
+ with open(log_path, 'a') as f:
429
+ f.write("\n=== SCAN ABORTED ===\n")
430
+ f.write("Host redirect detected. Aborting to avoid wasted scan time.\n")
431
+ f.write("A retry job will be auto-queued with the correct target.\n")
432
+ f.write(f"=== Completed: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())} ===\n")
433
+ return None # Abort - background.py will check log for HOST_REDIRECT_TARGET
434
+
423
435
  if preflight['exclude_length']:
424
436
  # Collect existing exclusions
425
437
  existing_excludes = set()
@@ -5487,7 +5487,7 @@ def view_job_detail(job_id: int):
5487
5487
 
5488
5488
  # Check if tool has a parser - if yes, hide raw logs by default
5489
5489
  tool = job.get('tool', '')
5490
- has_parser = tool in ['dnsrecon', 'nmap', 'ard', 'nuclei', 'nikto', 'dalfox', 'theharvester', 'sqlmap', 'ffuf', 'gobuster', 'wpscan', 'crackmapexec', 'hydra', 'whois', 'smbmap', 'enum4linux', 'msf_auxiliary', 'searchsploit']
5490
+ has_parser = tool in ['dnsrecon', 'nmap', 'ard', 'nuclei', 'nikto', 'dalfox', 'theharvester', 'sqlmap', 'ffuf', 'gobuster', 'wpscan', 'crackmapexec', 'hydra', 'whois', 'smbmap', 'enum4linux', 'msf_auxiliary', 'searchsploit', 'http_fingerprint']
5491
5491
 
5492
5492
  # Show log file if exists
5493
5493
  log_path = job.get('log')
@@ -5677,6 +5677,116 @@ def view_job_detail(job_id: int):
5677
5677
  except Exception:
5678
5678
  pass # Non-critical, just display the paths
5679
5679
 
5680
+ # Security concern patterns - check for interesting/dangerous paths
5681
+ security_concerns = []
5682
+ concern_patterns = {
5683
+ # Database files
5684
+ 'database_files': {
5685
+ 'patterns': [r'\.sql$', r'\.db$', r'\.mdb$', r'\.sqlite', r'/db\.', r'/database\.', r'\.bak\.sql'],
5686
+ 'label': 'Database file exposed',
5687
+ 'severity': 'high',
5688
+ },
5689
+ # Backup files
5690
+ 'backup_files': {
5691
+ 'patterns': [r'\.bak$', r'\.old$', r'\.backup$', r'\.orig$', r'\.save$', r'\.swp$', r'~$', r'\.zip$', r'\.tar', r'\.gz$', r'\.rar$'],
5692
+ 'label': 'Backup/archive file',
5693
+ 'severity': 'high',
5694
+ },
5695
+ # Config files
5696
+ 'config_files': {
5697
+ 'patterns': [r'web\.config', r'\.htaccess', r'\.htpasswd', r'\.env$', r'config\.php', r'config\.inc', r'settings\.py', r'\.ini$', r'\.conf$', r'\.cfg$'],
5698
+ 'label': 'Configuration file exposed',
5699
+ 'severity': 'high',
5700
+ },
5701
+ # Source code / dev files
5702
+ 'source_files': {
5703
+ 'patterns': [r'\.git/', r'\.svn/', r'\.DS_Store', r'\.vscode/', r'\.idea/', r'Thumbs\.db', r'\.log$', r'debug\.', r'test\.php', r'phpinfo'],
5704
+ 'label': 'Development/debug file',
5705
+ 'severity': 'medium',
5706
+ },
5707
+ # Legacy/vulnerable directories
5708
+ 'legacy_dirs': {
5709
+ 'patterns': [r'_vti_', r'/cgi-bin', r'/cgi/', r'/fcgi/', r'/admin/', r'/administrator/', r'/phpmyadmin', r'/pma/', r'/myadmin'],
5710
+ 'label': 'Legacy/admin directory',
5711
+ 'severity': 'medium',
5712
+ },
5713
+ # Sensitive endpoints
5714
+ 'sensitive_endpoints': {
5715
+ 'patterns': [r'/upload', r'/uploads/', r'/file/', r'/files/', r'/tmp/', r'/temp/', r'/private/', r'/internal/', r'/api/'],
5716
+ 'label': 'Potentially sensitive directory',
5717
+ 'severity': 'low',
5718
+ },
5719
+ }
5720
+
5721
+ import re
5722
+ for path_entry in paths:
5723
+ url = path_entry.get('url', '').lower()
5724
+ for concern_type, concern_info in concern_patterns.items():
5725
+ for pattern in concern_info['patterns']:
5726
+ if re.search(pattern, url, re.IGNORECASE):
5727
+ security_concerns.append({
5728
+ 'url': path_entry.get('url', ''),
5729
+ 'type': concern_type,
5730
+ 'label': concern_info['label'],
5731
+ 'severity': concern_info['severity'],
5732
+ 'status_code': path_entry.get('status_code', 'unknown'),
5733
+ })
5734
+ break # Only match once per path per type
5735
+
5736
+ # Display security concerns if found
5737
+ if security_concerns:
5738
+ click.echo(click.style("=" * 70, fg='red'))
5739
+ click.echo(click.style("⚠️ SECURITY CONCERNS", bold=True, fg='red'))
5740
+ click.echo(click.style("=" * 70, fg='red'))
5741
+ click.echo()
5742
+
5743
+ # Group by severity
5744
+ high_concerns = [c for c in security_concerns if c['severity'] == 'high']
5745
+ medium_concerns = [c for c in security_concerns if c['severity'] == 'medium']
5746
+ low_concerns = [c for c in security_concerns if c['severity'] == 'low']
5747
+
5748
+ if high_concerns:
5749
+ click.echo(click.style("[HIGH] Critical findings:", fg='red', bold=True))
5750
+ # Group by label
5751
+ by_label = {}
5752
+ for c in high_concerns:
5753
+ if c['label'] not in by_label:
5754
+ by_label[c['label']] = []
5755
+ by_label[c['label']].append(c['url'])
5756
+ for label, urls in by_label.items():
5757
+ click.echo(click.style(f" • {label}:", fg='red'))
5758
+ for url in urls[:5]: # Limit to 5 per type
5759
+ click.echo(f" → {url}")
5760
+ if len(urls) > 5:
5761
+ click.echo(f" ... and {len(urls) - 5} more")
5762
+ click.echo()
5763
+
5764
+ if medium_concerns:
5765
+ click.echo(click.style("[MEDIUM] Notable findings:", fg='yellow', bold=True))
5766
+ by_label = {}
5767
+ for c in medium_concerns:
5768
+ if c['label'] not in by_label:
5769
+ by_label[c['label']] = []
5770
+ by_label[c['label']].append(c['url'])
5771
+ for label, urls in by_label.items():
5772
+ click.echo(click.style(f" • {label}:", fg='yellow'))
5773
+ for url in urls[:5]:
5774
+ click.echo(f" → {url}")
5775
+ if len(urls) > 5:
5776
+ click.echo(f" ... and {len(urls) - 5} more")
5777
+ click.echo()
5778
+
5779
+ if low_concerns:
5780
+ click.echo(click.style("[LOW] Worth investigating:", fg='cyan', bold=True))
5781
+ by_label = {}
5782
+ for c in low_concerns:
5783
+ if c['label'] not in by_label:
5784
+ by_label[c['label']] = []
5785
+ by_label[c['label']].append(c['url'])
5786
+ for label, urls in by_label.items():
5787
+ click.echo(f" • {label}: {len(urls)} path(s)")
5788
+ click.echo()
5789
+
5680
5790
  click.echo(click.style("=" * 70, fg='cyan'))
5681
5791
  click.echo(click.style("DISCOVERED WEB PATHS", bold=True, fg='cyan'))
5682
5792
  click.echo(click.style("=" * 70, fg='cyan'))
@@ -7177,6 +7287,110 @@ def view_job_detail(job_id: int):
7177
7287
  # Silently fail - not critical
7178
7288
  pass
7179
7289
 
7290
+ # Parse and display http_fingerprint results if available (only when not showing raw logs)
7291
+ if not show_raw_logs and job.get('tool') == 'http_fingerprint' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
7292
+ try:
7293
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
7294
+ log_content = f.read()
7295
+
7296
+ # Extract JSON result from log
7297
+ import json
7298
+ import re
7299
+ json_match = re.search(r'=== JSON_RESULT ===\s*(\{.*?\})\s*=== END_JSON_RESULT ===', log_content, re.DOTALL)
7300
+
7301
+ if json_match:
7302
+ result = json.loads(json_match.group(1))
7303
+
7304
+ click.echo(click.style("=" * 70, fg='cyan'))
7305
+ click.echo(click.style("HTTP FINGERPRINT RESULTS", bold=True, fg='cyan'))
7306
+ click.echo(click.style("=" * 70, fg='cyan'))
7307
+ click.echo()
7308
+
7309
+ # Status and redirects
7310
+ status_code = result.get('status_code')
7311
+ redirect_url = result.get('redirect_url')
7312
+ if status_code:
7313
+ click.echo(f" HTTP Status: {status_code}")
7314
+ if redirect_url:
7315
+ click.echo(f" Redirects to: {redirect_url}")
7316
+
7317
+ # Server info
7318
+ server = result.get('server')
7319
+ server_version = result.get('server_version')
7320
+ if server:
7321
+ server_str = f"{server} {server_version}" if server_version else server
7322
+ click.echo(f" Server: {server_str}")
7323
+
7324
+ # Security detections - WAF (red, important)
7325
+ waf = result.get('waf', [])
7326
+ if waf:
7327
+ click.echo()
7328
+ click.echo(click.style(f" ⚠️ WAF Detected: {', '.join(waf)}", fg='red', bold=True))
7329
+
7330
+ # Managed hosting (yellow)
7331
+ managed_hosting = result.get('managed_hosting')
7332
+ if managed_hosting:
7333
+ click.echo(click.style(f" Managed Hosting: {managed_hosting}", fg='yellow'))
7334
+
7335
+ # CDN
7336
+ cdn = result.get('cdn', [])
7337
+ if cdn:
7338
+ click.echo(f" CDN: {', '.join(cdn)}")
7339
+
7340
+ # Technologies
7341
+ technologies = result.get('technologies', [])
7342
+ if technologies:
7343
+ click.echo(f" Technologies: {', '.join(technologies)}")
7344
+
7345
+ # TLS info
7346
+ tls = result.get('tls')
7347
+ if tls:
7348
+ click.echo()
7349
+ click.echo(click.style(" TLS Certificate:", bold=True))
7350
+ if tls.get('issuer'):
7351
+ click.echo(f" Issuer: {tls['issuer']}")
7352
+ if tls.get('subject'):
7353
+ click.echo(f" Subject: {tls['subject']}")
7354
+ if tls.get('not_after'):
7355
+ click.echo(f" Expires: {tls['not_after']}")
7356
+
7357
+ # Cookies
7358
+ cookies = result.get('cookies', [])
7359
+ if cookies:
7360
+ click.echo()
7361
+ click.echo(click.style(f" Cookies ({len(cookies)}):", bold=True))
7362
+ for cookie in cookies[:5]:
7363
+ # Truncate long cookies
7364
+ cookie_display = cookie[:60] + '...' if len(cookie) > 60 else cookie
7365
+ click.echo(f" • {cookie_display}")
7366
+ if len(cookies) > 5:
7367
+ click.echo(f" ... and {len(cookies) - 5} more")
7368
+
7369
+ # Security headers summary
7370
+ headers = result.get('headers', {})
7371
+ security_headers = []
7372
+ if headers.get('Strict-Transport-Security'):
7373
+ security_headers.append('HSTS')
7374
+ if headers.get('Content-Security-Policy'):
7375
+ security_headers.append('CSP')
7376
+ if headers.get('X-Frame-Options'):
7377
+ security_headers.append('X-Frame-Options')
7378
+ if headers.get('X-Content-Type-Options'):
7379
+ security_headers.append('X-Content-Type-Options')
7380
+ if headers.get('Referrer-Policy'):
7381
+ security_headers.append('Referrer-Policy')
7382
+
7383
+ if security_headers:
7384
+ click.echo()
7385
+ click.echo(click.style(f" Security Headers: {', '.join(security_headers)}", fg='green'))
7386
+
7387
+ click.echo()
7388
+ click.echo(click.style("=" * 70, fg='cyan'))
7389
+
7390
+ except Exception as e:
7391
+ # Silently fail - not critical
7392
+ pass
7393
+
7180
7394
  click.echo()
7181
7395
 
7182
7396
  # Actions menu
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: souleyez
3
- Version: 2.43.20
3
+ Version: 2.43.23
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>
@@ -266,4 +266,4 @@ See [LICENSE](LICENSE) for details.
266
266
 
267
267
  ---
268
268
 
269
- **Version**: 2.43.20 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
269
+ **Version**: 2.43.21 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
@@ -1,2 +0,0 @@
1
- __version__ = '2.43.20'
2
-
File without changes
File without changes
File without changes