souleyez 2.43.1__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/docs/README.md +1 -1
- souleyez/main.py +1 -1
- souleyez/ui/tool_setup.py +71 -6
- souleyez/utils/tool_checker.py +2 -2
- {souleyez-2.43.1.dist-info → souleyez-2.43.3.dist-info}/METADATA +1 -1
- {souleyez-2.43.1.dist-info → souleyez-2.43.3.dist-info}/RECORD +11 -11
- {souleyez-2.43.1.dist-info → souleyez-2.43.3.dist-info}/WHEEL +0 -0
- {souleyez-2.43.1.dist-info → souleyez-2.43.3.dist-info}/entry_points.txt +0 -0
- {souleyez-2.43.1.dist-info → souleyez-2.43.3.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.43.1.dist-info → souleyez-2.43.3.dist-info}/top_level.txt +0 -0
souleyez/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = '2.43.
|
|
1
|
+
__version__ = '2.43.3'
|
|
2
2
|
|
souleyez/docs/README.md
CHANGED
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.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/ui/tool_setup.py
CHANGED
|
@@ -797,22 +797,87 @@ def _install_snap_tool(console, tool: Dict) -> bool:
|
|
|
797
797
|
|
|
798
798
|
def _install_git_tool(console, tool: Dict) -> bool:
|
|
799
799
|
"""Install a tool from git (requires sudo for /opt)."""
|
|
800
|
+
import re
|
|
801
|
+
|
|
800
802
|
name = tool['name']
|
|
801
803
|
cmd = tool['install']
|
|
802
804
|
|
|
803
|
-
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
|
|
870
|
+
|
|
871
|
+
console.print(f" [green]✓[/green]")
|
|
872
|
+
return True
|
|
804
873
|
|
|
805
|
-
#
|
|
874
|
+
# Fallback: run the full command as-is (no git clone detected)
|
|
806
875
|
success, _, stderr = _run_command(cmd, console, capture=True)
|
|
807
876
|
|
|
808
877
|
if success:
|
|
809
878
|
console.print("[green]✓[/green]")
|
|
810
879
|
return True
|
|
811
880
|
else:
|
|
812
|
-
# Check if directory already exists
|
|
813
|
-
if "already exists" in stderr:
|
|
814
|
-
console.print("[green]✓ (already installed)[/green]")
|
|
815
|
-
return True
|
|
816
881
|
console.print(f"[red]✗[/red]")
|
|
817
882
|
if stderr:
|
|
818
883
|
console.print(f" [dim]{stderr[:80]}[/dim]")
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.3
|
|
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=hQfhNFZmys4vpRUV0tekkwul1bHV-z9AHclh8q4E4WQ,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=eQpWyYeCz8IvNFBJmqOqFv6x05FT8gOtUC62M_a-0UI,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=yY6yvWMHZZXVEQC2JeQ8Tui0TyXKbWNabPlh0X5BdO8,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
|
|
@@ -364,15 +364,15 @@ souleyez/ui/team_dashboard.py,sha256=ejM_44nbJbEIPxxxdEK7SCPcqQtcuJLjoO-C53qED2Y
|
|
|
364
364
|
souleyez/ui/template_selector.py,sha256=qQJkFNnVjYctb-toeYlupP_U1asGrJWYi5-HR89Ab9g,19103
|
|
365
365
|
souleyez/ui/terminal.py,sha256=Sw9ma1-DZclJE1sENjTZ3Q7r-Ct1NiB3Lpmv-RZW5tE,2372
|
|
366
366
|
souleyez/ui/timeline_view.py,sha256=Ze8Mev9VE4_ECdNFEJwZK2V42EBguR83uCCdwAbJqmc,11111
|
|
367
|
-
souleyez/ui/tool_setup.py,sha256=
|
|
367
|
+
souleyez/ui/tool_setup.py,sha256=HkRTjzN7FHUs_XKtNYnphkdXb5kC4P6ghpI8TeCuEjU,36375
|
|
368
368
|
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=YZjEeHudjglvJk_MA-iQLzqEItFybhCy6PfaPoBANtE,30830
|
|
373
|
+
souleyez-2.43.3.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
|
|
374
|
+
souleyez-2.43.3.dist-info/METADATA,sha256=SgqKTr7vd8TI_8YKA8yOHU1-QJez9VJH8HlFr9cAJvU,10425
|
|
375
|
+
souleyez-2.43.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
376
|
+
souleyez-2.43.3.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
|
|
377
|
+
souleyez-2.43.3.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
|
|
378
|
+
souleyez-2.43.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|