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 CHANGED
@@ -1,2 +1,2 @@
1
- __version__ = '2.43.3'
1
+ __version__ = '2.43.5'
2
2
 
souleyez/docs/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.43.3
3
+ **Version:** 2.43.5
4
4
  **Last Updated:** January 11, 2026
5
5
  **Organization:** CyberSoul Security
6
6
 
@@ -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.3')
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
- job_line = f" [{jid:>3}] {tool:<10} {target:<30} {status_str:<18} {elapsed}{warning}"
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
 
@@ -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
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=hQfhNFZmys4vpRUV0tekkwul1bHV-z9AHclh8q4E4WQ,24
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=eQpWyYeCz8IvNFBJmqOqFv6x05FT8gOtUC62M_a-0UI,129100
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=yY6yvWMHZZXVEQC2JeQ8Tui0TyXKbWNabPlh0X5BdO8,7187
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=vFWKydlWMhE8jjvVI29ZzRODMX2o3jtrreqKqAVkIT4,141198
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=zIRVFaRsx-AO1VXXpoKhs0_qmseyf71F2PtNPNheDn0,178462
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=RxfZ3yOfCnpWV0K1ta5Op3hP82eYGN0UYV8ME-41fuY,1406653
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.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,,
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,,