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
@@ -8,17 +8,16 @@ Tables created:
8
8
  - engagement_permissions: Team access to engagements
9
9
  """
10
10
 
11
- import secrets
12
11
  import hashlib
13
12
  import os
13
+ import secrets
14
14
 
15
15
 
16
16
  def upgrade(conn):
17
17
  """Add RBAC tables."""
18
18
 
19
19
  # Users table - core user accounts
20
- conn.execute(
21
- """
20
+ conn.execute("""
22
21
  CREATE TABLE IF NOT EXISTS users (
23
22
  id TEXT PRIMARY KEY,
24
23
  username TEXT UNIQUE NOT NULL,
@@ -36,12 +35,10 @@ def upgrade(conn):
36
35
  failed_login_attempts INTEGER DEFAULT 0,
37
36
  locked_until TIMESTAMP
38
37
  )
39
- """
40
- )
38
+ """)
41
39
 
42
40
  # Sessions table - active login sessions
43
- conn.execute(
44
- """
41
+ conn.execute("""
45
42
  CREATE TABLE IF NOT EXISTS sessions (
46
43
  id TEXT PRIMARY KEY,
47
44
  user_id TEXT NOT NULL,
@@ -52,12 +49,10 @@ def upgrade(conn):
52
49
  user_agent TEXT,
53
50
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
54
51
  )
55
- """
56
- )
52
+ """)
57
53
 
58
54
  # Audit log - immutable security trail
59
- conn.execute(
60
- """
55
+ conn.execute("""
61
56
  CREATE TABLE IF NOT EXISTS audit_log (
62
57
  id INTEGER PRIMARY KEY AUTOINCREMENT,
63
58
  timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
@@ -70,12 +65,10 @@ def upgrade(conn):
70
65
  ip_address TEXT,
71
66
  success BOOLEAN DEFAULT TRUE
72
67
  )
73
- """
74
- )
68
+ """)
75
69
 
76
70
  # Engagement permissions - team access control
77
- conn.execute(
78
- """
71
+ conn.execute("""
79
72
  CREATE TABLE IF NOT EXISTS engagement_permissions (
80
73
  id INTEGER PRIMARY KEY AUTOINCREMENT,
81
74
  engagement_id INTEGER NOT NULL,
@@ -87,8 +80,7 @@ def upgrade(conn):
87
80
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
88
81
  UNIQUE(engagement_id, user_id)
89
82
  )
90
- """
91
- )
83
+ """)
92
84
 
93
85
  # Add owner_id to engagements table
94
86
  try:
@@ -14,8 +14,7 @@ def upgrade(conn):
14
14
  cursor = conn.cursor()
15
15
 
16
16
  # Wazuh connection configuration
17
- cursor.execute(
18
- """
17
+ cursor.execute("""
19
18
  CREATE TABLE IF NOT EXISTS wazuh_config (
20
19
  id INTEGER PRIMARY KEY AUTOINCREMENT,
21
20
  engagement_id INTEGER NOT NULL UNIQUE,
@@ -31,13 +30,11 @@ def upgrade(conn):
31
30
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
32
31
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
33
32
  )
34
- """
35
- )
33
+ """)
36
34
 
37
35
  # Detection validation results per job
38
36
  # Note: job_id references jobs.json (file-based), not a SQLite table
39
- cursor.execute(
40
- """
37
+ cursor.execute("""
41
38
  CREATE TABLE IF NOT EXISTS detection_results (
42
39
  id INTEGER PRIMARY KEY AUTOINCREMENT,
43
40
  job_id INTEGER NOT NULL,
@@ -55,8 +52,7 @@ def upgrade(conn):
55
52
  checked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
56
53
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
57
54
  )
58
- """
59
- )
55
+ """)
60
56
 
61
57
  # Indexes
62
58
  cursor.execute(
@@ -32,8 +32,7 @@ def upgrade(conn):
32
32
  return
33
33
 
34
34
  # Recreate table without the bad FK
35
- cursor.execute(
36
- """
35
+ cursor.execute("""
37
36
  CREATE TABLE detection_results_new (
38
37
  id INTEGER PRIMARY KEY AUTOINCREMENT,
39
38
  job_id INTEGER NOT NULL,
@@ -51,8 +50,7 @@ def upgrade(conn):
51
50
  checked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
52
51
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
53
52
  )
54
- """
55
- )
53
+ """)
56
54
 
57
55
  # Copy existing data
58
56
  cursor.execute("INSERT INTO detection_results_new SELECT * FROM detection_results")
@@ -15,8 +15,7 @@ def upgrade(conn):
15
15
  cursor = conn.cursor()
16
16
 
17
17
  # Wazuh vulnerabilities table
18
- cursor.execute(
19
- """
18
+ cursor.execute("""
20
19
  CREATE TABLE IF NOT EXISTS wazuh_vulnerabilities (
21
20
  id INTEGER PRIMARY KEY AUTOINCREMENT,
22
21
  engagement_id INTEGER NOT NULL,
@@ -59,12 +58,10 @@ def upgrade(conn):
59
58
 
60
59
  UNIQUE(engagement_id, agent_id, cve_id, package_name)
61
60
  )
62
- """
63
- )
61
+ """)
64
62
 
65
63
  # Sync metadata table
66
- cursor.execute(
67
- """
64
+ cursor.execute("""
68
65
  CREATE TABLE IF NOT EXISTS wazuh_vuln_sync (
69
66
  id INTEGER PRIMARY KEY AUTOINCREMENT,
70
67
  engagement_id INTEGER NOT NULL UNIQUE,
@@ -74,8 +71,7 @@ def upgrade(conn):
74
71
  last_sync_errors TEXT,
75
72
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
76
73
  )
77
- """
78
- )
74
+ """)
79
75
 
80
76
  # Indexes for performance
81
77
  cursor.execute(
@@ -17,8 +17,7 @@ def upgrade(conn):
17
17
  """Add scope validation tables and columns."""
18
18
 
19
19
  # Engagement scope definitions table
20
- conn.execute(
21
- """
20
+ conn.execute("""
22
21
  CREATE TABLE IF NOT EXISTS engagement_scope (
23
22
  id INTEGER PRIMARY KEY AUTOINCREMENT,
24
23
  engagement_id INTEGER NOT NULL,
@@ -31,12 +30,10 @@ def upgrade(conn):
31
30
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE,
32
31
  UNIQUE(engagement_id, scope_type, value)
33
32
  )
34
- """
35
- )
33
+ """)
36
34
 
37
35
  # Scope validation audit log
38
- conn.execute(
39
- """
36
+ conn.execute("""
40
37
  CREATE TABLE IF NOT EXISTS scope_validation_log (
41
38
  id INTEGER PRIMARY KEY AUTOINCREMENT,
42
39
  engagement_id INTEGER NOT NULL,
@@ -49,8 +46,7 @@ def upgrade(conn):
49
46
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
50
47
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
51
48
  )
52
- """
53
- )
49
+ """)
54
50
 
55
51
  # Add scope_enforcement column to engagements
56
52
  try:
@@ -26,8 +26,7 @@ def upgrade(conn):
26
26
  cursor.execute("ALTER TABLE wazuh_config ADD COLUMN config_json TEXT")
27
27
 
28
28
  # Create new table with correct constraint
29
- cursor.execute(
30
- """
29
+ cursor.execute("""
31
30
  CREATE TABLE IF NOT EXISTS siem_config_new (
32
31
  id INTEGER PRIMARY KEY AUTOINCREMENT,
33
32
  engagement_id INTEGER NOT NULL,
@@ -46,12 +45,10 @@ def upgrade(conn):
46
45
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE,
47
46
  UNIQUE(engagement_id, siem_type)
48
47
  )
49
- """
50
- )
48
+ """)
51
49
 
52
50
  # Copy existing data
53
- cursor.execute(
54
- """
51
+ cursor.execute("""
55
52
  INSERT OR IGNORE INTO siem_config_new (
56
53
  id, engagement_id, siem_type, api_url, api_user, api_password,
57
54
  indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
@@ -62,8 +59,7 @@ def upgrade(conn):
62
59
  indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
63
60
  config_json, created_at, updated_at
64
61
  FROM wazuh_config
65
- """
66
- )
62
+ """)
67
63
 
68
64
  # Drop old table and rename new one
69
65
  cursor.execute("DROP TABLE wazuh_config")
@@ -87,8 +83,7 @@ def downgrade(conn):
87
83
  """Revert to single SIEM per engagement (lossy - keeps only first config per engagement)."""
88
84
  cursor = conn.cursor()
89
85
 
90
- cursor.execute(
91
- """
86
+ cursor.execute("""
92
87
  CREATE TABLE IF NOT EXISTS wazuh_config_old (
93
88
  id INTEGER PRIMARY KEY AUTOINCREMENT,
94
89
  engagement_id INTEGER NOT NULL UNIQUE,
@@ -106,12 +101,10 @@ def downgrade(conn):
106
101
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
107
102
  FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
108
103
  )
109
- """
110
- )
104
+ """)
111
105
 
112
106
  # Copy only first config per engagement
113
- cursor.execute(
114
- """
107
+ cursor.execute("""
115
108
  INSERT OR IGNORE INTO wazuh_config_old (
116
109
  engagement_id, api_url, api_user, api_password,
117
110
  indexer_url, indexer_user, indexer_password, verify_ssl, enabled,
@@ -123,8 +116,7 @@ def downgrade(conn):
123
116
  siem_type, config_json, created_at, updated_at
124
117
  FROM wazuh_config
125
118
  GROUP BY engagement_id
126
- """
127
- )
119
+ """)
128
120
 
129
121
  cursor.execute("DROP TABLE wazuh_config")
130
122
  cursor.execute("ALTER TABLE wazuh_config_old RENAME TO wazuh_config")
@@ -3,8 +3,7 @@
3
3
 
4
4
  # Import all migrations - they register themselves
5
5
  from . import (
6
- # 001-010
7
- _001_add_credential_enhancements,
6
+ _001_add_credential_enhancements, # 001-010; 011-020; 021-030
8
7
  _002_add_status_tracking,
9
8
  _003_add_execution_log,
10
9
  _005_screenshots,
@@ -13,7 +12,6 @@ from . import (
13
12
  _008_add_nuclei_table,
14
13
  _009_add_cme_tables,
15
14
  _010_evidence_linking,
16
- # 011-020
17
15
  _011_timeline_tracking,
18
16
  _012_team_collaboration,
19
17
  _013_add_host_tags,
@@ -24,7 +22,6 @@ from . import (
24
22
  _018_add_osint_target,
25
23
  _019_add_engagement_type,
26
24
  _020_add_rbac,
27
- # 021-030
28
25
  _021_wazuh_integration,
29
26
  _022_wazuh_indexer_columns,
30
27
  _023_fix_detection_results_fk,
@@ -5,8 +5,9 @@ souleyez.storage.migrations.migration_manager - Database migration system
5
5
  Uses compiled registry pattern for Nuitka compatibility.
6
6
  All migrations are imported in __init__.py and registered in MIGRATIONS_REGISTRY.
7
7
  """
8
+
8
9
  import sqlite3
9
- from typing import List, Dict
10
+ from typing import Dict, List
10
11
 
11
12
  # Import registry from package
12
13
  from . import MIGRATIONS_REGISTRY, get_all_versions
@@ -20,16 +21,14 @@ class MigrationManager:
20
21
  def _ensure_migrations_table(self):
21
22
  """Create migrations tracking table if it doesn't exist."""
22
23
  conn = sqlite3.connect(self.db_path)
23
- conn.execute(
24
- """
24
+ conn.execute("""
25
25
  CREATE TABLE IF NOT EXISTS schema_migrations (
26
26
  id INTEGER PRIMARY KEY AUTOINCREMENT,
27
27
  version TEXT UNIQUE NOT NULL,
28
28
  name TEXT NOT NULL,
29
29
  applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
30
30
  )
31
- """
32
- )
31
+ """)
33
32
  conn.commit()
34
33
  conn.close()
35
34
 
@@ -199,13 +198,11 @@ class MigrationManager:
199
198
  if applied:
200
199
  print("✅ Applied:")
201
200
  conn = sqlite3.connect(self.db_path)
202
- cursor = conn.execute(
203
- """
201
+ cursor = conn.execute("""
204
202
  SELECT version, name, applied_at
205
203
  FROM schema_migrations
206
204
  ORDER BY version
207
- """
208
- )
205
+ """)
209
206
  for row in cursor.fetchall():
210
207
  print(f" [{row[0]}] {row[1]} (applied: {row[2]})")
211
208
  conn.close()
@@ -5,8 +5,8 @@ Functions for managing Metasploit Framework session records in the database.
5
5
  """
6
6
 
7
7
  import logging
8
- from typing import Optional, List, Dict, Any
9
8
  from datetime import datetime
9
+ from typing import Any, Dict, List, Optional
10
10
 
11
11
  logger = logging.getLogger(__name__)
12
12
 
souleyez/storage/osint.py CHANGED
@@ -2,7 +2,9 @@
2
2
  """
3
3
  souleyez.storage.osint - OSINT data management
4
4
  """
5
- from typing import List, Dict, Any, Optional
5
+
6
+ from typing import Any, Dict, List, Optional
7
+
6
8
  from .database import get_db
7
9
 
8
10
 
@@ -2,11 +2,12 @@
2
2
  AI-powered recommendation engine for deliverables.
3
3
  """
4
4
 
5
- from typing import Dict, List, Optional
6
5
  from datetime import datetime, timedelta
6
+ from typing import Dict, List, Optional
7
+
7
8
  from .database import get_db
8
- from .deliverables import DeliverableManager
9
9
  from .deliverable_evidence import EvidenceManager
10
+ from .deliverables import DeliverableManager
10
11
  from .timeline_tracker import TimelineTracker
11
12
 
12
13
 
@@ -6,7 +6,8 @@ import os
6
6
  import shutil
7
7
  import time
8
8
  from pathlib import Path
9
- from typing import List, Dict, Optional
9
+ from typing import Dict, List, Optional
10
+
10
11
  from .database import get_db
11
12
 
12
13
  SCREENSHOTS_DIR = Path("~/.souleyez/screenshots").expanduser()
@@ -2,7 +2,9 @@
2
2
  """
3
3
  souleyez.storage.smb_shares - SMB shares storage and retrieval
4
4
  """
5
- from typing import Dict, List, Any, Optional
5
+
6
+ from typing import Any, Dict, List, Optional
7
+
6
8
  from .database import get_db
7
9
 
8
10
 
@@ -4,12 +4,14 @@ souleyez.storage.sqlmap_data
4
4
 
5
5
  Storage manager for SQLMap SQL injection discoveries (databases, tables, columns, dumped data)
6
6
  """
7
- import sqlite3
7
+
8
8
  import json
9
- from typing import Optional, List, Dict, Any
10
- from souleyez.storage.database import Database
11
- from souleyez.storage.crypto import get_crypto_manager
9
+ import sqlite3
10
+ from typing import Any, Dict, List, Optional
11
+
12
12
  from souleyez.log_config import get_logger
13
+ from souleyez.storage.crypto import get_crypto_manager
14
+ from souleyez.storage.database import Database
13
15
 
14
16
  logger = get_logger(__name__)
15
17
 
@@ -2,10 +2,11 @@
2
2
  Team collaboration features for deliverables.
3
3
  """
4
4
 
5
- from typing import Dict, List, Optional
5
+ import os
6
6
  from datetime import datetime
7
+ from typing import Dict, List, Optional
8
+
7
9
  from .database import get_db
8
- import os
9
10
 
10
11
 
11
12
  class TeamCollaboration:
@@ -2,8 +2,9 @@
2
2
  Timeline tracking and velocity calculations for deliverables.
3
3
  """
4
4
 
5
- from typing import Dict, List, Optional
6
5
  from datetime import datetime, timedelta
6
+ from typing import Dict, List, Optional
7
+
7
8
  from .database import get_db
8
9
 
9
10
 
@@ -5,9 +5,11 @@ souleyez.storage.wazuh_vulns - Wazuh vulnerabilities database operations
5
5
  Stores vulnerabilities discovered by Wazuh agents for gap analysis
6
6
  between passive (agent-based) and active (scan-based) detection.
7
7
  """
8
+
8
9
  import json
9
10
  from datetime import datetime
10
- from typing import List, Dict, Any, Optional
11
+ from typing import Any, Dict, List, Optional
12
+
11
13
  from .database import get_db
12
14
 
13
15
 
@@ -2,7 +2,9 @@
2
2
  """
3
3
  souleyez.storage.web_paths - Web paths/directories management
4
4
  """
5
- from typing import List, Dict, Any, Optional
5
+
6
+ from typing import Any, Dict, List, Optional
7
+
6
8
  from .database import get_db
7
9
 
8
10
 
@@ -2,9 +2,11 @@
2
2
  """
3
3
  souleyez.testing.credential_tester - Test credentials against services
4
4
  """
5
+
5
6
  import socket
6
7
  import subprocess
7
8
  from typing import Dict, List
9
+
8
10
  import click
9
11
 
10
12
 
souleyez/ui/__init__.py CHANGED
@@ -2,7 +2,8 @@
2
2
  """
3
3
  souleyez.ui - User interface components
4
4
  """
5
- from .interactive import run_interactive_menu
5
+
6
6
  from .dashboard import run_dashboard
7
+ from .interactive import run_interactive_menu
7
8
 
8
9
  __all__ = ["run_interactive_menu", "run_dashboard"]
souleyez/ui/ai_quotes.py CHANGED
@@ -5,8 +5,8 @@ souleyez.ui.ai_quotes - Entertaining quotes for AI generation progress
5
5
  Displays rotating quotes during long AI operations to keep users entertained
6
6
  and informed that the system is still working.
7
7
  """
8
- import random
9
8
 
9
+ import random
10
10
 
11
11
  # Hacker humor and pentesting jokes
12
12
  HACKER_HUMOR = [