souleyez 3.0.0__py3-none-any.whl → 3.0.9__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.
Potentially problematic release.
This version of souleyez might be problematic. Click here for more details.
- souleyez/__init__.py +1 -1
- souleyez/ai/__init__.py +7 -7
- souleyez/ai/action_mapper.py +3 -2
- souleyez/ai/chain_advisor.py +2 -1
- souleyez/ai/claude_provider.py +2 -2
- souleyez/ai/context_builder.py +4 -2
- souleyez/ai/executor.py +9 -6
- souleyez/ai/feedback_handler.py +4 -2
- souleyez/ai/llm_provider.py +2 -2
- souleyez/ai/ollama_provider.py +2 -2
- souleyez/ai/ollama_service.py +10 -26
- souleyez/ai/path_scorer.py +2 -1
- souleyez/ai/recommender.py +6 -4
- souleyez/ai/report_context.py +2 -2
- souleyez/ai/report_service.py +5 -5
- souleyez/ai/result_parser.py +3 -2
- souleyez/ai/safety.py +5 -2
- souleyez/auth/__init__.py +6 -6
- souleyez/auth/audit.py +2 -2
- souleyez/auth/engagement_access.py +5 -7
- souleyez/auth/permissions.py +1 -1
- souleyez/auth/session_manager.py +5 -5
- souleyez/auth/user_manager.py +4 -5
- souleyez/commands/audit.py +6 -5
- souleyez/commands/auth.py +6 -5
- souleyez/commands/deliverables.py +2 -3
- souleyez/commands/engagement.py +3 -3
- souleyez/commands/license.py +3 -2
- souleyez/commands/screenshots.py +5 -4
- souleyez/commands/user.py +10 -8
- souleyez/config.py +4 -2
- souleyez/core/credential_tester.py +4 -2
- souleyez/core/cve_mappings.py +2 -1
- souleyez/core/cve_matcher.py +2 -1
- souleyez/core/msf_auto_mapper.py +2 -0
- souleyez/core/msf_chain_engine.py +3 -1
- souleyez/core/msf_database.py +7 -13
- souleyez/core/msf_integration.py +2 -2
- souleyez/core/msf_rpc_client.py +3 -2
- souleyez/core/msf_rpc_manager.py +4 -4
- souleyez/core/msf_sync_manager.py +7 -7
- souleyez/core/network_utils.py +1 -1
- souleyez/core/parser_handler.py +2 -1
- souleyez/core/pending_chains.py +4 -3
- souleyez/core/templates.py +5 -2
- souleyez/core/tool_chaining.py +101 -70
- souleyez/core/version_utils.py +1 -0
- souleyez/core/vuln_correlation.py +3 -2
- souleyez/core/web_utils.py +2 -1
- souleyez/detection/__init__.py +1 -1
- souleyez/detection/attack_signatures.py +1 -1
- souleyez/detection/mitre_mappings.py +1 -2
- souleyez/detection/validator.py +5 -4
- souleyez/devtools.py +4 -2
- souleyez/docs/README.md +2 -2
- souleyez/engine/background.py +168 -7
- souleyez/engine/base.py +2 -1
- souleyez/engine/loader.py +4 -2
- souleyez/engine/log_sanitizer.py +1 -0
- souleyez/engine/manager.py +3 -1
- souleyez/engine/result_handler.py +50 -67
- souleyez/engine/worker_manager.py +6 -4
- souleyez/export/evidence_bundle.py +1 -0
- souleyez/handlers/base.py +1 -0
- souleyez/handlers/bash_handler.py +1 -0
- souleyez/handlers/bloodhound_handler.py +1 -0
- souleyez/handlers/certipy_handler.py +1 -0
- souleyez/handlers/crackmapexec_handler.py +2 -20
- souleyez/handlers/dnsrecon_handler.py +2 -1
- souleyez/handlers/enum4linux_handler.py +65 -37
- souleyez/handlers/evil_winrm_handler.py +1 -0
- souleyez/handlers/ffuf_handler.py +3 -1
- souleyez/handlers/gobuster_handler.py +7 -6
- souleyez/handlers/gpp_extract_handler.py +1 -0
- souleyez/handlers/hashcat_handler.py +1 -0
- souleyez/handlers/hydra_handler.py +5 -2
- souleyez/handlers/impacket_getuserspns_handler.py +1 -0
- souleyez/handlers/impacket_psexec_handler.py +1 -0
- souleyez/handlers/impacket_secretsdump_handler.py +1 -0
- souleyez/handlers/john_handler.py +1 -0
- souleyez/handlers/katana_handler.py +39 -2
- souleyez/handlers/kerbrute_handler.py +1 -0
- souleyez/handlers/ldapsearch_handler.py +90 -17
- souleyez/handlers/lfi_extract_handler.py +1 -0
- souleyez/handlers/msf_auxiliary_handler.py +1 -0
- souleyez/handlers/msf_exploit_handler.py +1 -0
- souleyez/handlers/nikto_handler.py +2 -1
- souleyez/handlers/nmap_handler.py +2 -1
- souleyez/handlers/nuclei_handler.py +2 -1
- souleyez/handlers/nxc_handler.py +3 -18
- souleyez/handlers/rdp_sec_check_handler.py +1 -0
- souleyez/handlers/registry.py +1 -0
- souleyez/handlers/responder_handler.py +1 -0
- souleyez/handlers/service_explorer_handler.py +2 -1
- souleyez/handlers/smbclient_handler.py +1 -0
- souleyez/handlers/smbmap_handler.py +3 -2
- souleyez/handlers/sqlmap_handler.py +6 -4
- souleyez/handlers/theharvester_handler.py +2 -1
- souleyez/handlers/web_login_test_handler.py +1 -0
- souleyez/handlers/whois_handler.py +3 -2
- souleyez/handlers/wpscan_handler.py +2 -1
- souleyez/history.py +4 -3
- souleyez/importers/msf_importer.py +5 -3
- souleyez/importers/smart_importer.py +6 -4
- souleyez/integrations/siem/__init__.py +6 -6
- souleyez/integrations/siem/base.py +1 -1
- souleyez/integrations/siem/elastic.py +3 -3
- souleyez/integrations/siem/factory.py +1 -2
- souleyez/integrations/siem/googlesecops.py +4 -4
- souleyez/integrations/siem/rule_mappings/wazuh_rules.py +1 -1
- souleyez/integrations/siem/sentinel.py +3 -3
- souleyez/integrations/siem/splunk.py +3 -3
- souleyez/integrations/siem/wazuh.py +4 -4
- souleyez/integrations/wazuh/__init__.py +1 -1
- souleyez/integrations/wazuh/client.py +3 -2
- souleyez/integrations/wazuh/config.py +3 -2
- souleyez/integrations/wazuh/host_mapper.py +3 -1
- souleyez/integrations/wazuh/sync.py +4 -1
- souleyez/intelligence/__init__.py +1 -1
- souleyez/intelligence/correlation_analyzer.py +6 -5
- souleyez/intelligence/exploit_knowledge.py +4 -4
- souleyez/intelligence/exploit_suggestions.py +4 -3
- souleyez/intelligence/gap_analyzer.py +5 -3
- souleyez/intelligence/gap_detector.py +2 -0
- souleyez/intelligence/sensitive_tables.py +1 -1
- souleyez/intelligence/service_parser.py +1 -0
- souleyez/intelligence/surface_analyzer.py +9 -9
- souleyez/intelligence/target_parser.py +1 -0
- souleyez/licensing/__init__.py +3 -3
- souleyez/main.py +25 -18
- souleyez/migrations/fix_job_counter.py +2 -1
- souleyez/parsers/bloodhound_parser.py +1 -0
- souleyez/parsers/crackmapexec_parser.py +2 -1
- souleyez/parsers/dalfox_parser.py +3 -2
- souleyez/parsers/dnsrecon_parser.py +2 -1
- souleyez/parsers/enum4linux_parser.py +2 -1
- souleyez/parsers/ffuf_parser.py +2 -1
- souleyez/parsers/gobuster_parser.py +2 -1
- souleyez/parsers/hashcat_parser.py +3 -2
- souleyez/parsers/http_fingerprint_parser.py +2 -1
- souleyez/parsers/hydra_parser.py +2 -1
- souleyez/parsers/impacket_parser.py +2 -1
- souleyez/parsers/john_parser.py +4 -3
- souleyez/parsers/katana_parser.py +134 -2
- souleyez/parsers/msf_parser.py +2 -1
- souleyez/parsers/nikto_parser.py +2 -1
- souleyez/parsers/nmap_parser.py +14 -3
- souleyez/parsers/nuclei_parser.py +3 -2
- souleyez/parsers/responder_parser.py +1 -0
- souleyez/parsers/searchsploit_parser.py +3 -2
- souleyez/parsers/service_explorer_parser.py +1 -0
- souleyez/parsers/smbmap_parser.py +2 -1
- souleyez/parsers/sqlmap_parser.py +36 -2
- souleyez/parsers/theharvester_parser.py +2 -1
- souleyez/parsers/whois_parser.py +2 -1
- souleyez/parsers/wpscan_parser.py +3 -2
- souleyez/plugins/afp.py +3 -1
- souleyez/plugins/afp_brute.py +3 -1
- souleyez/plugins/ard.py +3 -1
- souleyez/plugins/bloodhound.py +3 -2
- souleyez/plugins/certipy.py +1 -0
- souleyez/plugins/crackmapexec.py +11 -7
- souleyez/plugins/dalfox.py +5 -2
- souleyez/plugins/dns_hijack.py +3 -1
- souleyez/plugins/dnsrecon.py +3 -1
- souleyez/plugins/enum4linux.py +3 -1
- souleyez/plugins/evil_winrm.py +1 -0
- souleyez/plugins/ffuf.py +3 -1
- souleyez/plugins/firmware_extract.py +3 -2
- souleyez/plugins/gobuster.py +6 -3
- souleyez/plugins/gpp_extract.py +1 -0
- souleyez/plugins/hashcat.py +2 -1
- souleyez/plugins/http_fingerprint.py +57 -7
- souleyez/plugins/hydra.py +5 -3
- souleyez/plugins/impacket_common.py +40 -0
- souleyez/plugins/impacket_getnpusers.py +19 -2
- souleyez/plugins/impacket_getuserspns.py +158 -0
- souleyez/plugins/impacket_psexec.py +19 -2
- souleyez/plugins/impacket_secretsdump.py +19 -2
- souleyez/plugins/impacket_smbclient.py +19 -2
- souleyez/plugins/john.py +2 -1
- souleyez/plugins/katana.py +48 -6
- souleyez/plugins/kerbrute.py +1 -0
- souleyez/plugins/lfi_extract.py +1 -0
- souleyez/plugins/macos_ssh.py +3 -1
- souleyez/plugins/mdns.py +3 -1
- souleyez/plugins/msf_auxiliary.py +3 -2
- souleyez/plugins/msf_exploit.py +6 -5
- souleyez/plugins/nikto.py +5 -2
- souleyez/plugins/nmap.py +6 -4
- souleyez/plugins/nuclei.py +3 -1
- souleyez/plugins/nxc.py +1 -0
- souleyez/plugins/plugin_base.py +3 -2
- souleyez/plugins/plugin_template.py +3 -2
- souleyez/plugins/rdp_sec_check.py +1 -0
- souleyez/plugins/responder.py +2 -1
- souleyez/plugins/router_http_brute.py +3 -1
- souleyez/plugins/router_ssh_brute.py +3 -1
- souleyez/plugins/router_telnet_brute.py +3 -1
- souleyez/plugins/routersploit.py +5 -3
- souleyez/plugins/routersploit_exploit.py +5 -3
- souleyez/plugins/searchsploit.py +1 -0
- souleyez/plugins/service_explorer.py +2 -1
- souleyez/plugins/smbmap.py +3 -1
- souleyez/plugins/smbpasswd.py +1 -0
- souleyez/plugins/sqlmap.py +3 -1
- souleyez/plugins/theharvester.py +3 -1
- souleyez/plugins/tr069.py +3 -1
- souleyez/plugins/upnp.py +3 -1
- souleyez/plugins/upnp_abuse.py +4 -2
- souleyez/plugins/vnc_access.py +4 -2
- souleyez/plugins/vnc_brute.py +3 -1
- souleyez/plugins/web_login_test.py +1 -0
- souleyez/plugins/whois.py +3 -1
- souleyez/plugins/wpscan.py +3 -1
- souleyez/reporting/attack_chain.py +2 -1
- souleyez/reporting/charts.py +1 -0
- souleyez/reporting/compliance_mappings.py +1 -0
- souleyez/reporting/detection_report.py +10 -10
- souleyez/reporting/formatters.py +7 -12
- souleyez/reporting/generator.py +34 -46
- souleyez/reporting/metrics.py +2 -1
- souleyez/scanner.py +6 -3
- souleyez/security/__init__.py +7 -5
- souleyez/security/scope_validator.py +5 -4
- souleyez/security.py +5 -2
- souleyez/storage/credentials.py +14 -19
- souleyez/storage/crypto.py +7 -4
- souleyez/storage/database.py +6 -6
- souleyez/storage/db.py +8 -8
- souleyez/storage/deliverable_evidence.py +2 -1
- souleyez/storage/deliverable_exporter.py +3 -2
- souleyez/storage/deliverable_templates.py +2 -1
- souleyez/storage/deliverables.py +2 -1
- souleyez/storage/engagements.py +6 -4
- souleyez/storage/evidence.py +5 -4
- souleyez/storage/execution_log.py +4 -2
- souleyez/storage/exploit_attempts.py +3 -2
- souleyez/storage/exploits.py +3 -1
- souleyez/storage/findings.py +3 -1
- souleyez/storage/hosts.py +5 -2
- souleyez/storage/migrate_to_engagements.py +14 -24
- souleyez/storage/migrations/_001_add_credential_enhancements.py +12 -21
- souleyez/storage/migrations/_003_add_execution_log.py +8 -13
- souleyez/storage/migrations/_005_screenshots.py +2 -4
- souleyez/storage/migrations/_006_deliverables.py +2 -4
- souleyez/storage/migrations/_007_deliverable_templates.py +4 -8
- souleyez/storage/migrations/_008_add_nuclei_table.py +2 -4
- souleyez/storage/migrations/_010_evidence_linking.py +6 -12
- souleyez/storage/migrations/_012_team_collaboration.py +12 -24
- souleyez/storage/migrations/_013_add_host_tags.py +2 -4
- souleyez/storage/migrations/_014_exploit_attempts.py +10 -20
- souleyez/storage/migrations/_015_add_mac_os_fields.py +4 -8
- souleyez/storage/migrations/_016_add_domain_field.py +2 -4
- souleyez/storage/migrations/_017_msf_sessions.py +8 -16
- souleyez/storage/migrations/_018_add_osint_target.py +4 -8
- souleyez/storage/migrations/_019_add_engagement_type.py +4 -8
- souleyez/storage/migrations/_020_add_rbac.py +9 -17
- souleyez/storage/migrations/_021_wazuh_integration.py +4 -8
- souleyez/storage/migrations/_023_fix_detection_results_fk.py +2 -4
- souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +4 -8
- souleyez/storage/migrations/_026_add_engagement_scope.py +4 -8
- souleyez/storage/migrations/_027_multi_siem_persistence.py +8 -16
- souleyez/storage/migrations/__init__.py +1 -4
- souleyez/storage/migrations/migration_manager.py +6 -9
- souleyez/storage/msf_sessions.py +1 -1
- souleyez/storage/osint.py +3 -1
- souleyez/storage/recommendation_engine.py +3 -2
- souleyez/storage/screenshots.py +2 -1
- souleyez/storage/smb_shares.py +3 -1
- souleyez/storage/sqlmap_data.py +6 -4
- souleyez/storage/team_collaboration.py +3 -2
- souleyez/storage/timeline_tracker.py +2 -1
- souleyez/storage/wazuh_vulns.py +3 -1
- souleyez/storage/web_paths.py +3 -1
- souleyez/testing/credential_tester.py +2 -0
- souleyez/ui/__init__.py +2 -1
- souleyez/ui/ai_quotes.py +1 -1
- souleyez/ui/attack_surface.py +50 -28
- souleyez/ui/chain_rules_view.py +6 -3
- souleyez/ui/correlation_view.py +3 -2
- souleyez/ui/dashboard.py +85 -139
- souleyez/ui/deliverables_view.py +1 -1
- souleyez/ui/design_system.py +5 -3
- souleyez/ui/errors.py +3 -1
- souleyez/ui/evidence_linking_view.py +2 -1
- souleyez/ui/evidence_vault.py +11 -6
- souleyez/ui/exploit_suggestions_view.py +11 -7
- souleyez/ui/export_view.py +3 -1
- souleyez/ui/gap_analysis_view.py +6 -3
- souleyez/ui/help_system.py +4 -1
- souleyez/ui/intelligence_view.py +7 -3
- souleyez/ui/interactive.py +1280 -558
- souleyez/ui/interactive_selector.py +3 -2
- souleyez/ui/log_formatter.py +1 -0
- souleyez/ui/menu_components.py +3 -1
- souleyez/ui/msf_auxiliary_menu.py +4 -1
- souleyez/ui/pending_chains_view.py +15 -12
- souleyez/ui/progress_indicators.py +5 -2
- souleyez/ui/recommendations_view.py +4 -2
- souleyez/ui/rule_builder.py +4 -1
- souleyez/ui/setup_wizard.py +10 -8
- souleyez/ui/shortcuts.py +1 -1
- souleyez/ui/splunk_gap_analysis_view.py +7 -4
- souleyez/ui/splunk_vulns_view.py +4 -1
- souleyez/ui/team_dashboard.py +7 -5
- souleyez/ui/template_selector.py +2 -1
- souleyez/ui/terminal.py +3 -2
- souleyez/ui/timeline_view.py +2 -1
- souleyez/ui/tool_setup.py +92 -31
- souleyez/ui/tutorial.py +7 -4
- souleyez/ui/tutorial_state.py +3 -2
- souleyez/ui/wazuh_vulns_view.py +5 -2
- souleyez/ui/wordlist_browser.py +4 -3
- souleyez/ui.py +13 -7
- souleyez/utils/tool_checker.py +95 -17
- souleyez/utils.py +4 -4
- souleyez/wordlists.py +1 -0
- {souleyez-3.0.0.dist-info → souleyez-3.0.9.dist-info}/METADATA +1 -1
- souleyez-3.0.9.dist-info/RECORD +445 -0
- souleyez-3.0.0.dist-info/RECORD +0 -443
- {souleyez-3.0.0.dist-info → souleyez-3.0.9.dist-info}/WHEEL +0 -0
- {souleyez-3.0.0.dist-info → souleyez-3.0.9.dist-info}/entry_points.txt +0 -0
- {souleyez-3.0.0.dist-info → souleyez-3.0.9.dist-info}/licenses/LICENSE +0 -0
- {souleyez-3.0.0.dist-info → souleyez-3.0.9.dist-info}/top_level.txt +0 -0
souleyez/config.py
CHANGED
|
@@ -18,11 +18,13 @@ Environment Variable Overrides:
|
|
|
18
18
|
|
|
19
19
|
Example: export SOULEYEZ_DATABASE_PATH=/tmp/test.db
|
|
20
20
|
"""
|
|
21
|
+
|
|
21
22
|
from __future__ import annotations
|
|
22
|
-
|
|
23
|
+
|
|
23
24
|
import json
|
|
24
|
-
import os
|
|
25
25
|
import logging
|
|
26
|
+
import os
|
|
27
|
+
from pathlib import Path
|
|
26
28
|
|
|
27
29
|
CONFIG_PATH = Path.home() / ".souleyez" / "config.json"
|
|
28
30
|
|
|
@@ -4,13 +4,15 @@ souleyez.core.credential_tester
|
|
|
4
4
|
|
|
5
5
|
Test discovered credentials against hosts to find working authentication.
|
|
6
6
|
"""
|
|
7
|
+
|
|
7
8
|
import subprocess
|
|
8
9
|
import time
|
|
9
10
|
from typing import Dict, Optional, Tuple
|
|
11
|
+
|
|
10
12
|
from souleyez.storage.credentials import CredentialsManager
|
|
11
|
-
from souleyez.storage.hosts import HostManager
|
|
12
|
-
from souleyez.storage.findings import FindingsManager
|
|
13
13
|
from souleyez.storage.engagements import EngagementManager
|
|
14
|
+
from souleyez.storage.findings import FindingsManager
|
|
15
|
+
from souleyez.storage.hosts import HostManager
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
class CredentialTester:
|
souleyez/core/cve_mappings.py
CHANGED
|
@@ -5,6 +5,7 @@ souleyez.core.cve_mappings
|
|
|
5
5
|
CVE-to-version database for version-aware tool chaining.
|
|
6
6
|
Maps known CVEs to affected product versions and recommended exploit tools.
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import json
|
|
9
10
|
import logging
|
|
10
11
|
from dataclasses import dataclass, field
|
|
@@ -12,9 +13,9 @@ from pathlib import Path
|
|
|
12
13
|
from typing import Dict, List, Optional
|
|
13
14
|
|
|
14
15
|
from souleyez.core.version_utils import (
|
|
15
|
-
parse_version_spec,
|
|
16
16
|
matches_version,
|
|
17
17
|
normalize_product_name,
|
|
18
|
+
parse_version_spec,
|
|
18
19
|
)
|
|
19
20
|
|
|
20
21
|
logger = logging.getLogger(__name__)
|
souleyez/core/cve_matcher.py
CHANGED
souleyez/core/msf_auto_mapper.py
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
"""
|
|
3
3
|
souleyez.core.msf_chain_engine - Orchestrate progressive MSF attack chains
|
|
4
4
|
"""
|
|
5
|
+
|
|
5
6
|
from typing import Dict, List
|
|
7
|
+
|
|
6
8
|
from souleyez.core.msf_auto_mapper import MSFAutoMapper
|
|
7
|
-
from souleyez.core.msf_integration import
|
|
9
|
+
from souleyez.core.msf_integration import MSFModuleSelector, MSFResourceGenerator
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
class MSFChainEngine:
|
souleyez/core/msf_database.py
CHANGED
|
@@ -7,8 +7,8 @@ credentials, and sessions directly from MSF.
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import logging
|
|
10
|
-
from typing import Optional, List, Dict, Any
|
|
11
10
|
from datetime import datetime
|
|
11
|
+
from typing import Any, Dict, List, Optional
|
|
12
12
|
|
|
13
13
|
try:
|
|
14
14
|
import psycopg2
|
|
@@ -157,14 +157,12 @@ class MSFDatabase:
|
|
|
157
157
|
# or check for schema_migrations to infer version
|
|
158
158
|
with self.conn.cursor(cursor_factory=RealDictCursor) as cur:
|
|
159
159
|
# Check latest schema migration
|
|
160
|
-
cur.execute(
|
|
161
|
-
"""
|
|
160
|
+
cur.execute("""
|
|
162
161
|
SELECT version
|
|
163
162
|
FROM schema_migrations
|
|
164
163
|
ORDER BY version DESC
|
|
165
164
|
LIMIT 1
|
|
166
|
-
"""
|
|
167
|
-
)
|
|
165
|
+
""")
|
|
168
166
|
result = cur.fetchone()
|
|
169
167
|
|
|
170
168
|
if result:
|
|
@@ -209,13 +207,11 @@ class MSFDatabase:
|
|
|
209
207
|
return False
|
|
210
208
|
|
|
211
209
|
# Validate key columns exist in hosts table
|
|
212
|
-
cur.execute(
|
|
213
|
-
"""
|
|
210
|
+
cur.execute("""
|
|
214
211
|
SELECT column_name
|
|
215
212
|
FROM information_schema.columns
|
|
216
213
|
WHERE table_name = 'hosts'
|
|
217
|
-
"""
|
|
218
|
-
)
|
|
214
|
+
""")
|
|
219
215
|
columns = {row[0] for row in cur.fetchall()}
|
|
220
216
|
|
|
221
217
|
required_columns = {"id", "address", "workspace_id"}
|
|
@@ -241,8 +237,7 @@ class MSFDatabase:
|
|
|
241
237
|
"""
|
|
242
238
|
try:
|
|
243
239
|
with self.conn.cursor(cursor_factory=RealDictCursor) as cur:
|
|
244
|
-
cur.execute(
|
|
245
|
-
"""
|
|
240
|
+
cur.execute("""
|
|
246
241
|
SELECT id, name, created_at, updated_at,
|
|
247
242
|
boundary,
|
|
248
243
|
description,
|
|
@@ -250,8 +245,7 @@ class MSFDatabase:
|
|
|
250
245
|
limit_to_network
|
|
251
246
|
FROM workspaces
|
|
252
247
|
ORDER BY name
|
|
253
|
-
"""
|
|
254
|
-
)
|
|
248
|
+
""")
|
|
255
249
|
return [dict(row) for row in cur.fetchall()]
|
|
256
250
|
except Exception as e:
|
|
257
251
|
logger.error(f"Failed to list workspaces: {e}")
|
souleyez/core/msf_integration.py
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"""
|
|
3
3
|
souleyez.core.msf_integration - Metasploit Framework integration utilities
|
|
4
4
|
"""
|
|
5
|
+
|
|
5
6
|
import os
|
|
6
7
|
import re
|
|
7
8
|
import shlex
|
|
8
9
|
import subprocess
|
|
9
|
-
from typing import
|
|
10
|
-
|
|
10
|
+
from typing import Dict, List, Optional, Tuple
|
|
11
11
|
|
|
12
12
|
# CVE Database mapping CVEs to MSF modules
|
|
13
13
|
CVE_DATABASE = {
|
souleyez/core/msf_rpc_client.py
CHANGED
|
@@ -7,10 +7,11 @@ session management, and result tracking.
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
import logging
|
|
10
|
+
import time
|
|
10
11
|
import warnings
|
|
12
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
13
|
+
|
|
11
14
|
import requests
|
|
12
|
-
from typing import Optional, List, Dict, Any, Tuple
|
|
13
|
-
import time
|
|
14
15
|
|
|
15
16
|
# Suppress SSL warnings for self-signed certs (msfrpcd uses self-signed)
|
|
16
17
|
from urllib3.exceptions import InsecureRequestWarning
|
souleyez/core/msf_rpc_manager.py
CHANGED
|
@@ -12,13 +12,13 @@ This is a Pro-only feature. Free users fall back to msfconsole subprocess execut
|
|
|
12
12
|
|
|
13
13
|
import logging
|
|
14
14
|
import os
|
|
15
|
-
import time
|
|
16
|
-
import subprocess
|
|
17
15
|
import shutil
|
|
18
|
-
|
|
16
|
+
import subprocess
|
|
17
|
+
import time
|
|
18
|
+
from typing import Any, Dict, Optional
|
|
19
19
|
|
|
20
|
-
from souleyez.core.msf_rpc_client import MSFRPCClient, MSGPACK_AVAILABLE
|
|
21
20
|
from souleyez import config
|
|
21
|
+
from souleyez.core.msf_rpc_client import MSGPACK_AVAILABLE, MSFRPCClient
|
|
22
22
|
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
24
24
|
|
|
@@ -11,21 +11,21 @@ and SoulEyez, including:
|
|
|
11
11
|
|
|
12
12
|
import logging
|
|
13
13
|
import os
|
|
14
|
-
from pathlib import Path
|
|
15
|
-
from typing import Optional, Dict, Any, List, Tuple
|
|
16
|
-
from datetime import datetime
|
|
17
14
|
import re
|
|
15
|
+
from datetime import datetime
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
18
18
|
|
|
19
19
|
from souleyez.core.msf_database import MSFDatabase, MSFDatabaseSchemaError
|
|
20
20
|
from souleyez.core.msf_rpc_client import MSFRPCClient
|
|
21
|
-
from souleyez.storage.hosts import HostManager
|
|
22
|
-
from souleyez.storage.findings import FindingsManager
|
|
23
21
|
from souleyez.storage.credentials import CredentialsManager
|
|
24
22
|
from souleyez.storage.exploit_attempts import record_attempt
|
|
23
|
+
from souleyez.storage.findings import FindingsManager
|
|
24
|
+
from souleyez.storage.hosts import HostManager
|
|
25
25
|
from souleyez.storage.msf_sessions import (
|
|
26
26
|
add_msf_session,
|
|
27
|
-
get_msf_sessions,
|
|
28
27
|
close_msf_session,
|
|
28
|
+
get_msf_sessions,
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
logger = logging.getLogger(__name__)
|
|
@@ -109,7 +109,7 @@ def get_msf_active_sessions_count() -> Optional[int]:
|
|
|
109
109
|
"""
|
|
110
110
|
# Method 1: Try MSF RPC first (most reliable when msfrpcd is running)
|
|
111
111
|
try:
|
|
112
|
-
from souleyez.core.msf_rpc_client import
|
|
112
|
+
from souleyez.core.msf_rpc_client import MSGPACK_AVAILABLE, MSFRPCClient
|
|
113
113
|
|
|
114
114
|
if MSGPACK_AVAILABLE:
|
|
115
115
|
# Try connecting without password first (some setups don't require it)
|
souleyez/core/network_utils.py
CHANGED
|
@@ -5,9 +5,9 @@ Provides functions for detecting VM host (gateway) and validating
|
|
|
5
5
|
that Ollama connections only go to trusted destinations.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
import re
|
|
8
9
|
import socket
|
|
9
10
|
import subprocess
|
|
10
|
-
import re
|
|
11
11
|
from typing import Optional, Tuple
|
|
12
12
|
from urllib.parse import urlparse
|
|
13
13
|
|
souleyez/core/parser_handler.py
CHANGED
|
@@ -4,9 +4,10 @@ souleyez.core.parser_handler
|
|
|
4
4
|
|
|
5
5
|
Centralized parser handling with error recovery and logging.
|
|
6
6
|
"""
|
|
7
|
+
|
|
7
8
|
import logging
|
|
8
|
-
from typing import Dict, Any, Optional
|
|
9
9
|
from pathlib import Path
|
|
10
|
+
from typing import Any, Dict, Optional
|
|
10
11
|
|
|
11
12
|
logger = logging.getLogger(__name__)
|
|
12
13
|
|
souleyez/core/pending_chains.py
CHANGED
|
@@ -6,13 +6,14 @@ Manages chains that require user approval before execution.
|
|
|
6
6
|
This enables "active orchestration" where users review and approve
|
|
7
7
|
suggested follow-up scans instead of auto-executing them.
|
|
8
8
|
"""
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
import json
|
|
11
|
-
import
|
|
11
|
+
import os
|
|
12
12
|
import tempfile
|
|
13
13
|
import threading
|
|
14
|
-
|
|
14
|
+
import time
|
|
15
15
|
from pathlib import Path
|
|
16
|
+
from typing import Any, Dict, List, Optional
|
|
16
17
|
|
|
17
18
|
DATA_DIR = os.path.join(os.path.expanduser("~"), ".souleyez", "data")
|
|
18
19
|
CHAINS_DIR = os.path.join(DATA_DIR, "chains")
|
souleyez/core/templates.py
CHANGED
|
@@ -5,8 +5,9 @@ souleyez.core.templates - Workflow presets for different pentest types
|
|
|
5
5
|
Presets provide recommended tools, scan phases, and tips to help users
|
|
6
6
|
get started quickly with common engagement types.
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
from dataclasses import dataclass, field
|
|
9
|
-
from typing import
|
|
10
|
+
from typing import Any, Dict, List, Optional
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
@dataclass
|
|
@@ -481,8 +482,10 @@ def queue_initial_scan(
|
|
|
481
482
|
|
|
482
483
|
def display_scan_phases_guide(template_id: str, clear_screen: bool = True) -> None:
|
|
483
484
|
"""Display the scan phases guide for a template."""
|
|
484
|
-
import click
|
|
485
485
|
import shutil
|
|
486
|
+
|
|
487
|
+
import click
|
|
488
|
+
|
|
486
489
|
from souleyez.ui.design_system import DesignSystem
|
|
487
490
|
|
|
488
491
|
template = get_template(template_id)
|