souleyez 2.23.0__py3-none-any.whl → 2.27.1__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.
- souleyez/__init__.py +1 -1
- souleyez/assets/__init__.py +1 -0
- souleyez/assets/souleyez-icon.png +0 -0
- souleyez/core/msf_sync_manager.py +15 -5
- souleyez/core/tool_chaining.py +143 -26
- souleyez/docs/README.md +2 -2
- souleyez/docs/user-guide/configuration.md +1 -1
- souleyez/docs/user-guide/installation.md +11 -0
- souleyez/engine/background.py +620 -154
- souleyez/engine/result_handler.py +262 -1
- souleyez/engine/worker_manager.py +98 -2
- souleyez/main.py +103 -4
- souleyez/parsers/crackmapexec_parser.py +101 -43
- souleyez/parsers/dnsrecon_parser.py +50 -35
- souleyez/parsers/enum4linux_parser.py +101 -21
- souleyez/parsers/http_fingerprint_parser.py +319 -0
- souleyez/parsers/hydra_parser.py +56 -5
- souleyez/parsers/impacket_parser.py +123 -44
- souleyez/parsers/john_parser.py +47 -14
- souleyez/parsers/msf_parser.py +20 -5
- souleyez/parsers/nmap_parser.py +48 -27
- souleyez/parsers/smbmap_parser.py +39 -23
- souleyez/parsers/sqlmap_parser.py +18 -9
- souleyez/parsers/theharvester_parser.py +21 -13
- souleyez/plugins/http_fingerprint.py +598 -0
- souleyez/plugins/nuclei.py +41 -17
- souleyez/ui/interactive.py +96 -4
- souleyez/ui/setup_wizard.py +71 -0
- souleyez/ui/tool_setup.py +3 -0
- souleyez/utils/tool_checker.py +42 -2
- {souleyez-2.23.0.dist-info → souleyez-2.27.1.dist-info}/METADATA +20 -3
- {souleyez-2.23.0.dist-info → souleyez-2.27.1.dist-info}/RECORD +36 -32
- {souleyez-2.23.0.dist-info → souleyez-2.27.1.dist-info}/WHEEL +0 -0
- {souleyez-2.23.0.dist-info → souleyez-2.27.1.dist-info}/entry_points.txt +0 -0
- {souleyez-2.23.0.dist-info → souleyez-2.27.1.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.23.0.dist-info → souleyez-2.27.1.dist-info}/top_level.txt +0 -0
souleyez/ui/interactive.py
CHANGED
|
@@ -130,6 +130,63 @@ def render_standard_header(title: str, width: int = None) -> None:
|
|
|
130
130
|
click.echo()
|
|
131
131
|
|
|
132
132
|
|
|
133
|
+
def parse_syslog_description(desc: str) -> str:
|
|
134
|
+
"""
|
|
135
|
+
Extract meaningful message from syslog-formatted descriptions.
|
|
136
|
+
|
|
137
|
+
Syslog format: <timestamp> <host> [timestamp] <program>[pid]: <message>
|
|
138
|
+
Example input: "Jan 8 07:00:05 192.168.1.111 Jan 8 07:00:05 eyez CRON[537281]: pam_unix(cron:session): session closed for user yoda"
|
|
139
|
+
Example output: "CRON: pam_unix(cron:session): session closed for user yoda"
|
|
140
|
+
"""
|
|
141
|
+
import re
|
|
142
|
+
|
|
143
|
+
if not desc:
|
|
144
|
+
return 'No description'
|
|
145
|
+
|
|
146
|
+
# Try to find the actual message after common syslog patterns
|
|
147
|
+
# Pattern 1: Look for process name with PID followed by colon (e.g., "CRON[537281]:")
|
|
148
|
+
pid_match = re.search(r'([A-Za-z_][A-Za-z0-9_-]*)\[(\d+)\]:\s*(.+)$', desc)
|
|
149
|
+
if pid_match:
|
|
150
|
+
process_name = pid_match.group(1)
|
|
151
|
+
message = pid_match.group(3)
|
|
152
|
+
return f"{process_name}: {message}"
|
|
153
|
+
|
|
154
|
+
# Pattern 2: Look for systemd-style messages (e.g., "systemd[1]: Started...")
|
|
155
|
+
systemd_match = re.search(r'(systemd(?:-[a-z]+)?)\[?\d*\]?:\s*(.+)$', desc, re.IGNORECASE)
|
|
156
|
+
if systemd_match:
|
|
157
|
+
return f"{systemd_match.group(1)}: {systemd_match.group(2)}"
|
|
158
|
+
|
|
159
|
+
# Pattern 3: Look for kernel messages
|
|
160
|
+
kernel_match = re.search(r'kernel:\s*(.+)$', desc)
|
|
161
|
+
if kernel_match:
|
|
162
|
+
return f"kernel: {kernel_match.group(1)}"
|
|
163
|
+
|
|
164
|
+
# Pattern 4: Generic - find content after last colon that has substance
|
|
165
|
+
colon_parts = desc.split(': ')
|
|
166
|
+
if len(colon_parts) > 1:
|
|
167
|
+
# Get the meaningful part (usually after the first "process:" pattern)
|
|
168
|
+
for i, part in enumerate(colon_parts):
|
|
169
|
+
# Skip parts that look like timestamps or IPs
|
|
170
|
+
if not re.match(r'^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|\d{1,3}\.\d{1,3}|\d{4}-\d{2})', part):
|
|
171
|
+
# Found something meaningful - join from here
|
|
172
|
+
meaningful = ': '.join(colon_parts[i:])
|
|
173
|
+
if len(meaningful) > 10: # Ensure it's substantial
|
|
174
|
+
return meaningful
|
|
175
|
+
|
|
176
|
+
# Pattern 5: Strip leading timestamp patterns
|
|
177
|
+
# Remove patterns like "Jan 8 07:00:05 192.168.1.111 Jan 8 07:00:05 hostname"
|
|
178
|
+
stripped = re.sub(
|
|
179
|
+
r'^(?:[A-Z][a-z]{2}\s+\d+\s+\d{2}:\d{2}:\d{2}\s+\S+\s*)+',
|
|
180
|
+
'', desc
|
|
181
|
+
).strip()
|
|
182
|
+
|
|
183
|
+
if stripped and len(stripped) > 5:
|
|
184
|
+
return stripped
|
|
185
|
+
|
|
186
|
+
# Fallback: return original if no patterns matched
|
|
187
|
+
return desc
|
|
188
|
+
|
|
189
|
+
|
|
133
190
|
def _show_upgrade_prompt(feature_name: str):
|
|
134
191
|
"""Show upgrade prompt when FREE user tries to access Pro feature."""
|
|
135
192
|
from rich.panel import Panel
|
|
@@ -5345,7 +5402,7 @@ def view_job_detail(job_id: int):
|
|
|
5345
5402
|
|
|
5346
5403
|
# Check if tool has a parser - if yes, hide raw logs by default
|
|
5347
5404
|
tool = job.get('tool', '')
|
|
5348
|
-
has_parser = tool in ['dnsrecon', 'nmap', 'nuclei', 'nikto', 'dalfox', 'theharvester', 'sqlmap', 'ffuf', 'gobuster', 'wpscan', 'crackmapexec', 'hydra', 'whois', 'smbmap', 'enum4linux', 'msf_auxiliary', 'searchsploit']
|
|
5405
|
+
has_parser = tool in ['dnsrecon', 'nmap', 'ard', 'nuclei', 'nikto', 'dalfox', 'theharvester', 'sqlmap', 'ffuf', 'gobuster', 'wpscan', 'crackmapexec', 'hydra', 'whois', 'smbmap', 'enum4linux', 'msf_auxiliary', 'searchsploit']
|
|
5349
5406
|
|
|
5350
5407
|
# Show log file if exists
|
|
5351
5408
|
log_path = job.get('log')
|
|
@@ -5941,7 +5998,9 @@ def view_job_detail(job_id: int):
|
|
|
5941
5998
|
pass
|
|
5942
5999
|
|
|
5943
6000
|
# Parse and display Nmap results if available (only when not showing raw logs)
|
|
5944
|
-
|
|
6001
|
+
# ARD plugin uses nmap under the hood, so include it here
|
|
6002
|
+
nmap_based_tools = ['nmap', 'ard']
|
|
6003
|
+
if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') in ['done', 'completed'] and log_path and os.path.exists(log_path):
|
|
5945
6004
|
try:
|
|
5946
6005
|
from souleyez.parsers.nmap_parser import parse_nmap_output
|
|
5947
6006
|
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
@@ -8898,7 +8957,8 @@ def _view_wazuh_alerts(engagement_id: int):
|
|
|
8898
8957
|
icon = get_level_icon(level)
|
|
8899
8958
|
rule_id = str(alert.get('rule_id', 'N/A'))[:10]
|
|
8900
8959
|
agent_name = alert.get('agent_name', 'N/A')[:15]
|
|
8901
|
-
|
|
8960
|
+
raw_desc = alert.get('description') or 'No description'
|
|
8961
|
+
desc = parse_syslog_description(raw_desc)[:45]
|
|
8902
8962
|
ts = alert.get('timestamp', 'N/A')
|
|
8903
8963
|
if hasattr(ts, 'strftime'):
|
|
8904
8964
|
ts = ts.strftime('%Y-%m-%d %H:%M:%S')
|
|
@@ -9075,7 +9135,8 @@ def _view_alert_detail(alert: dict):
|
|
|
9075
9135
|
|
|
9076
9136
|
# Get values from normalized format first, then fall back to raw_data
|
|
9077
9137
|
rule_id = alert.get('rule_id') or rule.get('id', 'N/A')
|
|
9078
|
-
|
|
9138
|
+
raw_description = alert.get('description') or rule.get('description', 'N/A')
|
|
9139
|
+
description = parse_syslog_description(raw_description)
|
|
9079
9140
|
level = alert.get('level', 0) or rule.get('level', 0)
|
|
9080
9141
|
severity = alert.get('severity', 'info')
|
|
9081
9142
|
|
|
@@ -15790,6 +15851,37 @@ def view_findings(engagement_id: int):
|
|
|
15790
15851
|
summary_parts.append(f"Filters: {', '.join(active_filters)}")
|
|
15791
15852
|
|
|
15792
15853
|
click.echo(" " + " | ".join(summary_parts))
|
|
15854
|
+
|
|
15855
|
+
# Show tool distribution legend
|
|
15856
|
+
if findings:
|
|
15857
|
+
tool_counts = {}
|
|
15858
|
+
for f in findings:
|
|
15859
|
+
tool = f.get('tool') or 'unknown'
|
|
15860
|
+
tool_counts[tool] = tool_counts.get(tool, 0) + 1
|
|
15861
|
+
|
|
15862
|
+
# Sort by count (descending) and format
|
|
15863
|
+
sorted_tools = sorted(tool_counts.items(), key=lambda x: x[1], reverse=True)
|
|
15864
|
+
tool_parts = [f"{tool}({count})" for tool, count in sorted_tools]
|
|
15865
|
+
|
|
15866
|
+
# Display on one or more lines if needed
|
|
15867
|
+
tool_legend = " Tools: " + " | ".join(tool_parts)
|
|
15868
|
+
if len(tool_legend) > width - 4:
|
|
15869
|
+
# Wrap to multiple lines if too long
|
|
15870
|
+
lines = []
|
|
15871
|
+
current_line = " Tools: "
|
|
15872
|
+
for i, part in enumerate(tool_parts):
|
|
15873
|
+
test_line = current_line + part + (" | " if i < len(tool_parts) - 1 else "")
|
|
15874
|
+
if len(test_line) > width - 4 and current_line != " Tools: ":
|
|
15875
|
+
lines.append(current_line.rstrip(" | "))
|
|
15876
|
+
current_line = " " + part + (" | " if i < len(tool_parts) - 1 else "")
|
|
15877
|
+
else:
|
|
15878
|
+
current_line = test_line
|
|
15879
|
+
lines.append(current_line.rstrip(" | "))
|
|
15880
|
+
for line in lines:
|
|
15881
|
+
click.echo(click.style(line, fg='cyan'))
|
|
15882
|
+
else:
|
|
15883
|
+
click.echo(click.style(tool_legend, fg='cyan'))
|
|
15884
|
+
|
|
15793
15885
|
click.echo()
|
|
15794
15886
|
|
|
15795
15887
|
if not findings:
|
souleyez/ui/setup_wizard.py
CHANGED
|
@@ -95,6 +95,74 @@ def _configure_sudoers(tool_name: str, tool_path: str) -> bool:
|
|
|
95
95
|
return False
|
|
96
96
|
|
|
97
97
|
|
|
98
|
+
def _install_desktop_shortcut():
|
|
99
|
+
"""
|
|
100
|
+
Install desktop shortcut for SoulEyez in Applications menu.
|
|
101
|
+
|
|
102
|
+
This runs silently during setup - any errors are ignored to not
|
|
103
|
+
disrupt the setup flow.
|
|
104
|
+
"""
|
|
105
|
+
try:
|
|
106
|
+
applications_dir = Path.home() / '.local' / 'share' / 'applications'
|
|
107
|
+
icons_dir = Path.home() / '.local' / 'share' / 'icons'
|
|
108
|
+
desktop_file = applications_dir / 'souleyez.desktop'
|
|
109
|
+
icon_dest = icons_dir / 'souleyez.png'
|
|
110
|
+
|
|
111
|
+
# Skip if already installed
|
|
112
|
+
if desktop_file.exists():
|
|
113
|
+
return
|
|
114
|
+
|
|
115
|
+
# Create directories
|
|
116
|
+
applications_dir.mkdir(parents=True, exist_ok=True)
|
|
117
|
+
icons_dir.mkdir(parents=True, exist_ok=True)
|
|
118
|
+
|
|
119
|
+
# Find and copy icon
|
|
120
|
+
try:
|
|
121
|
+
# Try importlib.resources first (Python 3.9+)
|
|
122
|
+
try:
|
|
123
|
+
from importlib.resources import files
|
|
124
|
+
icon_source = files('souleyez.assets').joinpath('souleyez-icon.png')
|
|
125
|
+
with open(icon_source, 'rb') as src:
|
|
126
|
+
icon_data = src.read()
|
|
127
|
+
except (ImportError, TypeError, FileNotFoundError):
|
|
128
|
+
# Fallback: find icon relative to this file
|
|
129
|
+
icon_source = Path(__file__).parent.parent / 'assets' / 'souleyez-icon.png'
|
|
130
|
+
with open(icon_source, 'rb') as src:
|
|
131
|
+
icon_data = src.read()
|
|
132
|
+
|
|
133
|
+
with open(icon_dest, 'wb') as dst:
|
|
134
|
+
dst.write(icon_data)
|
|
135
|
+
except Exception:
|
|
136
|
+
icon_dest = "utilities-terminal" # Fallback to system icon
|
|
137
|
+
|
|
138
|
+
# Create .desktop file
|
|
139
|
+
desktop_content = f"""[Desktop Entry]
|
|
140
|
+
Name=SoulEyez
|
|
141
|
+
Comment=AI-Powered Penetration Testing Platform
|
|
142
|
+
Exec=souleyez interactive
|
|
143
|
+
Icon={icon_dest}
|
|
144
|
+
Terminal=true
|
|
145
|
+
Type=Application
|
|
146
|
+
Categories=Security;System;Network;
|
|
147
|
+
Keywords=pentest;security;hacking;nmap;metasploit;
|
|
148
|
+
"""
|
|
149
|
+
|
|
150
|
+
desktop_file.write_text(desktop_content)
|
|
151
|
+
|
|
152
|
+
# Update desktop database (optional)
|
|
153
|
+
try:
|
|
154
|
+
subprocess.run(['update-desktop-database', str(applications_dir)],
|
|
155
|
+
capture_output=True, check=False, timeout=5)
|
|
156
|
+
except Exception:
|
|
157
|
+
pass
|
|
158
|
+
|
|
159
|
+
click.echo(f" {click.style('✓', fg='green')} Desktop shortcut: Added to Applications menu")
|
|
160
|
+
|
|
161
|
+
except Exception:
|
|
162
|
+
# Silently ignore errors - desktop shortcut is nice-to-have
|
|
163
|
+
pass
|
|
164
|
+
|
|
165
|
+
|
|
98
166
|
def _run_tool_installs(
|
|
99
167
|
missing_tools: List[Dict],
|
|
100
168
|
wrong_version_tools: List[Dict],
|
|
@@ -1106,6 +1174,9 @@ def _wizard_summary(encryption_enabled, engagement_info, tool_status, ai_enabled
|
|
|
1106
1174
|
click.echo(" " + click.style("You're ready to start!", bold=True, fg='cyan'))
|
|
1107
1175
|
click.echo()
|
|
1108
1176
|
|
|
1177
|
+
# Install desktop shortcut automatically
|
|
1178
|
+
_install_desktop_shortcut()
|
|
1179
|
+
|
|
1109
1180
|
# Prompt for interactive tutorial
|
|
1110
1181
|
click.echo(" ┌" + "─" * 56 + "┐")
|
|
1111
1182
|
click.echo(" │" + click.style(" Would you like to run the interactive tutorial?", fg='cyan').center(65) + "│")
|
souleyez/ui/tool_setup.py
CHANGED
|
@@ -542,6 +542,9 @@ def run_tool_setup(check_only: bool = False, install_all: bool = False):
|
|
|
542
542
|
|
|
543
543
|
def _run_post_install_tasks(console, distro: str):
|
|
544
544
|
"""Run tasks that should happen after tool installation or when all tools are present."""
|
|
545
|
+
# Ensure PATH is configured in shell rc files
|
|
546
|
+
_add_paths_to_shell_rc()
|
|
547
|
+
|
|
545
548
|
# Configure passwordless sudo for privileged scans
|
|
546
549
|
_configure_sudoers(console)
|
|
547
550
|
|
souleyez/utils/tool_checker.py
CHANGED
|
@@ -721,6 +721,7 @@ def check_msfdb_status() -> Dict[str, any]:
|
|
|
721
721
|
- message: str - Human-readable status message
|
|
722
722
|
"""
|
|
723
723
|
import subprocess
|
|
724
|
+
from pathlib import Path
|
|
724
725
|
|
|
725
726
|
result = {
|
|
726
727
|
'initialized': False,
|
|
@@ -734,6 +735,32 @@ def check_msfdb_status() -> Dict[str, any]:
|
|
|
734
735
|
result['message'] = 'msfdb command not found - Metasploit may not be installed'
|
|
735
736
|
return result
|
|
736
737
|
|
|
738
|
+
# Helper to check if PostgreSQL is running
|
|
739
|
+
def check_postgresql_running() -> bool:
|
|
740
|
+
try:
|
|
741
|
+
proc = subprocess.run(
|
|
742
|
+
['systemctl', 'is-active', 'postgresql'],
|
|
743
|
+
capture_output=True,
|
|
744
|
+
text=True,
|
|
745
|
+
timeout=5
|
|
746
|
+
)
|
|
747
|
+
return proc.returncode == 0 and 'active' in proc.stdout.lower()
|
|
748
|
+
except Exception:
|
|
749
|
+
return False
|
|
750
|
+
|
|
751
|
+
# Helper to check system-wide MSF database config (Kali fallback)
|
|
752
|
+
def check_system_config() -> bool:
|
|
753
|
+
"""Check if system-wide database.yml exists with valid PostgreSQL config."""
|
|
754
|
+
config_path = Path('/usr/share/metasploit-framework/config/database.yml')
|
|
755
|
+
if config_path.exists():
|
|
756
|
+
try:
|
|
757
|
+
content = config_path.read_text()
|
|
758
|
+
# Check for PostgreSQL adapter configuration
|
|
759
|
+
return 'adapter: postgresql' in content and 'database: msf' in content
|
|
760
|
+
except Exception:
|
|
761
|
+
return False
|
|
762
|
+
return False
|
|
763
|
+
|
|
737
764
|
try:
|
|
738
765
|
# Run msfdb status
|
|
739
766
|
proc = subprocess.run(
|
|
@@ -743,10 +770,23 @@ def check_msfdb_status() -> Dict[str, any]:
|
|
|
743
770
|
timeout=10
|
|
744
771
|
)
|
|
745
772
|
output = proc.stdout + proc.stderr
|
|
746
|
-
|
|
747
|
-
# Parse output for status indicators
|
|
748
773
|
output_lower = output.lower()
|
|
749
774
|
|
|
775
|
+
# Check if msfdb requires root (common on Kali)
|
|
776
|
+
if 'run as root' in output_lower or (proc.returncode != 0 and 'error' in output_lower):
|
|
777
|
+
# Fall back to checking system config file and PostgreSQL status
|
|
778
|
+
result['running'] = check_postgresql_running()
|
|
779
|
+
if check_system_config():
|
|
780
|
+
result['initialized'] = True
|
|
781
|
+
if result['running']:
|
|
782
|
+
result['connected'] = True
|
|
783
|
+
result['message'] = 'Database initialized and running'
|
|
784
|
+
else:
|
|
785
|
+
result['message'] = 'Database initialized but PostgreSQL not running - run: sudo systemctl start postgresql'
|
|
786
|
+
else:
|
|
787
|
+
result['message'] = 'Need sudo to verify - run: sudo msfdb status'
|
|
788
|
+
return result
|
|
789
|
+
|
|
750
790
|
# Check if database is initialized
|
|
751
791
|
if 'no database' in output_lower or 'not initialized' in output_lower:
|
|
752
792
|
result['message'] = 'Database not initialized - run: msfdb init'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.27.1
|
|
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>
|
|
@@ -51,6 +51,12 @@ Dynamic: license-file
|
|
|
51
51
|
|
|
52
52
|
# SoulEyez Beta Program
|
|
53
53
|
|
|
54
|
+
[](https://github.com/cyber-soul-security/souleyez/actions/workflows/python-ci.yml)
|
|
55
|
+
[](https://codecov.io/gh/cyber-soul-security/souleyez)
|
|
56
|
+
[](https://www.python.org/downloads/)
|
|
57
|
+
[](https://github.com/psf/black)
|
|
58
|
+
[](https://github.com/PyCQA/bandit)
|
|
59
|
+
|
|
54
60
|
Welcome to the SoulEyez beta! Thank you for helping us test and improve this penetration testing management platform.
|
|
55
61
|
|
|
56
62
|
---
|
|
@@ -72,7 +78,7 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
|
|
|
72
78
|
|
|
73
79
|
> ⚠️ **Important**: Only use SoulEyez on systems you have explicit authorization to test.
|
|
74
80
|
|
|
75
|
-
## Version: 2.
|
|
81
|
+
## Version: 2.27.1
|
|
76
82
|
|
|
77
83
|
### What's Included
|
|
78
84
|
|
|
@@ -110,6 +116,17 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
|
|
|
110
116
|
- **Python**: 3.8 or newer
|
|
111
117
|
- **Storage**: ~500MB for SoulEyez + tools
|
|
112
118
|
|
|
119
|
+
> **🐉 Kali Linux Recommended**
|
|
120
|
+
>
|
|
121
|
+
> SoulEyez performs significantly better on **Kali Linux** than other distributions:
|
|
122
|
+
> - All pentesting tools pre-installed and optimized
|
|
123
|
+
> - Metasploit database and RPC already configured
|
|
124
|
+
> - Security-focused kernel and networking stack
|
|
125
|
+
> - No dependency hunting or version conflicts
|
|
126
|
+
> - Wordlists, databases, and tool configs ready to go
|
|
127
|
+
>
|
|
128
|
+
> While Ubuntu and other Debian-based distros are supported, you may experience slower setup times and occasional tool compatibility issues.
|
|
129
|
+
|
|
113
130
|
### Known Issues
|
|
114
131
|
|
|
115
132
|
- Very large scan outputs (>10MB) may slow the interface
|
|
@@ -299,4 +316,4 @@ Happy hacking! 🛡️
|
|
|
299
316
|
|
|
300
317
|
---
|
|
301
318
|
|
|
302
|
-
**Version**: 2.
|
|
319
|
+
**Version**: 2.27.1 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
souleyez/__init__.py,sha256=
|
|
1
|
+
souleyez/__init__.py,sha256=DCZYmUbJ3L06l0IpvF_tgXmfnxVH810CXC0q6BS-Sbo,23
|
|
2
2
|
souleyez/config.py,sha256=av357I3GYRWAklv8Dto-9-5Db699Wq5znez7zo7241Q,11595
|
|
3
3
|
souleyez/devtools.py,sha256=rptmUY4a5eVvYjdEc6273MSagL-D9xibPOFgohVqUno,3508
|
|
4
4
|
souleyez/feature_flags.py,sha256=mo6YAq07lc6sR3lEFKmIwTKxXZ2JPxwa5X97uR_mu50,4642
|
|
5
5
|
souleyez/history.py,sha256=gzs5I_j-3OigIP6yfmBChdqxaFmyUIxvTpzWUPe_Q6c,2853
|
|
6
6
|
souleyez/log_config.py,sha256=MMhPAJOqgXDfuE-xm5g0RxAfWndcmbhFHvIEMm1a_Wo,5830
|
|
7
|
-
souleyez/main.py,sha256=
|
|
7
|
+
souleyez/main.py,sha256=TEX0N6aDqH7jHV84vfKMBJRh8vcVSNcU0PNojXxD7tA,122774
|
|
8
8
|
souleyez/scanner.py,sha256=U3IWHRrJ5aQ32dSHiVAHB60w1R_z0E0QxfM99msYNlw,3124
|
|
9
9
|
souleyez/security.py,sha256=S84m1QmnKz_6NgH2I6IBIAorMHxRPNYVFSnks5xjihQ,2479
|
|
10
10
|
souleyez/ui.py,sha256=15pfsqoDPnojAqr5S0TZHJE2ZkSHzkHpNVfVvsRj66A,34301
|
|
@@ -28,6 +28,8 @@ souleyez/ai/report_prompts.py,sha256=5LjCoqYfDtXGHp9oevgrX9avhzMJdfnx1YmPNnuTaeM
|
|
|
28
28
|
souleyez/ai/report_service.py,sha256=N5yVMCGeNcrtFPMTV4eROZbVyh6QLLlLaJNBl-G_7L4,14130
|
|
29
29
|
souleyez/ai/result_parser.py,sha256=nB38fxo7PcQxLqGx2eJ2FC2vsDAZIa-jd2LG251fSls,16155
|
|
30
30
|
souleyez/ai/safety.py,sha256=6xIeXFbOLw7hXrwbAkO8eNdylEdFd5hQSe-LodyR0po,5374
|
|
31
|
+
souleyez/assets/__init__.py,sha256=q_whKfZE_dG80ZYzbRA1WbW4TPr5YkRGjZujHof_Dhg,26
|
|
32
|
+
souleyez/assets/souleyez-icon.png,sha256=pKhXWuUH3y--9GyD7hmyq8CWiPOYwh_MCm9iykljk_c,11978
|
|
31
33
|
souleyez/auth/__init__.py,sha256=9oCzIyabC1MgboYBXYoSa34jGS8teHLdhnLfbAaMLDE,2171
|
|
32
34
|
souleyez/auth/audit.py,sha256=fucBP0s0cpB1wgJE4sG1UDrupfxoNTPCmEPMyGPBOhs,9638
|
|
33
35
|
souleyez/auth/engagement_access.py,sha256=b3XafCq7XDMe5f9Po3o7O1EnWwOWb0mi0WZCeQC1K4A,10852
|
|
@@ -52,12 +54,12 @@ souleyez/core/msf_database.py,sha256=xaGt0wMX15CQv3-s2NobLK8niHgrE98qAkmS9zhrLe8
|
|
|
52
54
|
souleyez/core/msf_integration.py,sha256=J9EXecxq72q65Itv1lBqjSkhh8Zx6SbZO2VPtlZXuOg,64842
|
|
53
55
|
souleyez/core/msf_rpc_client.py,sha256=DL-_uJz_6G1pQud8iTg3_SjRJmgl4-W1YWmb0xg6f8Q,15994
|
|
54
56
|
souleyez/core/msf_rpc_manager.py,sha256=8irWzXdiASVIokGSTf8DV57Uh_DUJ3Q6L-2oR9y8qeI,15572
|
|
55
|
-
souleyez/core/msf_sync_manager.py,sha256=
|
|
57
|
+
souleyez/core/msf_sync_manager.py,sha256=1alAqM2jHiMxbBdPTQL9Vjzbl8XVhrnS2VYhVdfNwUw,27779
|
|
56
58
|
souleyez/core/network_utils.py,sha256=-4WgUE91RBzyXDFgGTxMa0zsWowJ47cEOAKXNeVa-Wc,4555
|
|
57
59
|
souleyez/core/parser_handler.py,sha256=cyZtEDctqMdWgubsU0Jg6o4XqBgyfaJ_AeBHQmmv4hM,5564
|
|
58
60
|
souleyez/core/pending_chains.py,sha256=Dnka7JK7A8gTWCGpTu6qrIgIDIXprkZmwJ0Rm2oWqRE,10972
|
|
59
61
|
souleyez/core/templates.py,sha256=DzlXlAz8_lwAFjjUWPp3r81KCCzbNeK-bkN1IlgQBSU,18112
|
|
60
|
-
souleyez/core/tool_chaining.py,sha256=
|
|
62
|
+
souleyez/core/tool_chaining.py,sha256=1OhSpo3JRj1bbhO5KjprZliYFnInfmi6QQx8QZxOuvE,275414
|
|
61
63
|
souleyez/core/version_utils.py,sha256=UOrOa3qfUdLKdzWT6GAGNV9TauwinXyLyelS8sOk0eE,11769
|
|
62
64
|
souleyez/core/vuln_correlation.py,sha256=U69MSI5I-AtiyOAbXohGDKMpEHRW9y4G_0M1ppRGX18,14765
|
|
63
65
|
souleyez/core/web_utils.py,sha256=f-Dqa6tH8ROnygn6-k7J1y8Qz2f1FmeJnPjPE0WRn34,4902
|
|
@@ -102,7 +104,7 @@ souleyez/detection/__init__.py,sha256=QIhvXjFdjrquQ6A0VQ7GZQkK_EXB59t8Dv9PKXhEUe
|
|
|
102
104
|
souleyez/detection/attack_signatures.py,sha256=akgWwiIkh6WYnghCuLhRV0y6FS0SQ0caGF8tZUc49oA,6965
|
|
103
105
|
souleyez/detection/mitre_mappings.py,sha256=xejE80YK-g8kKaeQoo-vBl8P3t8RTTItbfN0NaVZw6s,20558
|
|
104
106
|
souleyez/detection/validator.py,sha256=-AJ7QSJ3-6jFKLnPG_Rc34IXyF4JPyI82BFUgTA9zw0,15641
|
|
105
|
-
souleyez/docs/README.md,sha256=
|
|
107
|
+
souleyez/docs/README.md,sha256=lV7hWl6j5zw13dOqhC2JVzuwFR-IDg1MVbrHEG3Lw-0,7183
|
|
106
108
|
souleyez/docs/api-reference/cli-commands.md,sha256=lTLFnILN3YRVdqCaag7WgsYXfDGglb1TuPexkxDsVdE,12917
|
|
107
109
|
souleyez/docs/api-reference/engagement-api.md,sha256=nd-EvQMtiJrobg2bzFEADp853HP1Uhb9dmgok0_-neE,11672
|
|
108
110
|
souleyez/docs/api-reference/integration-guide.md,sha256=c96uX79ukHyYotLa54wZ20Kx-EUZnrKegTeGkfLD-pw,16285
|
|
@@ -126,13 +128,13 @@ souleyez/docs/security/threat-model.md,sha256=JcR5AR-l977-7HTe5O2LULBikaxJovcxHE
|
|
|
126
128
|
souleyez/docs/user-guide/ai-integration.md,sha256=erC3Svg6XosKhT1BoHRQ98PUp71OdNQ6bkJIh7shN_Y,8859
|
|
127
129
|
souleyez/docs/user-guide/attack-surface.md,sha256=9QabVuuPkCNNDgAXx_Yerbtmnk61lPkU8Gjl_M6-rG8,12924
|
|
128
130
|
souleyez/docs/user-guide/auto-chaining.md,sha256=UjQ8J8rBgukQIikIrH3U7XoX0WF8EHO_a9i3qDomsXg,21144
|
|
129
|
-
souleyez/docs/user-guide/configuration.md,sha256=
|
|
131
|
+
souleyez/docs/user-guide/configuration.md,sha256=PT01AWD0AINtXmh12Qh-Md0FXkSvXo2Yo6BZInZ3fMo,14650
|
|
130
132
|
souleyez/docs/user-guide/deliverables-screenshots.md,sha256=D5ATXKZRhwXu8OsGMEEUzbXW3hJl-qTh4wsUPx8gNUA,15148
|
|
131
133
|
souleyez/docs/user-guide/dependencies.md,sha256=WOPilg0W0U3KnsdGREkM5_gAG7Rr5P10oco7qDKkJEY,7475
|
|
132
134
|
souleyez/docs/user-guide/evidence-vault.md,sha256=PNg7cIUlVXr41iMJTi66j4qUV2fkrPATljunx0pD5sI,9454
|
|
133
135
|
souleyez/docs/user-guide/exploit-suggestions.md,sha256=Qv9CPwDe9ypKoeUG3XAL6dtg4YA5PmlE5DA6JVHK4Nk,17971
|
|
134
136
|
souleyez/docs/user-guide/getting-started.md,sha256=4QfZiQlYnReORAUpsy2gWzKe1uFHOePZyzDSz8zldgc,20932
|
|
135
|
-
souleyez/docs/user-guide/installation.md,sha256=
|
|
137
|
+
souleyez/docs/user-guide/installation.md,sha256=uM_qBpgG5YjkxSf8u6gUJh0TGYtPlo4pbn_wEXJHX0Q,14431
|
|
136
138
|
souleyez/docs/user-guide/metasploit-integration.md,sha256=kSCai2PO4kiv3BEUSXa6mIC3vCdqIA70GyLVQH_Kaj4,10026
|
|
137
139
|
souleyez/docs/user-guide/rbac.md,sha256=ULY5IbTCoNGOnvRrT1oH5XayCqD10PKoUwRDBRzpK2g,21055
|
|
138
140
|
souleyez/docs/user-guide/report-generation.md,sha256=7Qe47jfPxmZ4U1uuM3kggPLQ6JM7_TCOOhYIvYen4Ao,20754
|
|
@@ -143,14 +145,14 @@ souleyez/docs/user-guide/uninstall.md,sha256=gDknetFhjZ0tnYk4JqhLa369NT4bIRb50rm
|
|
|
143
145
|
souleyez/docs/user-guide/worker-management.md,sha256=hNu6eSTVb6XM4Zbb0I9Y5aL4AA2EiWOSFI6iGjn17kU,12035
|
|
144
146
|
souleyez/docs/user-guide/workflows.md,sha256=4EyZKWRyuWf9wrENJwtidWKN25PGis1Pk33HIHk5UHM,22261
|
|
145
147
|
souleyez/engine/__init__.py,sha256=THI_89hQfAPJDsfzDcur6H9sEGhGAnTxSNim7UOExYc,110
|
|
146
|
-
souleyez/engine/background.py,sha256=
|
|
148
|
+
souleyez/engine/background.py,sha256=HnzpN8P6TcDNxLW4R2re2cgBbBsEOfCdshiCOfJDx-g,83140
|
|
147
149
|
souleyez/engine/base.py,sha256=G35U1d-fygUvzmHH8zxLXw-vyQ9JzcfhGaSYOsHJtzQ,728
|
|
148
150
|
souleyez/engine/job_status.py,sha256=OAEf2rAzapm55m4tc3PSilotdA5ONX15JavUMLre0is,2685
|
|
149
151
|
souleyez/engine/loader.py,sha256=ke6QQVVWozDnqGNBotajC3RBYOa2_DZmv5DAnDZVgIc,2769
|
|
150
152
|
souleyez/engine/log_sanitizer.py,sha256=QHF6zSms-wHo6SbL6fHXIh1GG-8G34lE7kl45nbPn70,7130
|
|
151
153
|
souleyez/engine/manager.py,sha256=aBQMoib-VWNXtIp5Qn34tRj1P1jiLpwAIoo1fexAaLU,3629
|
|
152
|
-
souleyez/engine/result_handler.py,sha256=
|
|
153
|
-
souleyez/engine/worker_manager.py,sha256=
|
|
154
|
+
souleyez/engine/result_handler.py,sha256=IIESU1rGDR3W7yZcZzDyfBTCIVZtHifS8HQv5Ns0eoE,136657
|
|
155
|
+
souleyez/engine/worker_manager.py,sha256=B7b8RbkKTNofmiIyHTNgdikoZCLXpB-iIl1S4-U3q9o,6127
|
|
154
156
|
souleyez/export/__init__.py,sha256=2kFHftSqqrRUG6PhtfhCyhnkpkjc-8Zb4utGo-Nb6B4,61
|
|
155
157
|
souleyez/export/evidence_bundle.py,sha256=hqPn_h2CidhL-1VAT0qraZ8r1yfnUTnLZ3RfPPCK5Ds,9966
|
|
156
158
|
souleyez/feature_flags/__init__.py,sha256=shd9UIGrNh_1jnHhKeGxWpwbBnFxd-UjgVyOZPYE7DE,42
|
|
@@ -189,25 +191,26 @@ souleyez/migrations/__init__.py,sha256=S4ZorUykM6txYkZHuQ64QbzHWeNQ3QDFP-PvgMPbp
|
|
|
189
191
|
souleyez/migrations/fix_job_counter.py,sha256=-NSm7TQaGln5ut2vYVyJ7fPFOliX2rD7lPUQngPx04w,2423
|
|
190
192
|
souleyez/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
193
|
souleyez/parsers/bloodhound_parser.py,sha256=r1f5ePsuPc90CJOySnZ6WkfYQoeVJWraTiE7dnI8BbI,3134
|
|
192
|
-
souleyez/parsers/crackmapexec_parser.py,sha256=
|
|
194
|
+
souleyez/parsers/crackmapexec_parser.py,sha256=HN3nCBMdCEoP1OuYPLmf080b2YmMphZ7Wtm1ByrKGu0,10849
|
|
193
195
|
souleyez/parsers/dalfox_parser.py,sha256=w_eCeyL-Eu9zGyXqYmq0XKbnOIR7lnDD-zbRT7SPco0,6856
|
|
194
|
-
souleyez/parsers/dnsrecon_parser.py,sha256=
|
|
195
|
-
souleyez/parsers/enum4linux_parser.py,sha256=
|
|
196
|
+
souleyez/parsers/dnsrecon_parser.py,sha256=zy9_d-dxVSWSSNy7UgMQ2J_r8uoPacHiAMwkAjomXcM,7885
|
|
197
|
+
souleyez/parsers/enum4linux_parser.py,sha256=8C9VQ0f-VzKFBkRmScPM84Q8CYvPwidBuQFLH2TJ48c,17728
|
|
196
198
|
souleyez/parsers/ffuf_parser.py,sha256=xoLicqbwjgJqMrkGEyUFmBIx1Jn7t2OG7OtXkN-wvUE,1706
|
|
197
199
|
souleyez/parsers/gobuster_parser.py,sha256=-DS8fpA7uoSKhrGnoMdjowhl7OcitAPoEee-LXiogYs,5960
|
|
198
200
|
souleyez/parsers/hashcat_parser.py,sha256=fQl8r9xko5dbbUXAYJEQonUhrp9gqK5WnJioAAk3TsU,5036
|
|
199
|
-
souleyez/parsers/
|
|
200
|
-
souleyez/parsers/
|
|
201
|
-
souleyez/parsers/
|
|
202
|
-
souleyez/parsers/
|
|
201
|
+
souleyez/parsers/http_fingerprint_parser.py,sha256=UESf59YQwMxplBV2cr7ZrZW8qv2kxawaYQxAUAGuVrs,9629
|
|
202
|
+
souleyez/parsers/hydra_parser.py,sha256=lTB_ja18ZEyrLrQAyovqaq_5MyyN5Flij7WeZ6xOsUg,13249
|
|
203
|
+
souleyez/parsers/impacket_parser.py,sha256=RV9ZU3aPn7UWM5blZsRMLTKlQvygc0rPAsCC0sJSNvI,12541
|
|
204
|
+
souleyez/parsers/john_parser.py,sha256=M-vzMoiC5E7UXeDv38n6cTZZnimdtQA40Ky6LEALYOw,7734
|
|
205
|
+
souleyez/parsers/msf_parser.py,sha256=DlpIcwwV5HzHoNZiLPTMDoQca_6vwO2dH23ci3u9GRg,40428
|
|
203
206
|
souleyez/parsers/nikto_parser.py,sha256=faNxu1S1FhLble9lVN4Xjr5v2u3kzGKStdvsKO2CpH0,7160
|
|
204
|
-
souleyez/parsers/nmap_parser.py,sha256=
|
|
207
|
+
souleyez/parsers/nmap_parser.py,sha256=LXZWGZVf7VdZhPPUe6q_Hgb22jlSSj5XRt2aUl3qeWc,30106
|
|
205
208
|
souleyez/parsers/nuclei_parser.py,sha256=Magk6ID5WJNtGOGP7e6-R12pgtYcGdoFHmuB68fOTlo,3975
|
|
206
209
|
souleyez/parsers/responder_parser.py,sha256=3LInW7ZnrSyktlpk8Boid1ftcdGf8SaSBfMpcLGzJ2g,3494
|
|
207
210
|
souleyez/parsers/searchsploit_parser.py,sha256=XEXkpN0uixS85WvhtSXZslv2ELXQM7l9q0T5v79GUok,7560
|
|
208
|
-
souleyez/parsers/smbmap_parser.py,sha256=
|
|
209
|
-
souleyez/parsers/sqlmap_parser.py,sha256=
|
|
210
|
-
souleyez/parsers/theharvester_parser.py,sha256=
|
|
211
|
+
souleyez/parsers/smbmap_parser.py,sha256=cKK026Bhs2m6jLKk_S706XaYb0plG75OHhDiTjcZnzU,13395
|
|
212
|
+
souleyez/parsers/sqlmap_parser.py,sha256=CYh4rpxrdSgkJdQLWqWzERTmloKsBUqLZA_1fpR8de4,35413
|
|
213
|
+
souleyez/parsers/theharvester_parser.py,sha256=Pu9lQ8ip3FAt-XlwSnTpLqaTLHVpK5nSRFSxCNrz-YI,5844
|
|
211
214
|
souleyez/parsers/whois_parser.py,sha256=o0dUR0Ow2HNXV_3SksCtX8DvblJ0X1fjSDtEmRVUu8c,9451
|
|
212
215
|
souleyez/parsers/wpscan_parser.py,sha256=qKxJitB7_yOAoGc-2WwtYFRztRv8-utGipfQrzUG6J8,15014
|
|
213
216
|
souleyez/plugins/__init__.py,sha256=ZuA8EzOdz7SvbB1kAj6pnyjgPLZShINGZAiSwEDZ0Bo,109
|
|
@@ -224,6 +227,7 @@ souleyez/plugins/ffuf.py,sha256=7c1-Q7xXTMmH_2wHXikjmZnSgZL13Hj5E_asBxZ6Y5U,1165
|
|
|
224
227
|
souleyez/plugins/firmware_extract.py,sha256=_hZXx6cHb9noM6uVgi3hwrJLw8hE9mDUelTEHwoIdCU,6460
|
|
225
228
|
souleyez/plugins/gobuster.py,sha256=GMTUyfkVnZ2gp3kh_R-KQ4EIGEBX5fxBIMfHZrwkVFo,29285
|
|
226
229
|
souleyez/plugins/hashcat.py,sha256=aigfwBu9IorXKgbyEIWx0qOCEdr1wnZaPqdYwh0PITc,10381
|
|
230
|
+
souleyez/plugins/http_fingerprint.py,sha256=_D5UVAtDC0f-uy4pQcBI43c4jnsJ5wyvCIvttUiVurw,21202
|
|
227
231
|
souleyez/plugins/hydra.py,sha256=kfVJwgh3x1DC0wEtA-lkoY7qhQH1qKViYexUECZSPY4,29520
|
|
228
232
|
souleyez/plugins/impacket_getnpusers.py,sha256=6TBxVTO9NGUbn5ShV-dCxPP11CFqf-Y3lAgt8_oP2Vg,8652
|
|
229
233
|
souleyez/plugins/impacket_psexec.py,sha256=gU_MDSazDMj1TeWm5V9cD6wrLe3ULwbDv4jhg3Vm2rQ,8813
|
|
@@ -236,7 +240,7 @@ souleyez/plugins/msf_auxiliary.py,sha256=pOL9yLJr_L0niwaHLPguM2Gaunr3iAe7HdIFbDL
|
|
|
236
240
|
souleyez/plugins/msf_exploit.py,sha256=BNAZz5EO4jgwx64dEB4OE-CQdYkqJk5N4eXT140DRqs,23765
|
|
237
241
|
souleyez/plugins/nikto.py,sha256=_BPzypwNTliBg2Tr6sPGMKYFTvnQgqEHO1xesDZ-6uo,9957
|
|
238
242
|
souleyez/plugins/nmap.py,sha256=Bh3xauEfsDw_hxSarNfLN-J6tNda-mG3DqHHkphpttE,15997
|
|
239
|
-
souleyez/plugins/nuclei.py,sha256=
|
|
243
|
+
souleyez/plugins/nuclei.py,sha256=A2pbSVFGJCu1QlokpV4-d4SJWw4Yv8FrQiLHE9lwRfc,15862
|
|
240
244
|
souleyez/plugins/plugin_base.py,sha256=zB0wzZBBx5V63Ipc7CUEApYADLC8T-A__CLnTaXb49A,6731
|
|
241
245
|
souleyez/plugins/plugin_template.py,sha256=Tcd_JrCBNgT1o88On4vjG5Y7mlGSVGh-hXyUak_KXlE,1786
|
|
242
246
|
souleyez/plugins/responder.py,sha256=ImhISPLtvzqvJSUQrgavlZ_h9ZrJ4s9NrTkPAhEcHQM,13160
|
|
@@ -338,7 +342,7 @@ souleyez/ui/export_view.py,sha256=0nQvVsKk7FU4uRzSfJ_qBZh_Lfn8hgGA2rbJ5bNg5-Y,65
|
|
|
338
342
|
souleyez/ui/gap_analysis_view.py,sha256=AytAOEBq010wwo9hne1TE-uJpY_xicjLrFANbvN3r3w,30727
|
|
339
343
|
souleyez/ui/help_system.py,sha256=nKGxLaMi-TKYs6xudTyw_tZqBb1cGFEuYYh6N-MAsJE,16648
|
|
340
344
|
souleyez/ui/intelligence_view.py,sha256=VeAQ-3mANRnLIVpRqocL3JV0HUmJtADdxDeC5lzQhE0,32168
|
|
341
|
-
souleyez/ui/interactive.py,sha256=
|
|
345
|
+
souleyez/ui/interactive.py,sha256=d-fGuSDG1n2a5GeF1aY_mZMTDWqMsQfBB2_-1kpSobw,1375354
|
|
342
346
|
souleyez/ui/interactive_selector.py,sha256=6A51fgmFRnemBY0aCPHIhK2Rpba16NjSGKLzC0Q5vI8,16407
|
|
343
347
|
souleyez/ui/log_formatter.py,sha256=akhIkYoO_cCaKxS1V5N3iPmIrHzgsU7pmsedx70s9TI,3845
|
|
344
348
|
souleyez/ui/menu_components.py,sha256=N8zq2QXGmfaLJ08l53MMYt1y-5LRWgpZH6r8nXHonj8,3519
|
|
@@ -347,7 +351,7 @@ souleyez/ui/pending_chains_view.py,sha256=FTxBbZ6zVgYC2dFqppx2GIHkwcS7TcFPgmck6A
|
|
|
347
351
|
souleyez/ui/progress_indicators.py,sha256=CqAbnz_c6A7UHtGvsZwTCR2tcQkiCZpqVIyldvbhRio,4709
|
|
348
352
|
souleyez/ui/recommendations_view.py,sha256=MbfDzOWrvZziRHg74O3KXU237MX7UrCj33jj0apSGwQ,10590
|
|
349
353
|
souleyez/ui/rule_builder.py,sha256=GbH1JyqyG2XAbC2Utjlqm0hcjDYbIRXcaFzU0gpa_iY,19089
|
|
350
|
-
souleyez/ui/setup_wizard.py,sha256=
|
|
354
|
+
souleyez/ui/setup_wizard.py,sha256=flzJqN5KhoALNmwnZ4edvic4lyq4i-nbb-ar2gcC6no,49056
|
|
351
355
|
souleyez/ui/shortcuts.py,sha256=2rKWOh5H1LfHeP7dF3_iAbBE0_LhXILlUH4NfA98Ge8,10988
|
|
352
356
|
souleyez/ui/splunk_gap_analysis_view.py,sha256=pjEVnXw7AUVDCRSgzAqf4OdjFDEor8ti9gcplXrkJ7o,39909
|
|
353
357
|
souleyez/ui/splunk_vulns_view.py,sha256=sRHP8DpoUeDb9BIZuClq7Hl1po7dYnMeYlo-c0XUoKQ,13740
|
|
@@ -355,15 +359,15 @@ souleyez/ui/team_dashboard.py,sha256=ejM_44nbJbEIPxxxdEK7SCPcqQtcuJLjoO-C53qED2Y
|
|
|
355
359
|
souleyez/ui/template_selector.py,sha256=qQJkFNnVjYctb-toeYlupP_U1asGrJWYi5-HR89Ab9g,19103
|
|
356
360
|
souleyez/ui/terminal.py,sha256=Sw9ma1-DZclJE1sENjTZ3Q7r-Ct1NiB3Lpmv-RZW5tE,2372
|
|
357
361
|
souleyez/ui/timeline_view.py,sha256=Ze8Mev9VE4_ECdNFEJwZK2V42EBguR83uCCdwAbJqmc,11111
|
|
358
|
-
souleyez/ui/tool_setup.py,sha256=
|
|
362
|
+
souleyez/ui/tool_setup.py,sha256=pkOUr-1inZlYnvaIc8Kj-Qaxk2KHWR2opJAgI_Er-Wo,32591
|
|
359
363
|
souleyez/ui/tutorial.py,sha256=GGbBsze0ioL00WBWKEwPKy1ikegP1eusI2REDVMx4gY,14262
|
|
360
364
|
souleyez/ui/tutorial_state.py,sha256=Thf7_qCj4VKjG7UqgJqa9kjIqiFUU-7Q7kG4v-u2B4A,8123
|
|
361
365
|
souleyez/ui/wazuh_vulns_view.py,sha256=3vJJEmrjgS2wD6EDB7ZV7WxgytBHTm-1WqNDjp7lVEI,21830
|
|
362
366
|
souleyez/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
363
|
-
souleyez/utils/tool_checker.py,sha256=
|
|
364
|
-
souleyez-2.
|
|
365
|
-
souleyez-2.
|
|
366
|
-
souleyez-2.
|
|
367
|
-
souleyez-2.
|
|
368
|
-
souleyez-2.
|
|
369
|
-
souleyez-2.
|
|
367
|
+
souleyez/utils/tool_checker.py,sha256=kQcXJVY5NiO-orQAUnpHhpQvR5UOBNHJ0PaT0fBxYoQ,30782
|
|
368
|
+
souleyez-2.27.1.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
|
|
369
|
+
souleyez-2.27.1.dist-info/METADATA,sha256=GlHqMvLdOjRtM1yYeUPfY5RCilFwx9sGrCl_4DQXv7A,11345
|
|
370
|
+
souleyez-2.27.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
371
|
+
souleyez-2.27.1.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
|
|
372
|
+
souleyez-2.27.1.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
|
|
373
|
+
souleyez-2.27.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|