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/utils/tool_checker.py
CHANGED
|
@@ -8,11 +8,11 @@ Supports both Kali Linux (apt) and Ubuntu (mixed methods).
|
|
|
8
8
|
Includes version checking for tools that require specific versions.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
import shutil
|
|
12
11
|
import os
|
|
13
12
|
import re
|
|
13
|
+
import shutil
|
|
14
14
|
import subprocess
|
|
15
|
-
from typing import Dict, List,
|
|
15
|
+
from typing import Dict, List, Optional, Tuple
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def parse_version(version_str: str) -> Tuple[int, ...]:
|
|
@@ -150,6 +150,37 @@ EXTERNAL_TOOLS = {
|
|
|
150
150
|
"install_method": "apt",
|
|
151
151
|
"description": "Python package installer (required for many tools)",
|
|
152
152
|
},
|
|
153
|
+
"sshpass": {
|
|
154
|
+
"command": "sshpass",
|
|
155
|
+
"install_kali": "sudo apt install sshpass",
|
|
156
|
+
"install_ubuntu": "sudo apt install sshpass",
|
|
157
|
+
"install_method": "apt",
|
|
158
|
+
"description": "SSH password authentication (for shell spawning)",
|
|
159
|
+
},
|
|
160
|
+
"smbclient": {
|
|
161
|
+
"command": "smbclient",
|
|
162
|
+
"install_kali": "sudo apt install smbclient",
|
|
163
|
+
"install_ubuntu": "sudo apt install smbclient",
|
|
164
|
+
"install_method": "apt",
|
|
165
|
+
"description": "SMB/CIFS client (for share enumeration)",
|
|
166
|
+
},
|
|
167
|
+
"unzip": {
|
|
168
|
+
"command": "unzip",
|
|
169
|
+
"install_kali": "sudo apt install unzip",
|
|
170
|
+
"install_ubuntu": "sudo apt install unzip",
|
|
171
|
+
"install_method": "apt",
|
|
172
|
+
"description": "Archive extraction (required for some tool installs)",
|
|
173
|
+
},
|
|
174
|
+
"chromium": {
|
|
175
|
+
"command": "chromium-browser",
|
|
176
|
+
"alt_commands": [
|
|
177
|
+
"chromium"
|
|
178
|
+
], # Kali uses chromium, Ubuntu uses Playwright (snap chromium breaks headless on ARM)
|
|
179
|
+
"install_kali": "sudo apt install chromium",
|
|
180
|
+
"install_ubuntu": "pip install playwright && playwright install chromium && sudo ln -sf $HOME/.cache/ms-playwright/chromium-*/chrome-linux/chrome /usr/local/bin/chromium",
|
|
181
|
+
"install_method": "kali_only",
|
|
182
|
+
"description": "Headless browser (required for katana web crawling)",
|
|
183
|
+
},
|
|
153
184
|
},
|
|
154
185
|
"reconnaissance": {
|
|
155
186
|
"nmap": {
|
|
@@ -305,13 +336,12 @@ EXTERNAL_TOOLS = {
|
|
|
305
336
|
"install_method": "kali_only",
|
|
306
337
|
"description": "SMB share enumeration tool",
|
|
307
338
|
"known_issues": "All versions have pickling bug with impacket. Use netexec instead.",
|
|
308
|
-
"optional": True,
|
|
309
339
|
},
|
|
310
340
|
"netexec": {
|
|
311
341
|
"command": "nxc",
|
|
312
342
|
"install_kali": "sudo apt install netexec",
|
|
313
343
|
"install_ubuntu": "pipx install git+https://github.com/Pennyw0rth/NetExec",
|
|
314
|
-
"install_method": "
|
|
344
|
+
"install_method": "pipx",
|
|
315
345
|
"description": "Swiss army knife for pentesting Windows/AD (formerly CrackMapExec)",
|
|
316
346
|
},
|
|
317
347
|
"impacket-scripts": {
|
|
@@ -319,14 +349,23 @@ EXTERNAL_TOOLS = {
|
|
|
319
349
|
"alt_commands": ["impacket-GetNPUsers", "GetNPUsers"],
|
|
320
350
|
"install_kali": "sudo apt install python3-impacket",
|
|
321
351
|
"install_ubuntu": "pipx install impacket",
|
|
322
|
-
"install_method": "
|
|
352
|
+
"install_method": "pipx",
|
|
323
353
|
"description": "Collection of Python classes for network protocols",
|
|
324
354
|
},
|
|
355
|
+
"gpp-decrypt": {
|
|
356
|
+
"command": "gpp-decrypt",
|
|
357
|
+
"install_kali": "sudo apt install gpp-decrypt",
|
|
358
|
+
"install_ubuntu": "pip install pycryptodome",
|
|
359
|
+
"install_method": "kali_only",
|
|
360
|
+
"description": "Decrypt Group Policy Preferences (GPP) passwords",
|
|
361
|
+
"note": "On Ubuntu, pycryptodome provides Python fallback for GPP decryption",
|
|
362
|
+
"check_ubuntu": "python3 -c 'import Crypto'",
|
|
363
|
+
},
|
|
325
364
|
"bloodhound": {
|
|
326
365
|
"command": "bloodhound-python",
|
|
327
366
|
"install_kali": "sudo apt install bloodhound.py",
|
|
328
367
|
"install_ubuntu": "pipx install bloodhound",
|
|
329
|
-
"install_method": "
|
|
368
|
+
"install_method": "pipx",
|
|
330
369
|
"description": "Active Directory relationship mapper",
|
|
331
370
|
},
|
|
332
371
|
"responder": {
|
|
@@ -489,14 +528,28 @@ def check_all_tools() -> Dict[str, Dict[str, bool]]:
|
|
|
489
528
|
}
|
|
490
529
|
"""
|
|
491
530
|
results = {}
|
|
531
|
+
distro = detect_distro()
|
|
492
532
|
|
|
493
533
|
for category, tools in EXTERNAL_TOOLS.items():
|
|
494
534
|
results[category] = {}
|
|
495
535
|
for tool_name, tool_info in tools.items():
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
536
|
+
# Check for custom Ubuntu detection command
|
|
537
|
+
if distro == "ubuntu" and "check_ubuntu" in tool_info:
|
|
538
|
+
try:
|
|
539
|
+
subprocess.run(
|
|
540
|
+
tool_info["check_ubuntu"],
|
|
541
|
+
shell=True,
|
|
542
|
+
check=True,
|
|
543
|
+
capture_output=True,
|
|
544
|
+
)
|
|
545
|
+
results[category][tool_name] = True
|
|
546
|
+
except subprocess.CalledProcessError:
|
|
547
|
+
results[category][tool_name] = False
|
|
548
|
+
else:
|
|
549
|
+
alt_commands = tool_info.get("alt_commands")
|
|
550
|
+
results[category][tool_name] = check_tool(
|
|
551
|
+
tool_info["command"], alt_commands
|
|
552
|
+
)
|
|
500
553
|
|
|
501
554
|
return results
|
|
502
555
|
|
|
@@ -509,13 +562,19 @@ def get_tool_stats() -> Tuple[int, int]:
|
|
|
509
562
|
(installed_count, total_count)
|
|
510
563
|
"""
|
|
511
564
|
status = check_all_tools()
|
|
512
|
-
installed =
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
for
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
565
|
+
installed = 0
|
|
566
|
+
total = 0
|
|
567
|
+
for category, tools in EXTERNAL_TOOLS.items():
|
|
568
|
+
for tool_name, tool_info in tools.items():
|
|
569
|
+
# Skip optional tools that aren't installed
|
|
570
|
+
is_optional = tool_info.get("optional", False)
|
|
571
|
+
is_installed = status[category][tool_name]
|
|
572
|
+
if is_installed:
|
|
573
|
+
installed += 1
|
|
574
|
+
total += 1
|
|
575
|
+
elif not is_optional:
|
|
576
|
+
# Only count non-optional missing tools
|
|
577
|
+
total += 1
|
|
519
578
|
return installed, total
|
|
520
579
|
|
|
521
580
|
|
|
@@ -547,6 +606,9 @@ def get_missing_tools(distro: Optional[str] = None) -> List[Dict]:
|
|
|
547
606
|
for category, tools in EXTERNAL_TOOLS.items():
|
|
548
607
|
for tool_name, tool_info in tools.items():
|
|
549
608
|
if not status[category][tool_name]:
|
|
609
|
+
# Skip optional tools from missing list
|
|
610
|
+
if tool_info.get("optional", False):
|
|
611
|
+
continue
|
|
550
612
|
missing.append(
|
|
551
613
|
{
|
|
552
614
|
"name": tool_name,
|
|
@@ -593,6 +655,22 @@ def check_tool_version(tool_info: dict) -> Dict[str, any]:
|
|
|
593
655
|
"actual_command": None,
|
|
594
656
|
}
|
|
595
657
|
|
|
658
|
+
# Check for custom Ubuntu detection command
|
|
659
|
+
distro = detect_distro()
|
|
660
|
+
if distro == "ubuntu" and "check_ubuntu" in tool_info:
|
|
661
|
+
try:
|
|
662
|
+
subprocess.run(
|
|
663
|
+
tool_info["check_ubuntu"],
|
|
664
|
+
shell=True,
|
|
665
|
+
check=True,
|
|
666
|
+
capture_output=True,
|
|
667
|
+
)
|
|
668
|
+
result["installed"] = True
|
|
669
|
+
result["actual_command"] = tool_info["check_ubuntu"]
|
|
670
|
+
return result
|
|
671
|
+
except subprocess.CalledProcessError:
|
|
672
|
+
return result
|
|
673
|
+
|
|
596
674
|
# Find which command is actually installed (primary or alt)
|
|
597
675
|
actual_cmd = find_tool_command(command, alt_commands)
|
|
598
676
|
if not actual_cmd:
|
souleyez/utils.py
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
|
|
2
|
+
import ipaddress
|
|
3
3
|
import json
|
|
4
|
+
import platform
|
|
5
|
+
import re
|
|
4
6
|
import shutil
|
|
5
7
|
import subprocess
|
|
6
|
-
import
|
|
7
|
-
import platform
|
|
8
|
-
import ipaddress
|
|
8
|
+
from pathlib import Path
|
|
9
9
|
|
|
10
10
|
APP_DIR = Path.home() / ".souleyez"
|
|
11
11
|
SCANS_DIR = APP_DIR / "scans"
|
souleyez/wordlists.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.9
|
|
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>
|