souleyez 2.43.20__tar.gz → 2.43.22__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.22}/PKG-INFO +2 -2
  2. {souleyez-2.43.20 → souleyez-2.43.22}/README.md +1 -1
  3. {souleyez-2.43.20 → souleyez-2.43.22}/pyproject.toml +1 -1
  4. souleyez-2.43.22/souleyez/__init__.py +2 -0
  5. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/README.md +1 -1
  6. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/background.py +12 -1
  7. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/result_handler.py +16 -4
  8. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/main.py +1 -1
  9. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/gobuster.py +12 -0
  10. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/interactive.py +105 -1
  11. {souleyez-2.43.20 → souleyez-2.43.22/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.22}/LICENSE +0 -0
  14. {souleyez-2.43.20 → souleyez-2.43.22}/MANIFEST.in +0 -0
  15. {souleyez-2.43.20 → souleyez-2.43.22}/setup.cfg +0 -0
  16. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/__init__.py +0 -0
  17. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/action_mapper.py +0 -0
  18. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/chain_advisor.py +0 -0
  19. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/claude_provider.py +0 -0
  20. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/context_builder.py +0 -0
  21. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/executor.py +0 -0
  22. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/feedback_handler.py +0 -0
  23. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/llm_factory.py +0 -0
  24. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/llm_provider.py +0 -0
  25. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/ollama_provider.py +0 -0
  26. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/ollama_service.py +0 -0
  27. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/path_scorer.py +0 -0
  28. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/recommender.py +0 -0
  29. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/report_context.py +0 -0
  30. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/report_prompts.py +0 -0
  31. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/report_service.py +0 -0
  32. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/result_parser.py +0 -0
  33. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ai/safety.py +0 -0
  34. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/assets/__init__.py +0 -0
  35. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/assets/souleyez-icon.png +0 -0
  36. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/auth/__init__.py +0 -0
  37. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/auth/audit.py +0 -0
  38. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/auth/engagement_access.py +0 -0
  39. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/auth/permissions.py +0 -0
  40. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/auth/session_manager.py +0 -0
  41. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/auth/user_manager.py +0 -0
  42. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/__init__.py +0 -0
  43. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/audit.py +0 -0
  44. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/auth.py +0 -0
  45. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/deliverables.py +0 -0
  46. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/engagement.py +0 -0
  47. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/license.py +0 -0
  48. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/screenshots.py +0 -0
  49. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/commands/user.py +0 -0
  50. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/config.py +0 -0
  51. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/__init__.py +0 -0
  52. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/credential_tester.py +0 -0
  53. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/cve_mappings.py +0 -0
  54. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/cve_matcher.py +0 -0
  55. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_auto_mapper.py +0 -0
  56. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_chain_engine.py +0 -0
  57. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_database.py +0 -0
  58. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_integration.py +0 -0
  59. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_rpc_client.py +0 -0
  60. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_rpc_manager.py +0 -0
  61. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/msf_sync_manager.py +0 -0
  62. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/network_utils.py +0 -0
  63. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/parser_handler.py +0 -0
  64. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/pending_chains.py +0 -0
  65. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/templates.py +0 -0
  66. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/tool_chaining.py +0 -0
  67. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/version_utils.py +0 -0
  68. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/vuln_correlation.py +0 -0
  69. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/core/web_utils.py +0 -0
  70. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/README.md +0 -0
  71. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/active_directory.json +0 -0
  72. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/cis_controls_v8.json +0 -0
  73. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/cloud_security.json +0 -0
  74. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/cmmc_2.0.json +0 -0
  75. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/external_network.json +0 -0
  76. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/ffiec_cat.json +0 -0
  77. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/gdpr_article32.json +0 -0
  78. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/glba_safeguards.json +0 -0
  79. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/hipaa_security.json +0 -0
  80. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/hitrust_csf.json +0 -0
  81. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/internal_network.json +0 -0
  82. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/iso27001.json +0 -0
  83. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/nerc_cip.json +0 -0
  84. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/nist_csf.json +0 -0
  85. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/owasp_top10_2021.json +0 -0
  86. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/pci_dss_4.0.json +0 -0
  87. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/ptes_standard.json +0 -0
  88. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/red_team.json +0 -0
  89. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/soc2_type2.json +0 -0
  90. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/templates/webapp_advanced.json +0 -0
  91. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/README.md +0 -0
  92. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/all_users.txt +0 -0
  93. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/api_endpoints.txt +0 -0
  94. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/default_credentials.txt +0 -0
  95. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/macos_users.txt +0 -0
  96. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/router_passwords.txt +0 -0
  97. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/router_users.txt +0 -0
  98. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/soul_pass.txt +0 -0
  99. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/soul_users.txt +0 -0
  100. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/subdomains_common.txt +0 -0
  101. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/top100.txt +0 -0
  102. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/top20_quick.txt +0 -0
  103. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
  104. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
  105. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/web_extensions.txt +0 -0
  106. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/data/wordlists/web_files_common.txt +0 -0
  107. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/detection/__init__.py +0 -0
  108. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/detection/attack_signatures.py +0 -0
  109. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/detection/mitre_mappings.py +0 -0
  110. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/detection/validator.py +0 -0
  111. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/devtools.py +0 -0
  112. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/api-reference/cli-commands.md +0 -0
  113. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/api-reference/engagement-api.md +0 -0
  114. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/api-reference/integration-guide.md +0 -0
  115. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/api-reference/parser-formats.md +0 -0
  116. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/architecture/decisions/000-template.md +0 -0
  117. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
  118. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
  119. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
  120. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/architecture/overview.md +0 -0
  121. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/database/MIGRATIONS.md +0 -0
  122. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/database/SCHEMA.md +0 -0
  123. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
  124. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
  125. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
  126. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/images/README.md +0 -0
  127. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/security/best-practices.md +0 -0
  128. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/security/credential-encryption.md +0 -0
  129. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/security/password-protected-commands.md +0 -0
  130. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/security/secure-defaults.md +0 -0
  131. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/security/threat-model.md +0 -0
  132. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/ai-integration.md +0 -0
  133. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/attack-surface.md +0 -0
  134. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/auto-chaining.md +0 -0
  135. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/configuration.md +0 -0
  136. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
  137. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/dependencies.md +0 -0
  138. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/evidence-vault.md +0 -0
  139. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
  140. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/getting-started.md +0 -0
  141. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/installation.md +0 -0
  142. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
  143. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/rbac.md +0 -0
  144. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/report-generation.md +0 -0
  145. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/scope-management.md +0 -0
  146. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/siem-integration.md +0 -0
  147. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/tools-reference.md +0 -0
  148. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/troubleshooting.md +0 -0
  149. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/uninstall.md +0 -0
  150. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/worker-management.md +0 -0
  151. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/docs/user-guide/workflows.md +0 -0
  152. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/__init__.py +0 -0
  153. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/base.py +0 -0
  154. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/job_status.py +0 -0
  155. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/loader.py +0 -0
  156. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/log_sanitizer.py +0 -0
  157. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/manager.py +0 -0
  158. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/engine/worker_manager.py +0 -0
  159. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/export/__init__.py +0 -0
  160. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/export/evidence_bundle.py +0 -0
  161. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/feature_flags/__init__.py +0 -0
  162. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/feature_flags/features.py +0 -0
  163. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/feature_flags.py +0 -0
  164. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/history.py +0 -0
  165. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/importers/__init__.py +0 -0
  166. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/importers/msf_importer.py +0 -0
  167. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/importers/smart_importer.py +0 -0
  168. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/__init__.py +0 -0
  169. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/__init__.py +0 -0
  170. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/base.py +0 -0
  171. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/elastic.py +0 -0
  172. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/factory.py +0 -0
  173. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/googlesecops.py +0 -0
  174. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
  175. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
  176. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/sentinel.py +0 -0
  177. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/splunk.py +0 -0
  178. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/siem/wazuh.py +0 -0
  179. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/wazuh/__init__.py +0 -0
  180. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/wazuh/client.py +0 -0
  181. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/wazuh/config.py +0 -0
  182. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/wazuh/host_mapper.py +0 -0
  183. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/integrations/wazuh/sync.py +0 -0
  184. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/__init__.py +0 -0
  185. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/correlation_analyzer.py +0 -0
  186. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/exploit_knowledge.py +0 -0
  187. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/exploit_suggestions.py +0 -0
  188. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/gap_analyzer.py +0 -0
  189. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/gap_detector.py +0 -0
  190. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/sensitive_tables.py +0 -0
  191. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/service_parser.py +0 -0
  192. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/surface_analyzer.py +0 -0
  193. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/intelligence/target_parser.py +0 -0
  194. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/licensing/__init__.py +0 -0
  195. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/licensing/validator.py +0 -0
  196. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/log_config.py +0 -0
  197. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/migrations/__init__.py +0 -0
  198. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/migrations/fix_job_counter.py +0 -0
  199. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/__init__.py +0 -0
  200. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/bloodhound_parser.py +0 -0
  201. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/crackmapexec_parser.py +0 -0
  202. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/dalfox_parser.py +0 -0
  203. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/dnsrecon_parser.py +0 -0
  204. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/enum4linux_parser.py +0 -0
  205. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/ffuf_parser.py +0 -0
  206. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/gobuster_parser.py +0 -0
  207. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/hashcat_parser.py +0 -0
  208. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/http_fingerprint_parser.py +0 -0
  209. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/hydra_parser.py +0 -0
  210. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/impacket_parser.py +0 -0
  211. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/john_parser.py +0 -0
  212. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/msf_parser.py +0 -0
  213. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/nikto_parser.py +0 -0
  214. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/nmap_parser.py +0 -0
  215. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/nuclei_parser.py +0 -0
  216. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/responder_parser.py +0 -0
  217. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/searchsploit_parser.py +0 -0
  218. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/smbmap_parser.py +0 -0
  219. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/sqlmap_parser.py +0 -0
  220. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/theharvester_parser.py +0 -0
  221. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/whois_parser.py +0 -0
  222. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/parsers/wpscan_parser.py +0 -0
  223. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/__init__.py +0 -0
  224. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/afp.py +0 -0
  225. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/afp_brute.py +0 -0
  226. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/ard.py +0 -0
  227. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/bloodhound.py +0 -0
  228. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/crackmapexec.py +0 -0
  229. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/dalfox.py +0 -0
  230. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/dns_hijack.py +0 -0
  231. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/dnsrecon.py +0 -0
  232. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/enum4linux.py +0 -0
  233. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/ffuf.py +0 -0
  234. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/firmware_extract.py +0 -0
  235. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/hashcat.py +0 -0
  236. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/http_fingerprint.py +0 -0
  237. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/hydra.py +0 -0
  238. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/impacket_getnpusers.py +0 -0
  239. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/impacket_psexec.py +0 -0
  240. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/impacket_secretsdump.py +0 -0
  241. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/impacket_smbclient.py +0 -0
  242. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/john.py +0 -0
  243. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/macos_ssh.py +0 -0
  244. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/mdns.py +0 -0
  245. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/msf_auxiliary.py +0 -0
  246. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/msf_exploit.py +0 -0
  247. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/nikto.py +0 -0
  248. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/nmap.py +0 -0
  249. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/nuclei.py +0 -0
  250. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/plugin_base.py +0 -0
  251. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/plugin_template.py +0 -0
  252. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/responder.py +0 -0
  253. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/router_http_brute.py +0 -0
  254. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/router_ssh_brute.py +0 -0
  255. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/router_telnet_brute.py +0 -0
  256. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/routersploit.py +0 -0
  257. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/routersploit_exploit.py +0 -0
  258. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/searchsploit.py +0 -0
  259. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/smbmap.py +0 -0
  260. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/sqlmap.py +0 -0
  261. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/theharvester.py +0 -0
  262. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/tr069.py +0 -0
  263. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/upnp.py +0 -0
  264. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/upnp_abuse.py +0 -0
  265. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/vnc_access.py +0 -0
  266. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/vnc_brute.py +0 -0
  267. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/whois.py +0 -0
  268. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/plugins/wpscan.py +0 -0
  269. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/__init__.py +0 -0
  270. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/attack_chain.py +0 -0
  271. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/charts.py +0 -0
  272. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/compliance_mappings.py +0 -0
  273. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/detection_report.py +0 -0
  274. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/formatters.py +0 -0
  275. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/generator.py +0 -0
  276. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/reporting/metrics.py +0 -0
  277. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/scanner.py +0 -0
  278. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/security/__init__.py +0 -0
  279. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/security/scope_validator.py +0 -0
  280. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/security/validation.py +0 -0
  281. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/security.py +0 -0
  282. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/__init__.py +0 -0
  283. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/credentials.py +0 -0
  284. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/crypto.py +0 -0
  285. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/database.py +0 -0
  286. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/db.py +0 -0
  287. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/deliverable_evidence.py +0 -0
  288. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/deliverable_exporter.py +0 -0
  289. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/deliverable_templates.py +0 -0
  290. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/deliverables.py +0 -0
  291. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/engagements.py +0 -0
  292. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/evidence.py +0 -0
  293. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/execution_log.py +0 -0
  294. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/exploit_attempts.py +0 -0
  295. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/exploits.py +0 -0
  296. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/findings.py +0 -0
  297. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/hosts.py +0 -0
  298. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrate_to_engagements.py +0 -0
  299. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
  300. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
  301. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
  302. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_005_screenshots.py +0 -0
  303. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_006_deliverables.py +0 -0
  304. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
  305. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
  306. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
  307. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
  308. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
  309. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
  310. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
  311. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
  312. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
  313. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
  314. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
  315. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
  316. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
  317. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
  318. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
  319. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
  320. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
  321. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
  322. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
  323. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
  324. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/_027_multi_siem_persistence.py +0 -0
  325. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/__init__.py +0 -0
  326. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/migrations/migration_manager.py +0 -0
  327. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/msf_sessions.py +0 -0
  328. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/osint.py +0 -0
  329. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/recommendation_engine.py +0 -0
  330. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/schema.sql +0 -0
  331. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/screenshots.py +0 -0
  332. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/smb_shares.py +0 -0
  333. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/sqlmap_data.py +0 -0
  334. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/team_collaboration.py +0 -0
  335. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/timeline_tracker.py +0 -0
  336. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/wazuh_vulns.py +0 -0
  337. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/storage/web_paths.py +0 -0
  338. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/testing/__init__.py +0 -0
  339. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/testing/credential_tester.py +0 -0
  340. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/__init__.py +0 -0
  341. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/ai_quotes.py +0 -0
  342. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/attack_surface.py +0 -0
  343. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/chain_rules_view.py +0 -0
  344. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/correlation_view.py +0 -0
  345. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/dashboard.py +0 -0
  346. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/deliverables_view.py +0 -0
  347. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/design_system.py +0 -0
  348. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/errors.py +0 -0
  349. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/evidence_linking_view.py +0 -0
  350. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/evidence_vault.py +0 -0
  351. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/exploit_suggestions_view.py +0 -0
  352. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/export_view.py +0 -0
  353. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/gap_analysis_view.py +0 -0
  354. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/help_system.py +0 -0
  355. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/intelligence_view.py +0 -0
  356. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/interactive_selector.py +0 -0
  357. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/log_formatter.py +0 -0
  358. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/menu_components.py +0 -0
  359. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/msf_auxiliary_menu.py +0 -0
  360. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/pending_chains_view.py +0 -0
  361. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/progress_indicators.py +0 -0
  362. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/recommendations_view.py +0 -0
  363. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/rule_builder.py +0 -0
  364. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/setup_wizard.py +0 -0
  365. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/shortcuts.py +0 -0
  366. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
  367. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/splunk_vulns_view.py +0 -0
  368. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/team_dashboard.py +0 -0
  369. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/template_selector.py +0 -0
  370. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/terminal.py +0 -0
  371. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/timeline_view.py +0 -0
  372. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/tool_setup.py +0 -0
  373. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/tutorial.py +0 -0
  374. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/tutorial_state.py +0 -0
  375. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/wazuh_vulns_view.py +0 -0
  376. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui/wordlist_browser.py +0 -0
  377. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/ui.py +0 -0
  378. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/utils/__init__.py +0 -0
  379. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/utils/tool_checker.py +0 -0
  380. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/utils.py +0 -0
  381. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez/wordlists.py +0 -0
  382. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez.egg-info/SOURCES.txt +0 -0
  383. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez.egg-info/dependency_links.txt +0 -0
  384. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez.egg-info/entry_points.txt +0 -0
  385. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez.egg-info/requires.txt +0 -0
  386. {souleyez-2.43.20 → souleyez-2.43.22}/souleyez.egg-info/top_level.txt +0 -0
  387. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_config.py +0 -0
  388. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_config_enhanced.py +0 -0
  389. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_crypto.py +0 -0
  390. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_database_100_final.py +0 -0
  391. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_engagements.py +0 -0
  392. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_engagements_simple.py +0 -0
  393. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_job_status_tracking.py +0 -0
  394. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_logging.py +0 -0
  395. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_network_utils.py +0 -0
  396. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_ollama_service.py +0 -0
  397. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_plugin_base.py +0 -0
  398. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_recommender.py +0 -0
  399. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_result_handler_sqlmap.py +0 -0
  400. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_schema.py +0 -0
  401. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_scope_integration.py +0 -0
  402. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_scope_validator.py +0 -0
  403. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_security_hardening.py +0 -0
  404. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_security_validation.py +0 -0
  405. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_sqlmap_parser.py +0 -0
  406. {souleyez-2.43.20 → souleyez-2.43.22}/tests/test_storage.py +0 -0
  407. {souleyez-2.43.20 → souleyez-2.43.22}/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.22
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.22"
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.22'
2
+
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.43.20
3
+ **Version:** 2.43.22
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.22')
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')
@@ -7177,6 +7177,110 @@ def view_job_detail(job_id: int):
7177
7177
  # Silently fail - not critical
7178
7178
  pass
7179
7179
 
7180
+ # Parse and display http_fingerprint results if available (only when not showing raw logs)
7181
+ 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):
7182
+ try:
7183
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
7184
+ log_content = f.read()
7185
+
7186
+ # Extract JSON result from log
7187
+ import json
7188
+ import re
7189
+ json_match = re.search(r'=== JSON_RESULT ===\s*(\{.*?\})\s*=== END_JSON_RESULT ===', log_content, re.DOTALL)
7190
+
7191
+ if json_match:
7192
+ result = json.loads(json_match.group(1))
7193
+
7194
+ click.echo(click.style("=" * 70, fg='cyan'))
7195
+ click.echo(click.style("HTTP FINGERPRINT RESULTS", bold=True, fg='cyan'))
7196
+ click.echo(click.style("=" * 70, fg='cyan'))
7197
+ click.echo()
7198
+
7199
+ # Status and redirects
7200
+ status_code = result.get('status_code')
7201
+ redirect_url = result.get('redirect_url')
7202
+ if status_code:
7203
+ click.echo(f" HTTP Status: {status_code}")
7204
+ if redirect_url:
7205
+ click.echo(f" Redirects to: {redirect_url}")
7206
+
7207
+ # Server info
7208
+ server = result.get('server')
7209
+ server_version = result.get('server_version')
7210
+ if server:
7211
+ server_str = f"{server} {server_version}" if server_version else server
7212
+ click.echo(f" Server: {server_str}")
7213
+
7214
+ # Security detections - WAF (red, important)
7215
+ waf = result.get('waf', [])
7216
+ if waf:
7217
+ click.echo()
7218
+ click.echo(click.style(f" ⚠️ WAF Detected: {', '.join(waf)}", fg='red', bold=True))
7219
+
7220
+ # Managed hosting (yellow)
7221
+ managed_hosting = result.get('managed_hosting')
7222
+ if managed_hosting:
7223
+ click.echo(click.style(f" Managed Hosting: {managed_hosting}", fg='yellow'))
7224
+
7225
+ # CDN
7226
+ cdn = result.get('cdn', [])
7227
+ if cdn:
7228
+ click.echo(f" CDN: {', '.join(cdn)}")
7229
+
7230
+ # Technologies
7231
+ technologies = result.get('technologies', [])
7232
+ if technologies:
7233
+ click.echo(f" Technologies: {', '.join(technologies)}")
7234
+
7235
+ # TLS info
7236
+ tls = result.get('tls')
7237
+ if tls:
7238
+ click.echo()
7239
+ click.echo(click.style(" TLS Certificate:", bold=True))
7240
+ if tls.get('issuer'):
7241
+ click.echo(f" Issuer: {tls['issuer']}")
7242
+ if tls.get('subject'):
7243
+ click.echo(f" Subject: {tls['subject']}")
7244
+ if tls.get('not_after'):
7245
+ click.echo(f" Expires: {tls['not_after']}")
7246
+
7247
+ # Cookies
7248
+ cookies = result.get('cookies', [])
7249
+ if cookies:
7250
+ click.echo()
7251
+ click.echo(click.style(f" Cookies ({len(cookies)}):", bold=True))
7252
+ for cookie in cookies[:5]:
7253
+ # Truncate long cookies
7254
+ cookie_display = cookie[:60] + '...' if len(cookie) > 60 else cookie
7255
+ click.echo(f" • {cookie_display}")
7256
+ if len(cookies) > 5:
7257
+ click.echo(f" ... and {len(cookies) - 5} more")
7258
+
7259
+ # Security headers summary
7260
+ headers = result.get('headers', {})
7261
+ security_headers = []
7262
+ if headers.get('Strict-Transport-Security'):
7263
+ security_headers.append('HSTS')
7264
+ if headers.get('Content-Security-Policy'):
7265
+ security_headers.append('CSP')
7266
+ if headers.get('X-Frame-Options'):
7267
+ security_headers.append('X-Frame-Options')
7268
+ if headers.get('X-Content-Type-Options'):
7269
+ security_headers.append('X-Content-Type-Options')
7270
+ if headers.get('Referrer-Policy'):
7271
+ security_headers.append('Referrer-Policy')
7272
+
7273
+ if security_headers:
7274
+ click.echo()
7275
+ click.echo(click.style(f" Security Headers: {', '.join(security_headers)}", fg='green'))
7276
+
7277
+ click.echo()
7278
+ click.echo(click.style("=" * 70, fg='cyan'))
7279
+
7280
+ except Exception as e:
7281
+ # Silently fail - not critical
7282
+ pass
7283
+
7180
7284
  click.echo()
7181
7285
 
7182
7286
  # 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.22
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