souleyez 2.43.5__py3-none-any.whl → 2.43.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- souleyez/__init__.py +1 -1
- souleyez/docs/README.md +2 -2
- souleyez/main.py +1 -1
- souleyez/ui/interactive.py +42 -11
- souleyez/utils/tool_checker.py +2 -2
- {souleyez-2.43.5.dist-info → souleyez-2.43.7.dist-info}/METADATA +1 -1
- {souleyez-2.43.5.dist-info → souleyez-2.43.7.dist-info}/RECORD +11 -11
- {souleyez-2.43.5.dist-info → souleyez-2.43.7.dist-info}/WHEEL +0 -0
- {souleyez-2.43.5.dist-info → souleyez-2.43.7.dist-info}/entry_points.txt +0 -0
- {souleyez-2.43.5.dist-info → souleyez-2.43.7.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.43.5.dist-info → souleyez-2.43.7.dist-info}/top_level.txt +0 -0
souleyez/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = '2.43.
|
|
1
|
+
__version__ = '2.43.7'
|
|
2
2
|
|
souleyez/docs/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# SoulEyez Documentation
|
|
2
2
|
|
|
3
|
-
**Version:** 2.43.
|
|
4
|
-
**Last Updated:** January
|
|
3
|
+
**Version:** 2.43.7
|
|
4
|
+
**Last Updated:** January 12, 2026
|
|
5
5
|
**Organization:** CyberSoul Security
|
|
6
6
|
|
|
7
7
|
Welcome to the SoulEyez documentation! This documentation covers architecture, development, user guides, and operational information for the SoulEyez penetration testing platform.
|
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.43.
|
|
176
|
+
@click.version_option(version='2.43.7')
|
|
177
177
|
def cli():
|
|
178
178
|
"""SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
|
|
179
179
|
from souleyez.log_config import init_logging
|
souleyez/ui/interactive.py
CHANGED
|
@@ -17,6 +17,7 @@ from rich.table import Table
|
|
|
17
17
|
from souleyez.ui.design_system import DesignSystem
|
|
18
18
|
from souleyez.engine.loader import discover_plugins
|
|
19
19
|
from souleyez.engine.background import enqueue_job, list_jobs, get_job
|
|
20
|
+
from souleyez.security.scope_validator import ScopeViolationError
|
|
20
21
|
from souleyez.storage.engagements import EngagementManager
|
|
21
22
|
from souleyez.storage.hosts import HostManager
|
|
22
23
|
from souleyez.storage.findings import FindingsManager
|
|
@@ -3955,19 +3956,29 @@ def launch_job(job_params: Dict[str, Any]) -> Optional[int]:
|
|
|
3955
3956
|
click.echo()
|
|
3956
3957
|
|
|
3957
3958
|
job_ids = []
|
|
3959
|
+
blocked_targets = []
|
|
3958
3960
|
for t in targets:
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
|
|
3962
|
-
|
|
3963
|
-
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
|
|
3967
|
-
|
|
3961
|
+
try:
|
|
3962
|
+
job_id = enqueue_job(
|
|
3963
|
+
tool=tool_name,
|
|
3964
|
+
target=t,
|
|
3965
|
+
args=args,
|
|
3966
|
+
label=label,
|
|
3967
|
+
metadata=metadata if metadata else None
|
|
3968
|
+
)
|
|
3969
|
+
job_ids.append(job_id)
|
|
3970
|
+
click.echo(click.style(f"✓ Job #{job_id} enqueued for {t}", fg='green'))
|
|
3971
|
+
except ScopeViolationError:
|
|
3972
|
+
blocked_targets.append(t)
|
|
3973
|
+
click.echo(click.style(f"✗ BLOCKED (out of scope): {t}", fg='red', bold=True))
|
|
3968
3974
|
|
|
3969
3975
|
click.echo()
|
|
3970
|
-
|
|
3976
|
+
if blocked_targets:
|
|
3977
|
+
click.echo(click.style(f"⚠ {len(blocked_targets)} targets blocked (out of scope)", fg='yellow', bold=True))
|
|
3978
|
+
if job_ids:
|
|
3979
|
+
click.echo(click.style(f"✓ {len(job_ids)} jobs enqueued successfully!", fg='green', bold=True))
|
|
3980
|
+
else:
|
|
3981
|
+
click.echo(click.style("✗ No jobs created - all targets blocked", fg='red', bold=True))
|
|
3971
3982
|
click.echo(f"Tool: {tool_name}")
|
|
3972
3983
|
if label:
|
|
3973
3984
|
click.echo(f"Label: {label}")
|
|
@@ -3998,6 +4009,15 @@ def launch_job(job_params: Dict[str, Any]) -> Optional[int]:
|
|
|
3998
4009
|
|
|
3999
4010
|
return job_id # Return the job_id
|
|
4000
4011
|
|
|
4012
|
+
except ScopeViolationError as e:
|
|
4013
|
+
click.echo()
|
|
4014
|
+
click.echo(click.style("✗ JOB BLOCKED - OUT OF SCOPE", fg='red', bold=True))
|
|
4015
|
+
click.echo(click.style(f" Target: {job_params.get('target', 'unknown')}", fg='red'))
|
|
4016
|
+
click.echo(click.style(f" Reason: {e}", fg='yellow'))
|
|
4017
|
+
click.echo()
|
|
4018
|
+
click.echo(click.style(" Scope enforcement is set to 'block' for this engagement.", fg='cyan'))
|
|
4019
|
+
click.echo(click.style(" Use 'souleyez scope' to view or modify scope settings.", fg='cyan'))
|
|
4020
|
+
return None
|
|
4001
4021
|
except Exception as e:
|
|
4002
4022
|
click.echo(click.style(f"✗ Error enqueueing job: {e}", fg='red'))
|
|
4003
4023
|
return None
|
|
@@ -5054,6 +5074,7 @@ def _view_ai_suggestions(engagement_id: int):
|
|
|
5054
5074
|
# Accept all suggestions
|
|
5055
5075
|
if click.confirm(f" Queue all {len(suggestions)} AI suggestions?", default=True):
|
|
5056
5076
|
queued = 0
|
|
5077
|
+
blocked = 0
|
|
5057
5078
|
for sug in suggestions:
|
|
5058
5079
|
try:
|
|
5059
5080
|
job_id = enqueue_job(
|
|
@@ -5065,12 +5086,17 @@ def _view_ai_suggestions(engagement_id: int):
|
|
|
5065
5086
|
)
|
|
5066
5087
|
if job_id:
|
|
5067
5088
|
queued += 1
|
|
5089
|
+
except ScopeViolationError:
|
|
5090
|
+
blocked += 1
|
|
5091
|
+
click.echo(click.style(f" ✗ BLOCKED: {sug['target']} (out of scope)", fg='red'))
|
|
5068
5092
|
except Exception as e:
|
|
5069
5093
|
pass
|
|
5070
5094
|
|
|
5071
5095
|
# Mark all as approved
|
|
5072
5096
|
_mark_suggestions_approved(engagement_id, [s for s in suggestions])
|
|
5073
|
-
|
|
5097
|
+
if blocked:
|
|
5098
|
+
click.echo(click.style(f"\n ⚠ {blocked} job(s) blocked (out of scope)", fg='yellow'))
|
|
5099
|
+
click.echo(click.style(f" ✓ Queued {queued} job(s)", fg='green'))
|
|
5074
5100
|
click.pause()
|
|
5075
5101
|
return
|
|
5076
5102
|
continue
|
|
@@ -5153,6 +5179,11 @@ def _view_suggestion_detail(engagement_id: int, suggestion: dict, all_suggestion
|
|
|
5153
5179
|
)
|
|
5154
5180
|
_mark_suggestions_approved(engagement_id, [suggestion])
|
|
5155
5181
|
click.echo(click.style(f"\n ✓ Queued job #{job_id}", fg='green'))
|
|
5182
|
+
except ScopeViolationError as e:
|
|
5183
|
+
click.echo()
|
|
5184
|
+
click.echo(click.style(" ✗ JOB BLOCKED - OUT OF SCOPE", fg='red', bold=True))
|
|
5185
|
+
click.echo(click.style(f" Target: {suggestion['target']}", fg='red'))
|
|
5186
|
+
click.echo(click.style(f" Reason: {e}", fg='yellow'))
|
|
5156
5187
|
except Exception as e:
|
|
5157
5188
|
click.echo(click.style(f"\n ✗ Failed to queue: {e}", fg='red'))
|
|
5158
5189
|
click.pause()
|
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 --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',
|
|
323
|
+
'install_kali': 'sudo apt install responder && sudo pip install --break-system-packages --ignore-installed aioquic',
|
|
324
|
+
'install_ubuntu': 'sudo git clone https://github.com/lgandx/Responder.git /opt/Responder && sudo pip install --break-system-packages --ignore-installed -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.7
|
|
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>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
souleyez/__init__.py,sha256=
|
|
1
|
+
souleyez/__init__.py,sha256=Lb8udMYpSku2n3LoV4h8IrBfVhpHDNBCZtfBIqVXqG8,24
|
|
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=Ll5DvA4AquhDeK-8Ovc_dILd0EVR_82bhrieo7gJp84,129100
|
|
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
|
|
@@ -104,7 +104,7 @@ souleyez/detection/__init__.py,sha256=QIhvXjFdjrquQ6A0VQ7GZQkK_EXB59t8Dv9PKXhEUe
|
|
|
104
104
|
souleyez/detection/attack_signatures.py,sha256=akgWwiIkh6WYnghCuLhRV0y6FS0SQ0caGF8tZUc49oA,6965
|
|
105
105
|
souleyez/detection/mitre_mappings.py,sha256=xejE80YK-g8kKaeQoo-vBl8P3t8RTTItbfN0NaVZw6s,20558
|
|
106
106
|
souleyez/detection/validator.py,sha256=-AJ7QSJ3-6jFKLnPG_Rc34IXyF4JPyI82BFUgTA9zw0,15641
|
|
107
|
-
souleyez/docs/README.md,sha256=
|
|
107
|
+
souleyez/docs/README.md,sha256=8Qda7HjHZfhOaVxHMzeAN47Kb2XB6j-rl5LDNfzGjw0,7187
|
|
108
108
|
souleyez/docs/api-reference/cli-commands.md,sha256=lTLFnILN3YRVdqCaag7WgsYXfDGglb1TuPexkxDsVdE,12917
|
|
109
109
|
souleyez/docs/api-reference/engagement-api.md,sha256=nd-EvQMtiJrobg2bzFEADp853HP1Uhb9dmgok0_-neE,11672
|
|
110
110
|
souleyez/docs/api-reference/integration-guide.md,sha256=c96uX79ukHyYotLa54wZ20Kx-EUZnrKegTeGkfLD-pw,16285
|
|
@@ -347,7 +347,7 @@ souleyez/ui/export_view.py,sha256=0nQvVsKk7FU4uRzSfJ_qBZh_Lfn8hgGA2rbJ5bNg5-Y,65
|
|
|
347
347
|
souleyez/ui/gap_analysis_view.py,sha256=AytAOEBq010wwo9hne1TE-uJpY_xicjLrFANbvN3r3w,30727
|
|
348
348
|
souleyez/ui/help_system.py,sha256=nKGxLaMi-TKYs6xudTyw_tZqBb1cGFEuYYh6N-MAsJE,16648
|
|
349
349
|
souleyez/ui/intelligence_view.py,sha256=VeAQ-3mANRnLIVpRqocL3JV0HUmJtADdxDeC5lzQhE0,32168
|
|
350
|
-
souleyez/ui/interactive.py,sha256=
|
|
350
|
+
souleyez/ui/interactive.py,sha256=3WUuQMTNvVjcklkKbxmZCSFL0PqcQEeiaONTDtl4duU,1409094
|
|
351
351
|
souleyez/ui/interactive_selector.py,sha256=6A51fgmFRnemBY0aCPHIhK2Rpba16NjSGKLzC0Q5vI8,16407
|
|
352
352
|
souleyez/ui/log_formatter.py,sha256=akhIkYoO_cCaKxS1V5N3iPmIrHzgsU7pmsedx70s9TI,3845
|
|
353
353
|
souleyez/ui/menu_components.py,sha256=N8zq2QXGmfaLJ08l53MMYt1y-5LRWgpZH6r8nXHonj8,3519
|
|
@@ -369,10 +369,10 @@ souleyez/ui/tutorial.py,sha256=XxF06vNVbuzHjkbHbft6fDPj6RSH0tqr4FZ3K8DPSrY,14800
|
|
|
369
369
|
souleyez/ui/tutorial_state.py,sha256=Thf7_qCj4VKjG7UqgJqa9kjIqiFUU-7Q7kG4v-u2B4A,8123
|
|
370
370
|
souleyez/ui/wazuh_vulns_view.py,sha256=3vJJEmrjgS2wD6EDB7ZV7WxgytBHTm-1WqNDjp7lVEI,21830
|
|
371
371
|
souleyez/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
372
|
-
souleyez/utils/tool_checker.py,sha256=
|
|
373
|
-
souleyez-2.43.
|
|
374
|
-
souleyez-2.43.
|
|
375
|
-
souleyez-2.43.
|
|
376
|
-
souleyez-2.43.
|
|
377
|
-
souleyez-2.43.
|
|
378
|
-
souleyez-2.43.
|
|
372
|
+
souleyez/utils/tool_checker.py,sha256=YzNajZpFyKJA5fp0Kq_gQ0YnKb7J1BaKJSZ8vP-IWj8,30868
|
|
373
|
+
souleyez-2.43.7.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
|
|
374
|
+
souleyez-2.43.7.dist-info/METADATA,sha256=xfcomMx9IvkcIyfSOHEzRZMI0i36RFDMRhBK7u6Q9ss,10425
|
|
375
|
+
souleyez-2.43.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
376
|
+
souleyez-2.43.7.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
|
|
377
|
+
souleyez-2.43.7.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
|
|
378
|
+
souleyez-2.43.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|