souleyez 2.43.15__py3-none-any.whl → 2.43.18__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/docs/README.md +1 -1
- souleyez/main.py +1 -1
- souleyez/plugins/http_fingerprint.py +13 -9
- souleyez/ui/dashboard.py +27 -2
- {souleyez-2.43.15.dist-info → souleyez-2.43.18.dist-info}/METADATA +2 -2
- {souleyez-2.43.15.dist-info → souleyez-2.43.18.dist-info}/RECORD +11 -11
- {souleyez-2.43.15.dist-info → souleyez-2.43.18.dist-info}/WHEEL +0 -0
- {souleyez-2.43.15.dist-info → souleyez-2.43.18.dist-info}/entry_points.txt +0 -0
- {souleyez-2.43.15.dist-info → souleyez-2.43.18.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.43.15.dist-info → souleyez-2.43.18.dist-info}/top_level.txt +0 -0
souleyez/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = '2.43.
|
|
1
|
+
__version__ = '2.43.18'
|
|
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.18')
|
|
177
177
|
def cli():
|
|
178
178
|
"""SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
|
|
179
179
|
from souleyez.log_config import init_logging
|
|
@@ -334,6 +334,10 @@ class HttpFingerprintPlugin(PluginBase):
|
|
|
334
334
|
|
|
335
335
|
is_https = parsed.scheme == 'https'
|
|
336
336
|
|
|
337
|
+
# Check if target is an IP address (for special handling)
|
|
338
|
+
import re
|
|
339
|
+
is_ip_target = bool(re.match(r'^(\d{1,3}\.){3}\d{1,3}$', parsed.hostname or ''))
|
|
340
|
+
|
|
337
341
|
# Create request with common browser headers
|
|
338
342
|
req = urllib.request.Request(
|
|
339
343
|
url,
|
|
@@ -346,14 +350,15 @@ class HttpFingerprintPlugin(PluginBase):
|
|
|
346
350
|
}
|
|
347
351
|
)
|
|
348
352
|
|
|
353
|
+
# Always create SSL context with verification disabled
|
|
354
|
+
# This handles: 1) HTTPS targets, 2) HTTP->HTTPS redirects, 3) IP targets with invalid certs
|
|
355
|
+
ctx = ssl.create_default_context()
|
|
356
|
+
ctx.check_hostname = False
|
|
357
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
358
|
+
|
|
349
359
|
try:
|
|
350
|
-
#
|
|
360
|
+
# Get TLS info for HTTPS targets
|
|
351
361
|
if is_https:
|
|
352
|
-
ctx = ssl.create_default_context()
|
|
353
|
-
ctx.check_hostname = False
|
|
354
|
-
ctx.verify_mode = ssl.CERT_NONE
|
|
355
|
-
|
|
356
|
-
# Get TLS info
|
|
357
362
|
try:
|
|
358
363
|
with socket.create_connection((parsed.hostname, parsed.port or 443), timeout=timeout) as sock:
|
|
359
364
|
with ctx.wrap_socket(sock, server_hostname=parsed.hostname) as ssock:
|
|
@@ -368,9 +373,8 @@ class HttpFingerprintPlugin(PluginBase):
|
|
|
368
373
|
except Exception:
|
|
369
374
|
pass # TLS info is optional
|
|
370
375
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
response = urllib.request.urlopen(req, timeout=timeout) # nosec B310 - scheme validated above
|
|
376
|
+
# Always pass SSL context (handles HTTP->HTTPS redirects)
|
|
377
|
+
response = urllib.request.urlopen(req, timeout=timeout, context=ctx) # nosec B310 - scheme validated above
|
|
374
378
|
|
|
375
379
|
result['status_code'] = response.getcode()
|
|
376
380
|
|
souleyez/ui/dashboard.py
CHANGED
|
@@ -2358,6 +2358,31 @@ def render_live_log(job_id: Optional[int], width: int, height: int):
|
|
|
2358
2358
|
find_word = "finding" if findings_added == 1 else "findings"
|
|
2359
2359
|
lines.append(click.style(f" • {findings_added} security {find_word} detected", fg='red', bold=True))
|
|
2360
2360
|
|
|
2361
|
+
elif tool == 'http_fingerprint':
|
|
2362
|
+
# Show fingerprint summary
|
|
2363
|
+
server = result.get('server')
|
|
2364
|
+
managed_hosting = result.get('managed_hosting')
|
|
2365
|
+
waf = result.get('waf', [])
|
|
2366
|
+
cdn = result.get('cdn', [])
|
|
2367
|
+
technologies = result.get('technologies', [])
|
|
2368
|
+
redirect_url = result.get('redirect_url')
|
|
2369
|
+
status_code = result.get('status_code')
|
|
2370
|
+
|
|
2371
|
+
if status_code:
|
|
2372
|
+
lines.append(f" • HTTP Status: {status_code}")
|
|
2373
|
+
if redirect_url:
|
|
2374
|
+
lines.append(f" • Redirects to: {redirect_url}")
|
|
2375
|
+
if server:
|
|
2376
|
+
lines.append(f" • Server: {server}")
|
|
2377
|
+
if managed_hosting:
|
|
2378
|
+
lines.append(click.style(f" • Managed Hosting: {managed_hosting}", fg='yellow'))
|
|
2379
|
+
if waf:
|
|
2380
|
+
lines.append(click.style(f" • WAF Detected: {', '.join(waf)}", fg='red', bold=True))
|
|
2381
|
+
if cdn:
|
|
2382
|
+
lines.append(f" • CDN: {', '.join(cdn)}")
|
|
2383
|
+
if technologies:
|
|
2384
|
+
lines.append(f" • Technologies: {', '.join(technologies[:5])}")
|
|
2385
|
+
|
|
2361
2386
|
else:
|
|
2362
2387
|
# Generic result display
|
|
2363
2388
|
for key, value in result.items():
|
|
@@ -3360,7 +3385,7 @@ def _show_dashboard_menu(engagement_id: int) -> str:
|
|
|
3360
3385
|
click.echo(" " + "─" * 76)
|
|
3361
3386
|
click.echo(" " + click.style("[h]", fg='cyan', bold=True) + " or " +
|
|
3362
3387
|
click.style("[8]", fg='cyan') + " 🎯 Hosts - Discovered hosts, tags, filtering")
|
|
3363
|
-
click.echo(" " + click.style("[
|
|
3388
|
+
click.echo(" " + click.style("[s]", fg='cyan', bold=True) + " or " +
|
|
3364
3389
|
click.style("[9]", fg='cyan') + " 🔌 Services - Open ports, service enumeration")
|
|
3365
3390
|
click.echo(" " + click.style("[f]", fg='cyan', bold=True) + " or " +
|
|
3366
3391
|
click.style("[10]", fg='cyan') + " 🔍 Findings - All vulnerabilities (detailed view)")
|
|
@@ -3405,7 +3430,7 @@ def _show_dashboard_menu(engagement_id: int) -> str:
|
|
|
3405
3430
|
'r': 'reports', '7': 'reports',
|
|
3406
3431
|
# Data Management (10 items: 8-17)
|
|
3407
3432
|
'h': 'hosts', '8': 'hosts',
|
|
3408
|
-
'
|
|
3433
|
+
's': 'services', '9': 'services',
|
|
3409
3434
|
'f': 'findings', '10': 'findings',
|
|
3410
3435
|
'c': 'credentials', '11': 'credentials',
|
|
3411
3436
|
'b': 'web_paths', '12': 'web_paths',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.18
|
|
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>
|
|
@@ -266,4 +266,4 @@ See [LICENSE](LICENSE) for details.
|
|
|
266
266
|
|
|
267
267
|
---
|
|
268
268
|
|
|
269
|
-
**Version**: 2.43.
|
|
269
|
+
**Version**: 2.43.18 | **Maintainer**: [CyberSoul Security](https://www.cybersoulsecurity.com)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
souleyez/__init__.py,sha256=
|
|
1
|
+
souleyez/__init__.py,sha256=Px8tXuFPUMsfvCpC9dq17p-kFvkY9xfhCAyR-X9AhDA,25
|
|
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=3TY6fuB1uAuZzgWnhMu2UcbKFYsBPGSPe--a6K8pTrk,129101
|
|
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=9UmX416xxyGhj56UibcGsDt5p_qYoaT5ID1CzOHGvMk,7188
|
|
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
|
|
@@ -229,7 +229,7 @@ souleyez/plugins/ffuf.py,sha256=7c1-Q7xXTMmH_2wHXikjmZnSgZL13Hj5E_asBxZ6Y5U,1165
|
|
|
229
229
|
souleyez/plugins/firmware_extract.py,sha256=_hZXx6cHb9noM6uVgi3hwrJLw8hE9mDUelTEHwoIdCU,6460
|
|
230
230
|
souleyez/plugins/gobuster.py,sha256=y8QeEjMR5_2tf-T63nxFRUtWmlCzrPez2I4nLqPNOfY,32114
|
|
231
231
|
souleyez/plugins/hashcat.py,sha256=aigfwBu9IorXKgbyEIWx0qOCEdr1wnZaPqdYwh0PITc,10381
|
|
232
|
-
souleyez/plugins/http_fingerprint.py,sha256=
|
|
232
|
+
souleyez/plugins/http_fingerprint.py,sha256=4ukU-TgcPjpccf929BpJbjfcijxsfWxhUPe0MrEoWf8,21424
|
|
233
233
|
souleyez/plugins/hydra.py,sha256=kfVJwgh3x1DC0wEtA-lkoY7qhQH1qKViYexUECZSPY4,29520
|
|
234
234
|
souleyez/plugins/impacket_getnpusers.py,sha256=6TBxVTO9NGUbn5ShV-dCxPP11CFqf-Y3lAgt8_oP2Vg,8652
|
|
235
235
|
souleyez/plugins/impacket_psexec.py,sha256=gU_MDSazDMj1TeWm5V9cD6wrLe3ULwbDv4jhg3Vm2rQ,8813
|
|
@@ -336,7 +336,7 @@ souleyez/ui/ai_quotes.py,sha256=Ho2QCYIFfks6tPIRFwVUKpvfGChUduWLMpmIDJV4xh0,5489
|
|
|
336
336
|
souleyez/ui/attack_surface.py,sha256=PMClCqiw1fIFFpYTghGKnXykamWFWgvraEBQzkiyuF8,196226
|
|
337
337
|
souleyez/ui/chain_rules_view.py,sha256=BZ7I3UnQEDtt9AWVqufdu1soZLkBn3cMu5lfArnx9aI,63228
|
|
338
338
|
souleyez/ui/correlation_view.py,sha256=BxJytk8Zq2-MhrMFgf4ZgN5G0-xU3ZdxqNWdRqMghxU,24674
|
|
339
|
-
souleyez/ui/dashboard.py,sha256=
|
|
339
|
+
souleyez/ui/dashboard.py,sha256=N7Ipq5AbF_bJV9pVSsVxXuawrZN0rTMFlBM-KTnnoIU,180581
|
|
340
340
|
souleyez/ui/deliverables_view.py,sha256=hxYCwcZNzT0loZMSQXODRuZXDNZFrHZ8FTKwcwuZdoI,9604
|
|
341
341
|
souleyez/ui/design_system.py,sha256=wyI73gwBGQDzo3L_JYn7DiEGXWByFkRjlDkp5MEpZ3s,3415
|
|
342
342
|
souleyez/ui/errors.py,sha256=vk4gMP5UyLd3W-Gfz06C2B_v4ra8qcie6NFmz1VjY8o,10645
|
|
@@ -371,9 +371,9 @@ souleyez/ui/wazuh_vulns_view.py,sha256=3vJJEmrjgS2wD6EDB7ZV7WxgytBHTm-1WqNDjp7lV
|
|
|
371
371
|
souleyez/ui/wordlist_browser.py,sha256=iQ2YYxrVo8FGCfM-Bc0teVBijSAbd2rjbSQ2hOE7eiY,16110
|
|
372
372
|
souleyez/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
373
373
|
souleyez/utils/tool_checker.py,sha256=YzNajZpFyKJA5fp0Kq_gQ0YnKb7J1BaKJSZ8vP-IWj8,30868
|
|
374
|
-
souleyez-2.43.
|
|
375
|
-
souleyez-2.43.
|
|
376
|
-
souleyez-2.43.
|
|
377
|
-
souleyez-2.43.
|
|
378
|
-
souleyez-2.43.
|
|
379
|
-
souleyez-2.43.
|
|
374
|
+
souleyez-2.43.18.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
|
|
375
|
+
souleyez-2.43.18.dist-info/METADATA,sha256=kD8stPehWalncwAJpryqVuua6_J35FCre8UnGCAShH4,10427
|
|
376
|
+
souleyez-2.43.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
377
|
+
souleyez-2.43.18.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
|
|
378
|
+
souleyez-2.43.18.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
|
|
379
|
+
souleyez-2.43.18.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|