souleyez 2.43.3__py3-none-any.whl → 2.43.5__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/engine/result_handler.py +24 -1
- souleyez/main.py +1 -1
- souleyez/ui/dashboard.py +12 -1
- souleyez/ui/interactive.py +13 -0
- {souleyez-2.43.3.dist-info → souleyez-2.43.5.dist-info}/METADATA +1 -1
- {souleyez-2.43.3.dist-info → souleyez-2.43.5.dist-info}/RECORD +12 -12
- {souleyez-2.43.3.dist-info → souleyez-2.43.5.dist-info}/WHEEL +0 -0
- {souleyez-2.43.3.dist-info → souleyez-2.43.5.dist-info}/entry_points.txt +0 -0
- {souleyez-2.43.3.dist-info → souleyez-2.43.5.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.43.3.dist-info → souleyez-2.43.5.dist-info}/top_level.txt +0 -0
souleyez/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = '2.43.
|
|
1
|
+
__version__ = '2.43.5'
|
|
2
2
|
|
souleyez/docs/README.md
CHANGED
|
@@ -3285,9 +3285,12 @@ def parse_http_fingerprint_job(engagement_id: int, log_path: str, job: Dict[str,
|
|
|
3285
3285
|
# Get tool recommendations
|
|
3286
3286
|
recommendations = get_tool_recommendations(parsed)
|
|
3287
3287
|
|
|
3288
|
-
# Determine status
|
|
3288
|
+
# Determine status and build summary
|
|
3289
|
+
summary_parts = []
|
|
3290
|
+
|
|
3289
3291
|
if parsed.get('error'):
|
|
3290
3292
|
status = STATUS_ERROR
|
|
3293
|
+
summary_parts.append(f"Error: {parsed.get('error')}")
|
|
3291
3294
|
elif parsed.get('managed_hosting') or parsed.get('waf') or parsed.get('cdn'):
|
|
3292
3295
|
status = STATUS_DONE # Found useful info
|
|
3293
3296
|
elif parsed.get('server'):
|
|
@@ -3295,11 +3298,31 @@ def parse_http_fingerprint_job(engagement_id: int, log_path: str, job: Dict[str,
|
|
|
3295
3298
|
else:
|
|
3296
3299
|
status = STATUS_NO_RESULTS
|
|
3297
3300
|
|
|
3301
|
+
# Build summary for successful scans
|
|
3302
|
+
if not parsed.get('error'):
|
|
3303
|
+
if parsed.get('server'):
|
|
3304
|
+
summary_parts.append(f"Server: {parsed.get('server')}")
|
|
3305
|
+
if parsed.get('managed_hosting'):
|
|
3306
|
+
summary_parts.append(f"Platform: {parsed.get('managed_hosting')}")
|
|
3307
|
+
if parsed.get('waf'):
|
|
3308
|
+
summary_parts.append(f"WAF: {', '.join(parsed.get('waf', []))}")
|
|
3309
|
+
if parsed.get('cdn'):
|
|
3310
|
+
summary_parts.append(f"CDN: {', '.join(parsed.get('cdn', []))}")
|
|
3311
|
+
if parsed.get('technologies'):
|
|
3312
|
+
techs = parsed.get('technologies', [])
|
|
3313
|
+
if len(techs) <= 3:
|
|
3314
|
+
summary_parts.append(f"Tech: {', '.join(techs)}")
|
|
3315
|
+
else:
|
|
3316
|
+
summary_parts.append(f"Tech: {', '.join(techs[:3])} +{len(techs)-3} more")
|
|
3317
|
+
|
|
3318
|
+
summary = ' | '.join(summary_parts) if summary_parts else 'No fingerprint data detected'
|
|
3319
|
+
|
|
3298
3320
|
return {
|
|
3299
3321
|
'tool': 'http_fingerprint',
|
|
3300
3322
|
'status': status,
|
|
3301
3323
|
'target': target,
|
|
3302
3324
|
'target_host': target_host,
|
|
3325
|
+
'summary': summary,
|
|
3303
3326
|
# Core fingerprint data
|
|
3304
3327
|
'server': parsed.get('server'),
|
|
3305
3328
|
'managed_hosting': parsed.get('managed_hosting'),
|
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.5')
|
|
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/dashboard.py
CHANGED
|
@@ -1392,9 +1392,20 @@ def render_active_jobs(width: int, engagement_id: Optional[int] = None):
|
|
|
1392
1392
|
if engagement_id is not None and job_eng_id != engagement_id:
|
|
1393
1393
|
warning = click.style(" [!other]", fg='red')
|
|
1394
1394
|
|
|
1395
|
-
|
|
1395
|
+
# Check for scope warnings
|
|
1396
|
+
job_warnings = job.get('metadata', {}).get('warnings', [])
|
|
1397
|
+
scope_warning = any('SCOPE' in w for w in job_warnings)
|
|
1398
|
+
scope_indicator = click.style("⚠ ", fg='yellow') if scope_warning else ""
|
|
1399
|
+
|
|
1400
|
+
job_line = f" [{jid:>3}] {scope_indicator}{tool:<10} {target:<30} {status_str:<18} {elapsed}{warning}"
|
|
1396
1401
|
lines.append(job_line)
|
|
1397
1402
|
|
|
1403
|
+
# Show scope warning details on next line if present
|
|
1404
|
+
if scope_warning:
|
|
1405
|
+
for w in job_warnings:
|
|
1406
|
+
if 'SCOPE' in w:
|
|
1407
|
+
lines.append(click.style(f" └─ {w}", fg='yellow'))
|
|
1408
|
+
|
|
1398
1409
|
return lines
|
|
1399
1410
|
|
|
1400
1411
|
|
souleyez/ui/interactive.py
CHANGED
|
@@ -4599,6 +4599,12 @@ def view_jobs_menu():
|
|
|
4599
4599
|
rule_id = job.get('rule_id') or job.get('metadata', {}).get('rule_id')
|
|
4600
4600
|
rule_display = f"#{rule_id}" if rule_id else '-'
|
|
4601
4601
|
|
|
4602
|
+
# Check for scope warnings
|
|
4603
|
+
job_warnings = job.get('metadata', {}).get('warnings', [])
|
|
4604
|
+
scope_warning = any('SCOPE' in w for w in job_warnings)
|
|
4605
|
+
if scope_warning:
|
|
4606
|
+
target = f"[yellow]⚠[/yellow] {target}"
|
|
4607
|
+
|
|
4602
4608
|
# Checkbox based on selection
|
|
4603
4609
|
checkbox = '●' if job_id_int in selected_jobs else '○'
|
|
4604
4610
|
table.add_row(checkbox, jid, status_display, tool, target, label, parent_display, rule_display)
|
|
@@ -5435,6 +5441,13 @@ def view_job_detail(job_id: int):
|
|
|
5435
5441
|
else:
|
|
5436
5442
|
click.echo(f"Reason: Manual (created by user)")
|
|
5437
5443
|
|
|
5444
|
+
# Show scope warnings if any
|
|
5445
|
+
warnings = metadata.get('warnings', [])
|
|
5446
|
+
if warnings:
|
|
5447
|
+
click.echo()
|
|
5448
|
+
for warning in warnings:
|
|
5449
|
+
click.echo(click.style(f" ⚠ {warning}", fg='yellow', bold=True))
|
|
5450
|
+
|
|
5438
5451
|
if job.get('pid'):
|
|
5439
5452
|
click.echo(f"PID: {click.style(str(job['pid']), fg='cyan')}")
|
|
5440
5453
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.5
|
|
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=Xw87vqKskpwi-pQCDE6S_GKsPiR7XqEGoV-PRxHMQ2c,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=IOeninidtEeQcExYhmlM9GzbQAIBec3IoDJjnbC8yTU,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=TcNcs_55hpXB_ASRqvW95DAj9kXuGv1A5f4Z8At0Ybo,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
|
|
@@ -152,7 +152,7 @@ souleyez/engine/job_status.py,sha256=OAEf2rAzapm55m4tc3PSilotdA5ONX15JavUMLre0is
|
|
|
152
152
|
souleyez/engine/loader.py,sha256=ke6QQVVWozDnqGNBotajC3RBYOa2_DZmv5DAnDZVgIc,2769
|
|
153
153
|
souleyez/engine/log_sanitizer.py,sha256=QHF6zSms-wHo6SbL6fHXIh1GG-8G34lE7kl45nbPn70,7130
|
|
154
154
|
souleyez/engine/manager.py,sha256=aBQMoib-VWNXtIp5Qn34tRj1P1jiLpwAIoo1fexAaLU,3629
|
|
155
|
-
souleyez/engine/result_handler.py,sha256=
|
|
155
|
+
souleyez/engine/result_handler.py,sha256=iJBGy9apzYYp8nQn70wnqd09iYieGeB8GNm9ESkBFag,142311
|
|
156
156
|
souleyez/engine/worker_manager.py,sha256=B7b8RbkKTNofmiIyHTNgdikoZCLXpB-iIl1S4-U3q9o,6127
|
|
157
157
|
souleyez/export/__init__.py,sha256=2kFHftSqqrRUG6PhtfhCyhnkpkjc-8Zb4utGo-Nb6B4,61
|
|
158
158
|
souleyez/export/evidence_bundle.py,sha256=hqPn_h2CidhL-1VAT0qraZ8r1yfnUTnLZ3RfPPCK5Ds,9966
|
|
@@ -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=36XIGCMULMpzU7mhZMaUNof9Q5A0YdlZGrQRipc57kI,179004
|
|
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
|
|
@@ -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=7sHfvx4P8n5irLVEG1w_1sASTBBDWWUW2yIVuCsx-y4,1407173
|
|
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
|
|
@@ -370,9 +370,9 @@ souleyez/ui/tutorial_state.py,sha256=Thf7_qCj4VKjG7UqgJqa9kjIqiFUU-7Q7kG4v-u2B4A
|
|
|
370
370
|
souleyez/ui/wazuh_vulns_view.py,sha256=3vJJEmrjgS2wD6EDB7ZV7WxgytBHTm-1WqNDjp7lVEI,21830
|
|
371
371
|
souleyez/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
372
372
|
souleyez/utils/tool_checker.py,sha256=YZjEeHudjglvJk_MA-iQLzqEItFybhCy6PfaPoBANtE,30830
|
|
373
|
-
souleyez-2.43.
|
|
374
|
-
souleyez-2.43.
|
|
375
|
-
souleyez-2.43.
|
|
376
|
-
souleyez-2.43.
|
|
377
|
-
souleyez-2.43.
|
|
378
|
-
souleyez-2.43.
|
|
373
|
+
souleyez-2.43.5.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
|
|
374
|
+
souleyez-2.43.5.dist-info/METADATA,sha256=DFvOmIQeXr4F9SnA--_Zt0Fi9YKgUqLLKai48C9vo-c,10425
|
|
375
|
+
souleyez-2.43.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
376
|
+
souleyez-2.43.5.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
|
|
377
|
+
souleyez-2.43.5.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
|
|
378
|
+
souleyez-2.43.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|