souleyez 2.40.0__py3-none-any.whl → 2.43.3__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/commands/license.py +1 -1
- souleyez/docs/README.md +4 -4
- souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +2 -2
- souleyez/docs/architecture/decisions/002-master-password-approach.md +15 -11
- souleyez/docs/architecture/overview.md +5 -6
- souleyez/docs/security/credential-encryption.md +25 -7
- souleyez/docs/security/threat-model.md +1 -1
- souleyez/docs/user-guide/configuration.md +1 -1
- souleyez/docs/user-guide/dependencies.md +1 -1
- souleyez/docs/user-guide/getting-started.md +100 -90
- souleyez/docs/user-guide/installation.md +20 -31
- souleyez/docs/user-guide/rbac.md +3 -3
- souleyez/docs/user-guide/scope-management.md +1 -1
- souleyez/licensing/validator.py +13 -4
- souleyez/main.py +1 -1
- souleyez/reporting/generator.py +1 -1
- souleyez/ui/interactive.py +4 -4
- souleyez/ui/tool_setup.py +95 -6
- souleyez/ui/tutorial.py +16 -0
- souleyez/utils/tool_checker.py +2 -2
- souleyez-2.43.3.dist-info/METADATA +269 -0
- {souleyez-2.40.0.dist-info → souleyez-2.43.3.dist-info}/RECORD +27 -27
- souleyez-2.40.0.dist-info/METADATA +0 -265
- {souleyez-2.40.0.dist-info → souleyez-2.43.3.dist-info}/WHEEL +0 -0
- {souleyez-2.40.0.dist-info → souleyez-2.43.3.dist-info}/entry_points.txt +0 -0
- {souleyez-2.40.0.dist-info → souleyez-2.43.3.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.40.0.dist-info → souleyez-2.43.3.dist-info}/top_level.txt +0 -0
souleyez/licensing/validator.py
CHANGED
|
@@ -23,11 +23,19 @@ from datetime import datetime
|
|
|
23
23
|
from pathlib import Path
|
|
24
24
|
from typing import Optional, Tuple
|
|
25
25
|
|
|
26
|
+
|
|
27
|
+
def _add_base64_padding(data: str) -> str:
|
|
28
|
+
"""Add padding to base64 string if missing."""
|
|
29
|
+
padding = 4 - len(data) % 4
|
|
30
|
+
if padding != 4:
|
|
31
|
+
data += '=' * padding
|
|
32
|
+
return data
|
|
33
|
+
|
|
26
34
|
# Ed25519 public key for license verification (Base64 encoded)
|
|
27
35
|
# Private key is kept secure by the license issuer
|
|
28
36
|
# This public key can only VERIFY signatures, not create them
|
|
29
37
|
LICENSE_PUBLIC_KEY = """-----BEGIN PUBLIC KEY-----
|
|
30
|
-
|
|
38
|
+
MCowBQYDK2VwAyEABS0eqd9OPCtqOvQI1Aw8vGnXiX1qecBjZ0UY7esPk1I=
|
|
31
39
|
-----END PUBLIC KEY-----"""
|
|
32
40
|
|
|
33
41
|
|
|
@@ -109,7 +117,8 @@ class LicenseValidator:
|
|
|
109
117
|
try:
|
|
110
118
|
# Decode the license key
|
|
111
119
|
try:
|
|
112
|
-
|
|
120
|
+
padded_key = _add_base64_padding(license_key.strip())
|
|
121
|
+
decoded = base64.urlsafe_b64decode(padded_key)
|
|
113
122
|
payload = json.loads(decoded)
|
|
114
123
|
except Exception as e:
|
|
115
124
|
return LicenseInfo(
|
|
@@ -232,7 +241,7 @@ class LicenseValidator:
|
|
|
232
241
|
message = json.dumps(data, sort_keys=True, separators=(',', ':')).encode()
|
|
233
242
|
|
|
234
243
|
# Decode signature
|
|
235
|
-
signature = base64.urlsafe_b64decode(signature_b64)
|
|
244
|
+
signature = base64.urlsafe_b64decode(_add_base64_padding(signature_b64))
|
|
236
245
|
|
|
237
246
|
# Verify
|
|
238
247
|
public_key.verify(signature, message)
|
|
@@ -258,7 +267,7 @@ class LicenseValidator:
|
|
|
258
267
|
).digest()
|
|
259
268
|
|
|
260
269
|
try:
|
|
261
|
-
actual = base64.urlsafe_b64decode(signature_b64)
|
|
270
|
+
actual = base64.urlsafe_b64decode(_add_base64_padding(signature_b64))
|
|
262
271
|
return hmac.compare_digest(expected, actual)
|
|
263
272
|
except Exception:
|
|
264
273
|
return False
|
souleyez/main.py
CHANGED
|
@@ -173,7 +173,7 @@ def _check_privileged_tools():
|
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
@click.group()
|
|
176
|
-
@click.version_option(version='2.
|
|
176
|
+
@click.version_option(version='2.43.3')
|
|
177
177
|
def cli():
|
|
178
178
|
"""SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
|
|
179
179
|
from souleyez.log_config import init_logging
|
souleyez/reporting/generator.py
CHANGED
|
@@ -704,7 +704,7 @@ class ReportGenerator:
|
|
|
704
704
|
if user.tier != Tier.PRO:
|
|
705
705
|
raise PermissionError(
|
|
706
706
|
"AI-enhanced reports require a PRO license. "
|
|
707
|
-
"Upgrade at https://
|
|
707
|
+
"Upgrade at https://www.cybersoulsecurity.com/souleyez"
|
|
708
708
|
)
|
|
709
709
|
except ImportError:
|
|
710
710
|
# Auth module not available - allow
|
souleyez/ui/interactive.py
CHANGED
|
@@ -203,7 +203,7 @@ def _show_upgrade_prompt(feature_name: str):
|
|
|
203
203
|
f" • MSF Integration - Metasploit attack chains\n"
|
|
204
204
|
f" • Reports & Export - Professional deliverables\n"
|
|
205
205
|
f" • Team Dashboard - Collaboration & activity tracking\n\n"
|
|
206
|
-
f"[cyan]Visit: https://
|
|
206
|
+
f"[cyan]Visit: https://www.cybersoulsecurity.com/souleyez[/cyan]",
|
|
207
207
|
title="🔒 Upgrade Required",
|
|
208
208
|
border_style="yellow"
|
|
209
209
|
))
|
|
@@ -8593,7 +8593,7 @@ def _license_management_menu():
|
|
|
8593
8593
|
click.echo(" [y] Sync User Tier - Update your account to PRO")
|
|
8594
8594
|
click.echo(" [d] Deactivate - Remove license (revert to FREE)")
|
|
8595
8595
|
click.echo()
|
|
8596
|
-
click.echo(" [p] Purchase Pro - Visit
|
|
8596
|
+
click.echo(" [p] Purchase Pro - Visit cybersoulsecurity.com/souleyez")
|
|
8597
8597
|
click.echo()
|
|
8598
8598
|
click.echo(" [q] ← Back")
|
|
8599
8599
|
click.echo()
|
|
@@ -8742,9 +8742,9 @@ def _license_management_menu():
|
|
|
8742
8742
|
|
|
8743
8743
|
elif choice == "p":
|
|
8744
8744
|
click.echo()
|
|
8745
|
-
click.echo(" Visit: https://
|
|
8745
|
+
click.echo(" Visit: https://www.cybersoulsecurity.com/souleyez")
|
|
8746
8746
|
click.echo()
|
|
8747
|
-
click.echo(" Or contact:
|
|
8747
|
+
click.echo(" Or contact: cysoul.secit@gmail.com")
|
|
8748
8748
|
click.pause("\n Press Enter to continue...")
|
|
8749
8749
|
|
|
8750
8750
|
else:
|
souleyez/ui/tool_setup.py
CHANGED
|
@@ -24,6 +24,19 @@ from souleyez.utils.tool_checker import (
|
|
|
24
24
|
)
|
|
25
25
|
from souleyez.ui.design_system import DesignSystem
|
|
26
26
|
|
|
27
|
+
|
|
28
|
+
def _reset_terminal():
|
|
29
|
+
"""Reset terminal to sane state after interrupt."""
|
|
30
|
+
try:
|
|
31
|
+
# Reset terminal using stty
|
|
32
|
+
subprocess.run(['stty', 'sane'], check=False, timeout=5)
|
|
33
|
+
# Also try the reset command for good measure
|
|
34
|
+
subprocess.run(['reset', '-I'], check=False, timeout=5,
|
|
35
|
+
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
36
|
+
except Exception:
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
|
|
27
40
|
# Prerequisites needed for various install methods
|
|
28
41
|
PREREQUISITES = {
|
|
29
42
|
'build-deps': {
|
|
@@ -380,6 +393,17 @@ def _ensure_msfdb_initialized(console):
|
|
|
380
393
|
|
|
381
394
|
def run_tool_setup(check_only: bool = False, install_all: bool = False):
|
|
382
395
|
"""Run the tool setup wizard."""
|
|
396
|
+
try:
|
|
397
|
+
_run_tool_setup_impl(check_only, install_all)
|
|
398
|
+
except KeyboardInterrupt:
|
|
399
|
+
# Reset terminal to sane state after Ctrl+C
|
|
400
|
+
_reset_terminal()
|
|
401
|
+
print("\n\n Setup cancelled.")
|
|
402
|
+
raise
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
def _run_tool_setup_impl(check_only: bool = False, install_all: bool = False):
|
|
406
|
+
"""Internal implementation of tool setup wizard."""
|
|
383
407
|
console = DesignSystem.get_console()
|
|
384
408
|
distro = detect_distro()
|
|
385
409
|
|
|
@@ -773,22 +797,87 @@ def _install_snap_tool(console, tool: Dict) -> bool:
|
|
|
773
797
|
|
|
774
798
|
def _install_git_tool(console, tool: Dict) -> bool:
|
|
775
799
|
"""Install a tool from git (requires sudo for /opt)."""
|
|
800
|
+
import re
|
|
801
|
+
|
|
776
802
|
name = tool['name']
|
|
777
803
|
cmd = tool['install']
|
|
778
804
|
|
|
779
|
-
console.print(f" {name}..."
|
|
805
|
+
console.print(f" {name}...")
|
|
806
|
+
|
|
807
|
+
# Parse the command to handle existing directories properly
|
|
808
|
+
# Commands are typically: git clone <url> <dir> && pip install ... && ln -sf ...
|
|
809
|
+
commands = [c.strip() for c in cmd.split('&&')]
|
|
810
|
+
|
|
811
|
+
clone_cmd = None
|
|
812
|
+
post_clone_cmds = []
|
|
813
|
+
target_dir = None
|
|
814
|
+
|
|
815
|
+
for i, c in enumerate(commands):
|
|
816
|
+
if 'git clone' in c:
|
|
817
|
+
clone_cmd = c
|
|
818
|
+
post_clone_cmds = commands[i + 1:]
|
|
819
|
+
# Extract target directory from clone command
|
|
820
|
+
# Pattern: git clone <url> <directory>
|
|
821
|
+
match = re.search(r'git clone\s+\S+\s+(\S+)', c)
|
|
822
|
+
if match:
|
|
823
|
+
target_dir = match.group(1)
|
|
824
|
+
break
|
|
825
|
+
|
|
826
|
+
# If we found a git clone command and target directory
|
|
827
|
+
if clone_cmd and target_dir:
|
|
828
|
+
dir_exists = Path(target_dir).exists()
|
|
829
|
+
|
|
830
|
+
if dir_exists:
|
|
831
|
+
console.print(f" [dim]Directory {target_dir} exists, updating...[/dim]")
|
|
832
|
+
# Try to update with git pull
|
|
833
|
+
pull_cmd = f"sudo git -C {target_dir} pull"
|
|
834
|
+
success, _, stderr = _run_command(pull_cmd, console, capture=True)
|
|
835
|
+
|
|
836
|
+
if not success and "not a git repository" in stderr.lower():
|
|
837
|
+
# Directory exists but isn't a git repo - remove and re-clone
|
|
838
|
+
console.print(f" [dim]Not a git repo, re-cloning...[/dim]")
|
|
839
|
+
rm_cmd = f"sudo rm -rf {target_dir}"
|
|
840
|
+
_run_command(rm_cmd, console, capture=True)
|
|
841
|
+
success, _, stderr = _run_command(clone_cmd, console, capture=True)
|
|
842
|
+
if not success:
|
|
843
|
+
console.print(f"[red]✗[/red]")
|
|
844
|
+
if stderr:
|
|
845
|
+
console.print(f" [dim]{stderr[:80]}[/dim]")
|
|
846
|
+
return False
|
|
847
|
+
elif not success:
|
|
848
|
+
# Pull failed for other reasons, try to continue anyway
|
|
849
|
+
console.print(f" [yellow]⚠ git pull failed, continuing with existing files[/yellow]")
|
|
850
|
+
else:
|
|
851
|
+
# Directory doesn't exist, run the clone
|
|
852
|
+
success, _, stderr = _run_command(clone_cmd, console, capture=True)
|
|
853
|
+
if not success:
|
|
854
|
+
console.print(f"[red]✗[/red]")
|
|
855
|
+
if stderr:
|
|
856
|
+
console.print(f" [dim]{stderr[:80]}[/dim]")
|
|
857
|
+
return False
|
|
858
|
+
|
|
859
|
+
# Run post-clone commands (pip install, symlink, etc.)
|
|
860
|
+
for post_cmd in post_clone_cmds:
|
|
861
|
+
post_cmd = post_cmd.strip()
|
|
862
|
+
if not post_cmd:
|
|
863
|
+
continue
|
|
864
|
+
success, _, stderr = _run_command(post_cmd, console, capture=True)
|
|
865
|
+
if not success:
|
|
866
|
+
console.print(f"[red]✗[/red]")
|
|
867
|
+
if stderr:
|
|
868
|
+
console.print(f" [dim]{stderr[:80]}[/dim]")
|
|
869
|
+
return False
|
|
780
870
|
|
|
781
|
-
|
|
871
|
+
console.print(f" [green]✓[/green]")
|
|
872
|
+
return True
|
|
873
|
+
|
|
874
|
+
# Fallback: run the full command as-is (no git clone detected)
|
|
782
875
|
success, _, stderr = _run_command(cmd, console, capture=True)
|
|
783
876
|
|
|
784
877
|
if success:
|
|
785
878
|
console.print("[green]✓[/green]")
|
|
786
879
|
return True
|
|
787
880
|
else:
|
|
788
|
-
# Check if directory already exists
|
|
789
|
-
if "already exists" in stderr:
|
|
790
|
-
console.print("[green]✓ (already installed)[/green]")
|
|
791
|
-
return True
|
|
792
881
|
console.print(f"[red]✗[/red]")
|
|
793
882
|
if stderr:
|
|
794
883
|
console.print(f" [dim]{stderr[:80]}[/dim]")
|
souleyez/ui/tutorial.py
CHANGED
|
@@ -292,6 +292,14 @@ def _show_tutorial_complete():
|
|
|
292
292
|
click.echo(click.style("⚠️ NEVER scan systems without permission!", fg='red', bold=True))
|
|
293
293
|
click.echo()
|
|
294
294
|
|
|
295
|
+
# Always disable auto-chaining (it's a PRO feature, tutorial enabled for demo)
|
|
296
|
+
try:
|
|
297
|
+
from souleyez.core.tool_chaining import ToolChaining
|
|
298
|
+
chaining = ToolChaining()
|
|
299
|
+
chaining.disable_chaining()
|
|
300
|
+
except Exception:
|
|
301
|
+
pass
|
|
302
|
+
|
|
295
303
|
# Offer to clean up tutorial data
|
|
296
304
|
click.echo()
|
|
297
305
|
if click.confirm("Clean up tutorial engagement and jobs?", default=True):
|
|
@@ -316,6 +324,14 @@ def _cleanup_tutorial_data():
|
|
|
316
324
|
try:
|
|
317
325
|
from souleyez.storage.engagements import EngagementManager
|
|
318
326
|
from souleyez.engine.background import list_jobs, delete_job, kill_job
|
|
327
|
+
from souleyez.core.tool_chaining import ToolChaining
|
|
328
|
+
|
|
329
|
+
# Disable auto-chaining (it's a PRO feature, tutorial enabled it for demo)
|
|
330
|
+
try:
|
|
331
|
+
chaining = ToolChaining()
|
|
332
|
+
chaining.disable_chaining()
|
|
333
|
+
except Exception:
|
|
334
|
+
pass
|
|
319
335
|
|
|
320
336
|
em = EngagementManager()
|
|
321
337
|
|
souleyez/utils/tool_checker.py
CHANGED
|
@@ -320,8 +320,8 @@ EXTERNAL_TOOLS = {
|
|
|
320
320
|
},
|
|
321
321
|
'responder': {
|
|
322
322
|
'command': 'responder',
|
|
323
|
-
'install_kali': 'sudo apt install responder && sudo pip install aioquic',
|
|
324
|
-
'install_ubuntu': 'sudo git clone https://github.com/lgandx/Responder.git /opt/Responder && sudo pip install -r /opt/Responder/requirements.txt aioquic && sudo ln -sf /opt/Responder/Responder.py /usr/local/bin/responder',
|
|
323
|
+
'install_kali': 'sudo apt install responder && sudo pip install --break-system-packages aioquic',
|
|
324
|
+
'install_ubuntu': 'sudo git clone https://github.com/lgandx/Responder.git /opt/Responder && sudo pip install --break-system-packages -r /opt/Responder/requirements.txt aioquic && sudo ln -sf /opt/Responder/Responder.py /usr/local/bin/responder',
|
|
325
325
|
'install_method': 'kali_only',
|
|
326
326
|
'description': 'LLMNR, NBT-NS and MDNS poisoner',
|
|
327
327
|
'needs_sudo': True # Required for network poisoning
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: souleyez
|
|
3
|
+
Version: 2.43.3
|
|
4
|
+
Summary: AI-Powered Penetration Testing Platform with 40+ integrated tools
|
|
5
|
+
Author-email: CyberSoul Security <contact@cybersoulsecurity.com>
|
|
6
|
+
Maintainer-email: CyberSoul Security <contact@cybersoulsecurity.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/cyber-soul-security/SoulEyez
|
|
9
|
+
Project-URL: Documentation, https://github.com/cyber-soul-security/SoulEyez#readme
|
|
10
|
+
Project-URL: Repository, https://github.com/cyber-soul-security/SoulEyez.git
|
|
11
|
+
Project-URL: Issues, https://github.com/cyber-soul-security/SoulEyez/issues
|
|
12
|
+
Keywords: pentesting,security,hacking,penetration-testing,cybersecurity,nmap,metasploit
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Environment :: Console :: Curses
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: Intended Audience :: Information Technology
|
|
18
|
+
Classifier: Intended Audience :: System Administrators
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Operating System :: MacOS
|
|
22
|
+
Classifier: Programming Language :: Python :: 3
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
29
|
+
Classifier: Topic :: Security
|
|
30
|
+
Classifier: Topic :: System :: Networking
|
|
31
|
+
Requires-Python: >=3.8
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
License-File: LICENSE
|
|
34
|
+
Requires-Dist: anthropic>=0.40.0
|
|
35
|
+
Requires-Dist: click>=8.0.0
|
|
36
|
+
Requires-Dist: cryptography>=3.4.0
|
|
37
|
+
Requires-Dist: defusedxml>=0.7.0
|
|
38
|
+
Requires-Dist: impacket>=0.11.0
|
|
39
|
+
Requires-Dist: markdown>=3.4.0
|
|
40
|
+
Requires-Dist: msgpack>=1.0.0
|
|
41
|
+
Requires-Dist: ollama>=0.1.0
|
|
42
|
+
Requires-Dist: psycopg2-binary>=2.9.0
|
|
43
|
+
Requires-Dist: psutil>=5.9.0
|
|
44
|
+
Requires-Dist: python-json-logger>=2.0.0
|
|
45
|
+
Requires-Dist: requests>=2.28.0
|
|
46
|
+
Requires-Dist: rich>=10.0.0
|
|
47
|
+
Requires-Dist: wcwidth>=0.2.0
|
|
48
|
+
Provides-Extra: dev
|
|
49
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
50
|
+
Dynamic: license-file
|
|
51
|
+
|
|
52
|
+
# SoulEyez — AI-Powered Penetration Testing Platform
|
|
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
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## What is SoulEyez?
|
|
63
|
+
|
|
64
|
+
**SoulEyez is your penetration testing command center.** Instead of juggling dozens of terminal windows and text files, SoulEyez gives you one organized place to:
|
|
65
|
+
|
|
66
|
+
- **Run security scans** — Execute tools like Nmap, Gobuster, SQLMap with simple commands
|
|
67
|
+
- **Auto-discover next steps** — When one scan finds something interesting, SoulEyez automatically suggests (or runs) the next logical tool
|
|
68
|
+
- **Stay organized** — Keep all your targets, findings, and credentials in one searchable database
|
|
69
|
+
- **Generate reports** — Export professional reports when you're done
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Who is this for?
|
|
74
|
+
|
|
75
|
+
- **Security professionals** conducting authorized penetration tests
|
|
76
|
+
- **CTF players** who want better organization during competitions
|
|
77
|
+
- **Students** learning penetration testing methodology
|
|
78
|
+
|
|
79
|
+
> **Important:** Only use SoulEyez on systems you have explicit authorization to test. Unauthorized scanning or exploitation is illegal.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Features
|
|
84
|
+
|
|
85
|
+
### Core Capabilities
|
|
86
|
+
|
|
87
|
+
- 🎯 **Interactive Dashboard** — Real-time engagement monitoring with live updates
|
|
88
|
+
- 🔗 **Smart Tool Chaining** — Automatic follow-up scans based on discoveries
|
|
89
|
+
- 📊 **Findings Management** — Track and categorize vulnerabilities by severity
|
|
90
|
+
- 🔑 **Credential Vault** — Encrypted storage for discovered credentials
|
|
91
|
+
- 🌐 **Network Mapping** — Host discovery and service enumeration
|
|
92
|
+
- 📈 **Progress Tracking** — Monitor scan completion and tool execution
|
|
93
|
+
- 💾 **SQLite Storage** — Local database for all engagement data
|
|
94
|
+
- 🔄 **Background Jobs** — Queue-based tool execution with status monitoring
|
|
95
|
+
|
|
96
|
+
### Integrated Tools (40+)
|
|
97
|
+
|
|
98
|
+
- **Reconnaissance**: nmap, masscan, theHarvester, whois, dnsrecon
|
|
99
|
+
- **Web Testing**: nikto, gobuster, ffuf, sqlmap, nuclei, wpscan
|
|
100
|
+
- **Enumeration**: enum4linux-ng, smbmap, crackmapexec, snmpwalk
|
|
101
|
+
- **Exploitation**: Metasploit integration, searchsploit
|
|
102
|
+
- **Password Attacks**: hydra, hashcat, john
|
|
103
|
+
- **Post-Exploitation**: impacket suite, bloodhound
|
|
104
|
+
|
|
105
|
+
### Pentest Workflow & Intelligence
|
|
106
|
+
|
|
107
|
+
- 📁 **Evidence Vault** — Unified artifact collection organized by PTES phases
|
|
108
|
+
- 🎯 **Attack Surface Dashboard** — Track what's exploited vs pending with priority scoring
|
|
109
|
+
- 💣 **Exploit Suggestions** — Automatic CVE/Metasploit recommendations for discovered services
|
|
110
|
+
- 🔗 **Correlation Engine** — Cross-phase attack tracking and gap analysis
|
|
111
|
+
- 📝 **Report Generator** — Professional reports in Markdown/HTML/PDF formats
|
|
112
|
+
- ✅ **Deliverable Tracking** — Manage testing requirements and acceptance criteria
|
|
113
|
+
- 📸 **Screenshot Management** — Organized visual evidence by methodology phase
|
|
114
|
+
|
|
115
|
+
### SIEM Integration
|
|
116
|
+
|
|
117
|
+
- 🛡️ **SIEM Connectors** — Connect to Wazuh, Splunk, and other SIEM platforms
|
|
118
|
+
- ✓ **Detection Validation** — Verify if your attacks triggered SIEM alerts
|
|
119
|
+
- 🔍 **Vulnerability Management** — View CVEs from SIEM vulnerability data
|
|
120
|
+
- ⚖️ **Gap Analysis** — Compare passive (SIEM) vs active (scan) findings
|
|
121
|
+
- 🗺️ **MITRE ATT&CK Reports** — Detection coverage heatmaps by technique
|
|
122
|
+
- 📡 **Real-time Alerts** — Monitor SIEM alerts during live engagements
|
|
123
|
+
|
|
124
|
+
### FREE vs PRO
|
|
125
|
+
|
|
126
|
+
| Feature | FREE | PRO |
|
|
127
|
+
|---------|------|-----|
|
|
128
|
+
| Core features (scans, findings, credentials) | ✅ | ✅ |
|
|
129
|
+
| Report generation | ✅ | ✅ |
|
|
130
|
+
| AI-powered suggestions & auto-chaining | ❌ | ✅ |
|
|
131
|
+
| Metasploit integration & exploit suggestions | ❌ | ✅ |
|
|
132
|
+
| SIEM integration & detection validation | ❌ | ✅ |
|
|
133
|
+
| MITRE ATT&CK reports | ❌ | ✅ |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Quick Start
|
|
138
|
+
|
|
139
|
+
### Step 1: Install Prerequisites
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
sudo apt install pipx # Install pipx
|
|
143
|
+
pipx ensurepath # Add pipx apps to your PATH
|
|
144
|
+
source ~/.bashrc # Reload shell (Kali: use ~/.zshrc)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Step 2: Install SoulEyez
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
pipx install souleyez
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Step 3: Launch SoulEyez
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
souleyez interactive
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Step 4: First-Time Setup
|
|
160
|
+
|
|
161
|
+
On your first run, the setup wizard guides you through:
|
|
162
|
+
|
|
163
|
+
1. **Vault Password** — Create a master password that encrypts sensitive data
|
|
164
|
+
2. **First Engagement** — Set up your first project and select engagement type
|
|
165
|
+
3. **Tool Check** — Detect and optionally install missing security tools
|
|
166
|
+
4. **AI Setup** — Configure Ollama for AI features (optional)
|
|
167
|
+
5. **Tutorial** — Option to run the interactive tutorial (recommended)
|
|
168
|
+
|
|
169
|
+
### Step 5: You're Ready!
|
|
170
|
+
|
|
171
|
+
Once setup completes, you'll see the main menu.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## System Requirements
|
|
176
|
+
|
|
177
|
+
| Component | Minimum | Recommended |
|
|
178
|
+
|-----------|---------|-------------|
|
|
179
|
+
| **OS** | Ubuntu 22.04+ | Kali Linux |
|
|
180
|
+
| **Python** | 3.9+ | 3.11+ |
|
|
181
|
+
| **RAM** | 4GB | 8GB+ |
|
|
182
|
+
| **Disk** | 10GB | 50GB+ |
|
|
183
|
+
|
|
184
|
+
### Supported Operating Systems
|
|
185
|
+
|
|
186
|
+
| OS | Status | Notes |
|
|
187
|
+
|----|--------|-------|
|
|
188
|
+
| **Kali Linux** | ✅ Recommended | All pentesting tools pre-installed |
|
|
189
|
+
| **Ubuntu 22.04+** | ✅ Supported | Tools installed via `souleyez setup` |
|
|
190
|
+
| **Parrot OS** | ✅ Supported | Security-focused distro |
|
|
191
|
+
| **Debian 12+** | ✅ Supported | Stable base system |
|
|
192
|
+
| **macOS/Windows** | ❌ Not Supported | Use Linux in a VM |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Common Commands
|
|
197
|
+
|
|
198
|
+
| Command | What it does |
|
|
199
|
+
|---------|--------------|
|
|
200
|
+
| `souleyez interactive` | Launch the main interface |
|
|
201
|
+
| `souleyez dashboard` | Real-time monitoring view |
|
|
202
|
+
| `souleyez doctor` | Check if everything is set up correctly |
|
|
203
|
+
| `souleyez setup` | Install/update pentesting tools |
|
|
204
|
+
| `souleyez --help` | Show all available commands |
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Security & Encryption
|
|
209
|
+
|
|
210
|
+
SoulEyez encrypts all stored credentials using **Fernet (AES-128-CBC + HMAC-SHA256)** with PBKDF2 key derivation (600k iterations).
|
|
211
|
+
|
|
212
|
+
- Master password is never stored (cannot be recovered if lost)
|
|
213
|
+
- Credentials encrypted at rest with industry-standard cryptography
|
|
214
|
+
- Sensitive data is masked in the UI until explicitly revealed
|
|
215
|
+
|
|
216
|
+
See [SECURITY.md](SECURITY.md) for complete security guidelines.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Documentation
|
|
221
|
+
|
|
222
|
+
- **[Getting Started](souleyez/docs/user-guide/getting-started.md)** — Your first engagement in 10 minutes
|
|
223
|
+
- **[Installation Guide](souleyez/docs/user-guide/installation.md)** — Detailed setup instructions
|
|
224
|
+
- **[Workflows](souleyez/docs/user-guide/workflows.md)** — Complete pentesting workflows
|
|
225
|
+
- **[Auto-Chaining](souleyez/docs/user-guide/auto-chaining.md)** — Automatic follow-up scans
|
|
226
|
+
- **[Configuration](souleyez/docs/user-guide/configuration.md)** — All configuration options
|
|
227
|
+
- **[Troubleshooting](souleyez/docs/user-guide/troubleshooting.md)** — Common issues and fixes
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Troubleshooting
|
|
232
|
+
|
|
233
|
+
| Problem | Solution |
|
|
234
|
+
|---------|----------|
|
|
235
|
+
| "command not found: souleyez" | Run `pipx ensurepath` then restart terminal |
|
|
236
|
+
| "Tool not found" errors | Run `souleyez setup` to install missing tools |
|
|
237
|
+
| Forgot vault password | Data is encrypted — start fresh with `rm -rf ~/.souleyez` |
|
|
238
|
+
| Something seems broken | Run `souleyez doctor` to diagnose |
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Glossary
|
|
243
|
+
|
|
244
|
+
New to pentesting? Here are some common terms:
|
|
245
|
+
|
|
246
|
+
| Term | Meaning |
|
|
247
|
+
|------|---------|
|
|
248
|
+
| **Engagement** | A project or assessment — contains all data for one test |
|
|
249
|
+
| **Target/Host** | A computer, server, or device you're testing |
|
|
250
|
+
| **Finding** | A security issue or vulnerability you discovered |
|
|
251
|
+
| **Credential** | Username/password combo found during testing |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Support & Feedback
|
|
256
|
+
|
|
257
|
+
- **Issues**: https://github.com/cyber-soul-security/souleyez/issues
|
|
258
|
+
- **Security Issues**: cysoul.secit@gmail.com (see [SECURITY.md](SECURITY.md))
|
|
259
|
+
- **General**: cysoul.secit@gmail.com
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## License
|
|
264
|
+
|
|
265
|
+
See [LICENSE](LICENSE) for details.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
**Version**: 2.43.1 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
|