souleyez 3.0.0__py3-none-any.whl → 3.0.7__py3-none-any.whl

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 (325) hide show
  1. souleyez/__init__.py +1 -1
  2. souleyez/ai/__init__.py +7 -7
  3. souleyez/ai/action_mapper.py +3 -2
  4. souleyez/ai/chain_advisor.py +2 -1
  5. souleyez/ai/claude_provider.py +2 -2
  6. souleyez/ai/context_builder.py +4 -2
  7. souleyez/ai/executor.py +9 -6
  8. souleyez/ai/feedback_handler.py +4 -2
  9. souleyez/ai/llm_provider.py +2 -2
  10. souleyez/ai/ollama_provider.py +2 -2
  11. souleyez/ai/ollama_service.py +10 -26
  12. souleyez/ai/path_scorer.py +2 -1
  13. souleyez/ai/recommender.py +6 -4
  14. souleyez/ai/report_context.py +2 -2
  15. souleyez/ai/report_service.py +5 -5
  16. souleyez/ai/result_parser.py +3 -2
  17. souleyez/ai/safety.py +5 -2
  18. souleyez/auth/__init__.py +6 -6
  19. souleyez/auth/audit.py +2 -2
  20. souleyez/auth/engagement_access.py +5 -7
  21. souleyez/auth/permissions.py +1 -1
  22. souleyez/auth/session_manager.py +5 -5
  23. souleyez/auth/user_manager.py +4 -5
  24. souleyez/commands/audit.py +6 -5
  25. souleyez/commands/auth.py +6 -5
  26. souleyez/commands/deliverables.py +2 -3
  27. souleyez/commands/engagement.py +3 -3
  28. souleyez/commands/license.py +3 -2
  29. souleyez/commands/screenshots.py +5 -4
  30. souleyez/commands/user.py +10 -8
  31. souleyez/config.py +4 -2
  32. souleyez/core/credential_tester.py +4 -2
  33. souleyez/core/cve_mappings.py +2 -1
  34. souleyez/core/cve_matcher.py +2 -1
  35. souleyez/core/msf_auto_mapper.py +2 -0
  36. souleyez/core/msf_chain_engine.py +3 -1
  37. souleyez/core/msf_database.py +7 -13
  38. souleyez/core/msf_integration.py +2 -2
  39. souleyez/core/msf_rpc_client.py +3 -2
  40. souleyez/core/msf_rpc_manager.py +4 -4
  41. souleyez/core/msf_sync_manager.py +7 -7
  42. souleyez/core/network_utils.py +1 -1
  43. souleyez/core/parser_handler.py +2 -1
  44. souleyez/core/pending_chains.py +4 -3
  45. souleyez/core/templates.py +5 -2
  46. souleyez/core/tool_chaining.py +101 -70
  47. souleyez/core/version_utils.py +1 -0
  48. souleyez/core/vuln_correlation.py +3 -2
  49. souleyez/core/web_utils.py +2 -1
  50. souleyez/detection/__init__.py +1 -1
  51. souleyez/detection/attack_signatures.py +1 -1
  52. souleyez/detection/mitre_mappings.py +1 -2
  53. souleyez/detection/validator.py +5 -4
  54. souleyez/devtools.py +4 -2
  55. souleyez/docs/README.md +2 -2
  56. souleyez/engine/background.py +168 -7
  57. souleyez/engine/base.py +2 -1
  58. souleyez/engine/loader.py +4 -2
  59. souleyez/engine/log_sanitizer.py +1 -0
  60. souleyez/engine/manager.py +3 -1
  61. souleyez/engine/result_handler.py +50 -67
  62. souleyez/engine/worker_manager.py +6 -4
  63. souleyez/export/evidence_bundle.py +1 -0
  64. souleyez/handlers/base.py +1 -0
  65. souleyez/handlers/bash_handler.py +1 -0
  66. souleyez/handlers/bloodhound_handler.py +1 -0
  67. souleyez/handlers/certipy_handler.py +1 -0
  68. souleyez/handlers/crackmapexec_handler.py +2 -20
  69. souleyez/handlers/dnsrecon_handler.py +2 -1
  70. souleyez/handlers/enum4linux_handler.py +65 -37
  71. souleyez/handlers/evil_winrm_handler.py +1 -0
  72. souleyez/handlers/ffuf_handler.py +3 -1
  73. souleyez/handlers/gobuster_handler.py +7 -6
  74. souleyez/handlers/gpp_extract_handler.py +1 -0
  75. souleyez/handlers/hashcat_handler.py +1 -0
  76. souleyez/handlers/hydra_handler.py +5 -2
  77. souleyez/handlers/impacket_getuserspns_handler.py +1 -0
  78. souleyez/handlers/impacket_psexec_handler.py +1 -0
  79. souleyez/handlers/impacket_secretsdump_handler.py +1 -0
  80. souleyez/handlers/john_handler.py +1 -0
  81. souleyez/handlers/katana_handler.py +39 -2
  82. souleyez/handlers/kerbrute_handler.py +1 -0
  83. souleyez/handlers/ldapsearch_handler.py +90 -17
  84. souleyez/handlers/lfi_extract_handler.py +1 -0
  85. souleyez/handlers/msf_auxiliary_handler.py +1 -0
  86. souleyez/handlers/msf_exploit_handler.py +1 -0
  87. souleyez/handlers/nikto_handler.py +2 -1
  88. souleyez/handlers/nmap_handler.py +2 -1
  89. souleyez/handlers/nuclei_handler.py +2 -1
  90. souleyez/handlers/nxc_handler.py +3 -18
  91. souleyez/handlers/rdp_sec_check_handler.py +1 -0
  92. souleyez/handlers/registry.py +1 -0
  93. souleyez/handlers/responder_handler.py +1 -0
  94. souleyez/handlers/service_explorer_handler.py +2 -1
  95. souleyez/handlers/smbclient_handler.py +1 -0
  96. souleyez/handlers/smbmap_handler.py +3 -2
  97. souleyez/handlers/sqlmap_handler.py +6 -4
  98. souleyez/handlers/theharvester_handler.py +2 -1
  99. souleyez/handlers/web_login_test_handler.py +1 -0
  100. souleyez/handlers/whois_handler.py +3 -2
  101. souleyez/handlers/wpscan_handler.py +2 -1
  102. souleyez/history.py +4 -3
  103. souleyez/importers/msf_importer.py +5 -3
  104. souleyez/importers/smart_importer.py +6 -4
  105. souleyez/integrations/siem/__init__.py +6 -6
  106. souleyez/integrations/siem/base.py +1 -1
  107. souleyez/integrations/siem/elastic.py +3 -3
  108. souleyez/integrations/siem/factory.py +1 -2
  109. souleyez/integrations/siem/googlesecops.py +4 -4
  110. souleyez/integrations/siem/rule_mappings/wazuh_rules.py +1 -1
  111. souleyez/integrations/siem/sentinel.py +3 -3
  112. souleyez/integrations/siem/splunk.py +3 -3
  113. souleyez/integrations/siem/wazuh.py +4 -4
  114. souleyez/integrations/wazuh/__init__.py +1 -1
  115. souleyez/integrations/wazuh/client.py +3 -2
  116. souleyez/integrations/wazuh/config.py +3 -2
  117. souleyez/integrations/wazuh/host_mapper.py +3 -1
  118. souleyez/integrations/wazuh/sync.py +4 -1
  119. souleyez/intelligence/__init__.py +1 -1
  120. souleyez/intelligence/correlation_analyzer.py +6 -5
  121. souleyez/intelligence/exploit_knowledge.py +4 -4
  122. souleyez/intelligence/exploit_suggestions.py +4 -3
  123. souleyez/intelligence/gap_analyzer.py +5 -3
  124. souleyez/intelligence/gap_detector.py +2 -0
  125. souleyez/intelligence/sensitive_tables.py +1 -1
  126. souleyez/intelligence/service_parser.py +1 -0
  127. souleyez/intelligence/surface_analyzer.py +9 -9
  128. souleyez/intelligence/target_parser.py +1 -0
  129. souleyez/licensing/__init__.py +3 -3
  130. souleyez/main.py +25 -18
  131. souleyez/migrations/fix_job_counter.py +2 -1
  132. souleyez/parsers/bloodhound_parser.py +1 -0
  133. souleyez/parsers/crackmapexec_parser.py +2 -1
  134. souleyez/parsers/dalfox_parser.py +3 -2
  135. souleyez/parsers/dnsrecon_parser.py +2 -1
  136. souleyez/parsers/enum4linux_parser.py +2 -1
  137. souleyez/parsers/ffuf_parser.py +2 -1
  138. souleyez/parsers/gobuster_parser.py +2 -1
  139. souleyez/parsers/hashcat_parser.py +3 -2
  140. souleyez/parsers/http_fingerprint_parser.py +2 -1
  141. souleyez/parsers/hydra_parser.py +2 -1
  142. souleyez/parsers/impacket_parser.py +2 -1
  143. souleyez/parsers/john_parser.py +4 -3
  144. souleyez/parsers/katana_parser.py +134 -2
  145. souleyez/parsers/msf_parser.py +2 -1
  146. souleyez/parsers/nikto_parser.py +2 -1
  147. souleyez/parsers/nmap_parser.py +14 -3
  148. souleyez/parsers/nuclei_parser.py +3 -2
  149. souleyez/parsers/responder_parser.py +1 -0
  150. souleyez/parsers/searchsploit_parser.py +3 -2
  151. souleyez/parsers/service_explorer_parser.py +1 -0
  152. souleyez/parsers/smbmap_parser.py +2 -1
  153. souleyez/parsers/sqlmap_parser.py +36 -2
  154. souleyez/parsers/theharvester_parser.py +2 -1
  155. souleyez/parsers/whois_parser.py +2 -1
  156. souleyez/parsers/wpscan_parser.py +3 -2
  157. souleyez/plugins/afp.py +3 -1
  158. souleyez/plugins/afp_brute.py +3 -1
  159. souleyez/plugins/ard.py +3 -1
  160. souleyez/plugins/bloodhound.py +3 -2
  161. souleyez/plugins/certipy.py +1 -0
  162. souleyez/plugins/crackmapexec.py +11 -7
  163. souleyez/plugins/dalfox.py +5 -2
  164. souleyez/plugins/dns_hijack.py +3 -1
  165. souleyez/plugins/dnsrecon.py +3 -1
  166. souleyez/plugins/enum4linux.py +3 -1
  167. souleyez/plugins/evil_winrm.py +1 -0
  168. souleyez/plugins/ffuf.py +3 -1
  169. souleyez/plugins/firmware_extract.py +3 -2
  170. souleyez/plugins/gobuster.py +6 -3
  171. souleyez/plugins/gpp_extract.py +1 -0
  172. souleyez/plugins/hashcat.py +2 -1
  173. souleyez/plugins/http_fingerprint.py +57 -7
  174. souleyez/plugins/hydra.py +5 -3
  175. souleyez/plugins/impacket_common.py +40 -0
  176. souleyez/plugins/impacket_getnpusers.py +19 -2
  177. souleyez/plugins/impacket_getuserspns.py +158 -0
  178. souleyez/plugins/impacket_psexec.py +19 -2
  179. souleyez/plugins/impacket_secretsdump.py +19 -2
  180. souleyez/plugins/impacket_smbclient.py +19 -2
  181. souleyez/plugins/john.py +2 -1
  182. souleyez/plugins/katana.py +48 -6
  183. souleyez/plugins/kerbrute.py +1 -0
  184. souleyez/plugins/lfi_extract.py +1 -0
  185. souleyez/plugins/macos_ssh.py +3 -1
  186. souleyez/plugins/mdns.py +3 -1
  187. souleyez/plugins/msf_auxiliary.py +3 -2
  188. souleyez/plugins/msf_exploit.py +6 -5
  189. souleyez/plugins/nikto.py +5 -2
  190. souleyez/plugins/nmap.py +6 -4
  191. souleyez/plugins/nuclei.py +3 -1
  192. souleyez/plugins/nxc.py +1 -0
  193. souleyez/plugins/plugin_base.py +3 -2
  194. souleyez/plugins/plugin_template.py +3 -2
  195. souleyez/plugins/rdp_sec_check.py +1 -0
  196. souleyez/plugins/responder.py +2 -1
  197. souleyez/plugins/router_http_brute.py +3 -1
  198. souleyez/plugins/router_ssh_brute.py +3 -1
  199. souleyez/plugins/router_telnet_brute.py +3 -1
  200. souleyez/plugins/routersploit.py +5 -3
  201. souleyez/plugins/routersploit_exploit.py +5 -3
  202. souleyez/plugins/searchsploit.py +1 -0
  203. souleyez/plugins/service_explorer.py +2 -1
  204. souleyez/plugins/smbmap.py +3 -1
  205. souleyez/plugins/smbpasswd.py +1 -0
  206. souleyez/plugins/sqlmap.py +3 -1
  207. souleyez/plugins/theharvester.py +3 -1
  208. souleyez/plugins/tr069.py +3 -1
  209. souleyez/plugins/upnp.py +3 -1
  210. souleyez/plugins/upnp_abuse.py +4 -2
  211. souleyez/plugins/vnc_access.py +4 -2
  212. souleyez/plugins/vnc_brute.py +3 -1
  213. souleyez/plugins/web_login_test.py +1 -0
  214. souleyez/plugins/whois.py +3 -1
  215. souleyez/plugins/wpscan.py +3 -1
  216. souleyez/reporting/attack_chain.py +2 -1
  217. souleyez/reporting/charts.py +1 -0
  218. souleyez/reporting/compliance_mappings.py +1 -0
  219. souleyez/reporting/detection_report.py +10 -10
  220. souleyez/reporting/formatters.py +7 -12
  221. souleyez/reporting/generator.py +34 -46
  222. souleyez/reporting/metrics.py +2 -1
  223. souleyez/scanner.py +6 -3
  224. souleyez/security/__init__.py +7 -5
  225. souleyez/security/scope_validator.py +5 -4
  226. souleyez/security.py +5 -2
  227. souleyez/storage/credentials.py +14 -19
  228. souleyez/storage/crypto.py +7 -4
  229. souleyez/storage/database.py +6 -6
  230. souleyez/storage/db.py +8 -8
  231. souleyez/storage/deliverable_evidence.py +2 -1
  232. souleyez/storage/deliverable_exporter.py +3 -2
  233. souleyez/storage/deliverable_templates.py +2 -1
  234. souleyez/storage/deliverables.py +2 -1
  235. souleyez/storage/engagements.py +6 -4
  236. souleyez/storage/evidence.py +5 -4
  237. souleyez/storage/execution_log.py +4 -2
  238. souleyez/storage/exploit_attempts.py +3 -2
  239. souleyez/storage/exploits.py +3 -1
  240. souleyez/storage/findings.py +3 -1
  241. souleyez/storage/hosts.py +5 -2
  242. souleyez/storage/migrate_to_engagements.py +14 -24
  243. souleyez/storage/migrations/_001_add_credential_enhancements.py +12 -21
  244. souleyez/storage/migrations/_003_add_execution_log.py +8 -13
  245. souleyez/storage/migrations/_005_screenshots.py +2 -4
  246. souleyez/storage/migrations/_006_deliverables.py +2 -4
  247. souleyez/storage/migrations/_007_deliverable_templates.py +4 -8
  248. souleyez/storage/migrations/_008_add_nuclei_table.py +2 -4
  249. souleyez/storage/migrations/_010_evidence_linking.py +6 -12
  250. souleyez/storage/migrations/_012_team_collaboration.py +12 -24
  251. souleyez/storage/migrations/_013_add_host_tags.py +2 -4
  252. souleyez/storage/migrations/_014_exploit_attempts.py +10 -20
  253. souleyez/storage/migrations/_015_add_mac_os_fields.py +4 -8
  254. souleyez/storage/migrations/_016_add_domain_field.py +2 -4
  255. souleyez/storage/migrations/_017_msf_sessions.py +8 -16
  256. souleyez/storage/migrations/_018_add_osint_target.py +4 -8
  257. souleyez/storage/migrations/_019_add_engagement_type.py +4 -8
  258. souleyez/storage/migrations/_020_add_rbac.py +9 -17
  259. souleyez/storage/migrations/_021_wazuh_integration.py +4 -8
  260. souleyez/storage/migrations/_023_fix_detection_results_fk.py +2 -4
  261. souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +4 -8
  262. souleyez/storage/migrations/_026_add_engagement_scope.py +4 -8
  263. souleyez/storage/migrations/_027_multi_siem_persistence.py +8 -16
  264. souleyez/storage/migrations/__init__.py +1 -4
  265. souleyez/storage/migrations/migration_manager.py +6 -9
  266. souleyez/storage/msf_sessions.py +1 -1
  267. souleyez/storage/osint.py +3 -1
  268. souleyez/storage/recommendation_engine.py +3 -2
  269. souleyez/storage/screenshots.py +2 -1
  270. souleyez/storage/smb_shares.py +3 -1
  271. souleyez/storage/sqlmap_data.py +6 -4
  272. souleyez/storage/team_collaboration.py +3 -2
  273. souleyez/storage/timeline_tracker.py +2 -1
  274. souleyez/storage/wazuh_vulns.py +3 -1
  275. souleyez/storage/web_paths.py +3 -1
  276. souleyez/testing/credential_tester.py +2 -0
  277. souleyez/ui/__init__.py +2 -1
  278. souleyez/ui/ai_quotes.py +1 -1
  279. souleyez/ui/attack_surface.py +50 -28
  280. souleyez/ui/chain_rules_view.py +6 -3
  281. souleyez/ui/correlation_view.py +3 -2
  282. souleyez/ui/dashboard.py +85 -139
  283. souleyez/ui/deliverables_view.py +1 -1
  284. souleyez/ui/design_system.py +5 -3
  285. souleyez/ui/errors.py +3 -1
  286. souleyez/ui/evidence_linking_view.py +2 -1
  287. souleyez/ui/evidence_vault.py +11 -6
  288. souleyez/ui/exploit_suggestions_view.py +11 -7
  289. souleyez/ui/export_view.py +3 -1
  290. souleyez/ui/gap_analysis_view.py +6 -3
  291. souleyez/ui/help_system.py +4 -1
  292. souleyez/ui/intelligence_view.py +7 -3
  293. souleyez/ui/interactive.py +1280 -558
  294. souleyez/ui/interactive_selector.py +3 -2
  295. souleyez/ui/log_formatter.py +1 -0
  296. souleyez/ui/menu_components.py +3 -1
  297. souleyez/ui/msf_auxiliary_menu.py +4 -1
  298. souleyez/ui/pending_chains_view.py +15 -12
  299. souleyez/ui/progress_indicators.py +5 -2
  300. souleyez/ui/recommendations_view.py +4 -2
  301. souleyez/ui/rule_builder.py +4 -1
  302. souleyez/ui/setup_wizard.py +10 -8
  303. souleyez/ui/shortcuts.py +1 -1
  304. souleyez/ui/splunk_gap_analysis_view.py +7 -4
  305. souleyez/ui/splunk_vulns_view.py +4 -1
  306. souleyez/ui/team_dashboard.py +7 -5
  307. souleyez/ui/template_selector.py +2 -1
  308. souleyez/ui/terminal.py +3 -2
  309. souleyez/ui/timeline_view.py +2 -1
  310. souleyez/ui/tool_setup.py +92 -31
  311. souleyez/ui/tutorial.py +7 -4
  312. souleyez/ui/tutorial_state.py +3 -2
  313. souleyez/ui/wazuh_vulns_view.py +5 -2
  314. souleyez/ui/wordlist_browser.py +4 -3
  315. souleyez/ui.py +13 -7
  316. souleyez/utils/tool_checker.py +61 -12
  317. souleyez/utils.py +4 -4
  318. souleyez/wordlists.py +1 -0
  319. {souleyez-3.0.0.dist-info → souleyez-3.0.7.dist-info}/METADATA +1 -1
  320. souleyez-3.0.7.dist-info/RECORD +445 -0
  321. souleyez-3.0.0.dist-info/RECORD +0 -443
  322. {souleyez-3.0.0.dist-info → souleyez-3.0.7.dist-info}/WHEEL +0 -0
  323. {souleyez-3.0.0.dist-info → souleyez-3.0.7.dist-info}/entry_points.txt +0 -0
  324. {souleyez-3.0.0.dist-info → souleyez-3.0.7.dist-info}/licenses/LICENSE +0 -0
  325. {souleyez-3.0.0.dist-info → souleyez-3.0.7.dist-info}/top_level.txt +0 -0
@@ -6,9 +6,11 @@ Unified attack surface dashboard with host-centric analysis and exploitation tra
6
6
  Host-centric view: Clean main table showing hosts, with drill-down for details.
7
7
  Consolidates Intelligence View, Exploit Suggestions, and Attack Correlation.
8
8
  """
9
- import click
10
- from typing import Dict, List, Set, Any
9
+
11
10
  import shutil
11
+ from typing import Any, Dict, List, Set
12
+
13
+ import click
12
14
 
13
15
 
14
16
  def get_terminal_width() -> int:
@@ -154,11 +156,12 @@ def view_attack_surface(engagement_id: int):
154
156
  Args:
155
157
  engagement_id: The engagement ID
156
158
  """
159
+ from rich.console import Console
160
+ from rich.table import Table
161
+
157
162
  from souleyez.intelligence.surface_analyzer import AttackSurfaceAnalyzer
158
163
  from souleyez.storage.engagements import EngagementManager
159
164
  from souleyez.ui.design_system import DesignSystem
160
- from rich.console import Console
161
- from rich.table import Table
162
165
 
163
166
  em = EngagementManager()
164
167
  analyzer = AttackSurfaceAnalyzer()
@@ -540,14 +543,16 @@ def view_attack_surface(engagement_id: int):
540
543
 
541
544
  def _show_host_siem_alerts(engagement_id: int, host_ip: str, siem_type: str):
542
545
  """Show recent SIEM alerts for a specific host."""
543
- from souleyez.ui.design_system import DesignSystem
544
- from souleyez.ui.interactive import render_standard_header
545
- from souleyez.integrations.wazuh.config import WazuhConfig
546
- from souleyez.integrations.siem.factory import SIEMFactory
547
546
  from datetime import datetime, timedelta
547
+
548
548
  from rich.console import Console
549
549
  from rich.table import Table
550
550
 
551
+ from souleyez.integrations.siem.factory import SIEMFactory
552
+ from souleyez.integrations.wazuh.config import WazuhConfig
553
+ from souleyez.ui.design_system import DesignSystem
554
+ from souleyez.ui.interactive import render_standard_header
555
+
551
556
  DesignSystem.clear_screen()
552
557
  click.echo()
553
558
 
@@ -850,6 +855,7 @@ def _display_hosts_table(
850
855
  Returns: (current_page, total_pages)
851
856
  """
852
857
  from rich.table import Table
858
+
853
859
  from souleyez.ui.design_system import DesignSystem
854
860
 
855
861
  # Show active filter
@@ -1195,9 +1201,10 @@ def _host_bulk_action_menu(
1195
1201
 
1196
1202
  def _view_gap_detail(engagement_id: int, gap: Dict, analysis: Dict):
1197
1203
  """View detailed information for a single exploitation gap."""
1198
- from souleyez.ui.design_system import DesignSystem
1199
1204
  from rich.console import Console
1200
1205
 
1206
+ from souleyez.ui.design_system import DesignSystem
1207
+
1201
1208
  console = Console()
1202
1209
 
1203
1210
  while True:
@@ -1405,10 +1412,11 @@ def _view_gap_detail(engagement_id: int, gap: Dict, analysis: Dict):
1405
1412
 
1406
1413
  def _view_host_detail(engagement_id: int, host_data: Dict, analysis: Dict):
1407
1414
  """View detailed information for a single host with all sections."""
1408
- from souleyez.ui.design_system import DesignSystem
1409
1415
  from rich.console import Console
1410
1416
  from rich.table import Table
1411
1417
 
1418
+ from souleyez.ui.design_system import DesignSystem
1419
+
1412
1420
  console = Console()
1413
1421
 
1414
1422
  services = host_data.get("services", [])
@@ -1965,12 +1973,13 @@ def _view_service_detail(
1965
1973
  engagement_id: int, host_data: Dict, service: Dict, analysis: Dict
1966
1974
  ):
1967
1975
  """View detailed information for a single service (Level 3 drill-down)."""
1968
- from souleyez.ui.design_system import DesignSystem
1976
+ from rich.console import Console
1977
+ from rich.table import Table
1978
+
1969
1979
  from souleyez.intelligence.exploit_suggestions import ExploitSuggestionEngine
1970
1980
  from souleyez.storage.findings import FindingsManager
1971
1981
  from souleyez.storage.hosts import HostManager
1972
- from rich.console import Console
1973
- from rich.table import Table
1982
+ from souleyez.ui.design_system import DesignSystem
1974
1983
 
1975
1984
  console = Console()
1976
1985
  host_ip = host_data["host_ip"]
@@ -2140,11 +2149,12 @@ def _run_service_exploit(
2140
2149
  engagement_id: int, host_ip: str, port: int, exploits: List[Dict]
2141
2150
  ):
2142
2151
  """Run an exploit against a service."""
2152
+ import os
2153
+ import tempfile
2154
+
2143
2155
  from souleyez.core.msf_integration import MSFConsoleManager
2144
2156
  from souleyez.storage.exploit_attempts import record_attempt
2145
2157
  from souleyez.storage.hosts import HostManager
2146
- import tempfile
2147
- import os
2148
2158
 
2149
2159
  click.echo()
2150
2160
  click.echo("Select exploit to run:")
@@ -2397,9 +2407,9 @@ def _get_critical_findings_for_host(engagement_id: int, host_ip: str) -> List[Di
2397
2407
  def _get_wazuh_vulns_for_host(engagement_id: int, host_ip: str) -> List[Dict]:
2398
2408
  """Get Wazuh vulnerabilities for a specific host."""
2399
2409
  try:
2400
- from souleyez.storage.wazuh_vulns import WazuhVulnsManager
2401
- from souleyez.storage.hosts import HostManager
2402
2410
  from souleyez.integrations.wazuh import WazuhConfig
2411
+ from souleyez.storage.hosts import HostManager
2412
+ from souleyez.storage.wazuh_vulns import WazuhVulnsManager
2403
2413
 
2404
2414
  # Check if Wazuh is configured
2405
2415
  config = WazuhConfig.get_config(engagement_id)
@@ -2885,10 +2895,11 @@ def _exploit_host(engagement_id: int, host_ip: str, exploits: List[Dict]):
2885
2895
 
2886
2896
  def _view_host_findings(engagement_id: int, host_ip: str):
2887
2897
  """View all findings for a host with interactive selection."""
2898
+ from rich.console import Console
2899
+
2888
2900
  from souleyez.storage.findings import FindingsManager
2889
2901
  from souleyez.storage.hosts import HostManager
2890
2902
  from souleyez.ui.interactive_selector import interactive_select
2891
- from rich.console import Console
2892
2903
 
2893
2904
  hm = HostManager()
2894
2905
  fm = FindingsManager()
@@ -2974,8 +2985,8 @@ def _view_host_findings(engagement_id: int, host_ip: str):
2974
2985
 
2975
2986
  def _view_host_wazuh_vulns(engagement_id: int, host_ip: str, vulns: List[Dict]):
2976
2987
  """View all Wazuh vulnerabilities for a host with interactive selection."""
2977
- from souleyez.ui.interactive_selector import interactive_select
2978
2988
  from souleyez.ui.design_system import DesignSystem
2989
+ from souleyez.ui.interactive_selector import interactive_select
2979
2990
 
2980
2991
  if not vulns:
2981
2992
  click.echo(" No Wazuh vulnerabilities for this host")
@@ -3116,9 +3127,10 @@ def _view_wazuh_vuln_detail(vuln: Dict):
3116
3127
 
3117
3128
  def _view_finding_detail(engagement_id: int, host_ip: str, finding: Dict):
3118
3129
  """View detailed information for a single finding (full-page view)."""
3119
- from souleyez.ui.design_system import DesignSystem
3120
3130
  from rich.console import Console
3121
3131
 
3132
+ from souleyez.ui.design_system import DesignSystem
3133
+
3122
3134
  console = Console()
3123
3135
 
3124
3136
  while True:
@@ -3401,9 +3413,10 @@ def _get_exploit_job_status(host_ip: str, msf_module: str, engagement_id: int) -
3401
3413
 
3402
3414
  def _view_all_exploits(engagement_id: int, host_ip: str, exploits: List[Dict]):
3403
3415
  """View all exploit suggestions for a host with interactive selection."""
3404
- from souleyez.ui.interactive_selector import interactive_select
3405
3416
  from rich.console import Console
3406
3417
 
3418
+ from souleyez.ui.interactive_selector import interactive_select
3419
+
3407
3420
  if not exploits:
3408
3421
  click.echo(" No exploit suggestions available")
3409
3422
  click.pause()
@@ -3494,9 +3507,10 @@ def _view_all_exploits(engagement_id: int, host_ip: str, exploits: List[Dict]):
3494
3507
 
3495
3508
  def _view_exploit_detail(engagement_id: int, host_ip: str, exploit: Dict):
3496
3509
  """View detailed information for a single exploit."""
3497
- from souleyez.ui.design_system import DesignSystem
3498
3510
  from rich.console import Console
3499
3511
 
3512
+ from souleyez.ui.design_system import DesignSystem
3513
+
3500
3514
  console = Console()
3501
3515
 
3502
3516
  while True:
@@ -3841,9 +3855,10 @@ def _exploit_bulk_action_menu(
3841
3855
 
3842
3856
  def _view_gaps_centric(engagement_id: int, analysis: Dict, engagement: Dict):
3843
3857
  """Switch to gap-centric view (the old view)."""
3844
- from souleyez.ui.design_system import DesignSystem
3845
3858
  from rich.console import Console
3846
3859
 
3860
+ from souleyez.ui.design_system import DesignSystem
3861
+
3847
3862
  # State
3848
3863
  selected_gap_ids = set()
3849
3864
  gap_filter_severity = None
@@ -4253,6 +4268,7 @@ def display_exploitation_gaps_table(
4253
4268
  Returns: (current_page, total_pages)
4254
4269
  """
4255
4270
  from rich.table import Table
4271
+
4256
4272
  from souleyez.ui.design_system import DesignSystem
4257
4273
 
4258
4274
  # Count by severity
@@ -4265,7 +4281,9 @@ def display_exploitation_gaps_table(
4265
4281
 
4266
4282
  click.echo("═" * width)
4267
4283
  click.echo(
4268
- click.style(f"⚠️ EXPLOITATION GAPS ({len(gaps)} total)", bold=True, fg="yellow")
4284
+ click.style(
4285
+ f"⚠️ EXPLOITATION GAPS ({len(gaps)} total)", bold=True, fg="yellow"
4286
+ )
4269
4287
  )
4270
4288
 
4271
4289
  # Severity breakdown line
@@ -4881,9 +4899,10 @@ def display_exploit_suggestions(
4881
4899
  engagement_id: int, top_hosts: List[Dict], width: int, show_all: bool = False
4882
4900
  ):
4883
4901
  """Display exploit suggestions for top hosts."""
4884
- from souleyez.intelligence.exploit_suggestions import ExploitSuggestionEngine
4885
4902
  from rich.console import Console
4886
4903
 
4904
+ from souleyez.intelligence.exploit_suggestions import ExploitSuggestionEngine
4905
+
4887
4906
  console = Console()
4888
4907
  # Disable SearchSploit in dashboard to prevent UI hangs - use manual Exploit Suggestions menu instead
4889
4908
  engine = ExploitSuggestionEngine(use_searchsploit=False)
@@ -5277,6 +5296,7 @@ def view_host_details(engagement_id: int, hosts: List[Dict]):
5277
5296
  # Show all services in a table
5278
5297
  from rich.console import Console
5279
5298
  from rich.table import Table
5299
+
5280
5300
  from souleyez.ui.design_system import DesignSystem
5281
5301
 
5282
5302
  console = Console(width=width - 4)
@@ -5485,10 +5505,11 @@ def _view_quick_wins(engagement_id: int, analysis: Dict):
5485
5505
  Shows services with high-severity CVEs or known MSF modules that are
5486
5506
  untried and have high success probability.
5487
5507
  """
5488
- from souleyez.ui.design_system import DesignSystem
5508
+ from rich.console import Console
5509
+
5489
5510
  from souleyez.intelligence.exploit_suggestions import ExploitSuggestionEngine
5490
5511
  from souleyez.storage.hosts import HostManager
5491
- from rich.console import Console
5512
+ from souleyez.ui.design_system import DesignSystem
5492
5513
 
5493
5514
  console = Console()
5494
5515
  engine = ExploitSuggestionEngine(use_searchsploit=False) # Fast mode
@@ -5780,10 +5801,11 @@ def _view_quick_wins(engagement_id: int, analysis: Dict):
5780
5801
 
5781
5802
  def _show_msf_commands_for_quick_wins(selected_wins: list):
5782
5803
  """Show MSF commands for selected quick wins."""
5783
- from souleyez.ui.design_system import DesignSystem
5784
5804
  from rich.console import Console
5785
5805
  from rich.panel import Panel
5786
5806
 
5807
+ from souleyez.ui.design_system import DesignSystem
5808
+
5787
5809
  console = Console()
5788
5810
  DesignSystem.clear_screen()
5789
5811
  width = get_terminal_width()
@@ -4,12 +4,15 @@ souleyez.ui.chain_rules_view
4
4
 
5
5
  Chain rule management interface for auto-chaining configuration.
6
6
  """
7
+
7
8
  import math
8
- import click
9
9
  from typing import List
10
- from souleyez.core.tool_chaining import ToolChaining, ChainRule, CATEGORY_ICONS
11
- from souleyez.ui.menu_components import StandardMenu
10
+
11
+ import click
12
+
13
+ from souleyez.core.tool_chaining import CATEGORY_ICONS, ChainRule, ToolChaining
12
14
  from souleyez.ui.design_system import DesignSystem
15
+ from souleyez.ui.menu_components import StandardMenu
13
16
 
14
17
 
15
18
  def manage_chain_rules():
@@ -2,15 +2,16 @@
2
2
  """
3
3
  Correlation view UI for displaying attack correlation and gaps.
4
4
  """
5
+
5
6
  import click
6
7
  from rich.console import Console
7
- from rich.table import Table
8
8
  from rich.panel import Panel
9
+ from rich.table import Table
9
10
 
10
11
  from souleyez.intelligence.correlation_analyzer import CorrelationAnalyzer
11
12
  from souleyez.intelligence.gap_detector import GapDetector
12
- from souleyez.ui.design_system import DesignSystem
13
13
  from souleyez.storage.engagements import EngagementManager
14
+ from souleyez.ui.design_system import DesignSystem
14
15
 
15
16
 
16
17
  def show_correlation_view(engagement_id: int):