souleyez 2.43.25__py3-none-any.whl → 2.43.27__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.25'
1
+ __version__ = '2.43.27'
2
2
 
souleyez/docs/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SoulEyez Documentation
2
2
 
3
- **Version:** 2.43.25
3
+ **Version:** 2.43.27
4
4
  **Last Updated:** January 13, 2026
5
5
  **Organization:** CyberSoul Security
6
6
 
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.25')
176
+ @click.version_option(version='2.43.27')
177
177
  def cli():
178
178
  """SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
179
179
  from souleyez.log_config import init_logging
@@ -5907,6 +5907,48 @@ def view_job_detail(job_id: int):
5907
5907
  # Silently fail - not critical
5908
5908
  pass
5909
5909
 
5910
+ # SQLMap ERROR handler
5911
+ if not show_raw_logs and job.get('tool') == 'sqlmap' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
5912
+ try:
5913
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
5914
+ log_text = f.read()
5915
+
5916
+ click.echo(click.style("=" * 70, fg='red'))
5917
+ click.echo(click.style("[ERROR] SQLMAP SCAN FAILED", bold=True, fg='red'))
5918
+ click.echo(click.style("=" * 70, fg='red'))
5919
+ click.echo()
5920
+
5921
+ # Check for common sqlmap errors
5922
+ error_msg = None
5923
+ if 'connection timed out' in log_text.lower():
5924
+ error_msg = "Connection timed out - target may be slow or filtering"
5925
+ elif 'unable to connect' in log_text.lower():
5926
+ error_msg = "Unable to connect to target URL"
5927
+ elif 'page not found' in log_text.lower() or '404' in log_text:
5928
+ error_msg = "Target page not found (404)"
5929
+ elif 'invalid target url' in log_text.lower():
5930
+ error_msg = "Invalid target URL - check the URL format"
5931
+ elif 'WAF/IPS' in log_text or 'firewall' in log_text.lower():
5932
+ error_msg = "WAF/IPS detected - try --tamper scripts"
5933
+ elif 'all tested parameters do not appear' in log_text.lower():
5934
+ error_msg = "No injectable parameters found"
5935
+ elif '[CRITICAL]' in log_text:
5936
+ match = re.search(r'\[CRITICAL\]\s*(.+?)(?:\n|$)', log_text)
5937
+ if match:
5938
+ error_msg = match.group(1).strip()[:100]
5939
+
5940
+ if error_msg:
5941
+ click.echo(f" {error_msg}")
5942
+ else:
5943
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
5944
+
5945
+ click.echo()
5946
+ click.echo(click.style("=" * 70, fg='red'))
5947
+ click.echo()
5948
+
5949
+ except Exception:
5950
+ pass
5951
+
5910
5952
  # Parse and display SQLMap results if available (only when not showing raw logs)
5911
5953
  if not show_raw_logs and job.get('tool') == 'sqlmap' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
5912
5954
  try:
@@ -6098,6 +6140,48 @@ def view_job_detail(job_id: int):
6098
6140
  import traceback
6099
6141
  traceback.print_exc()
6100
6142
 
6143
+ # WPScan ERROR handler
6144
+ if not show_raw_logs and job.get('tool') == 'wpscan' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
6145
+ try:
6146
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6147
+ log_text = f.read()
6148
+
6149
+ click.echo(click.style("=" * 70, fg='red'))
6150
+ click.echo(click.style("[ERROR] WPSCAN FAILED", bold=True, fg='red'))
6151
+ click.echo(click.style("=" * 70, fg='red'))
6152
+ click.echo()
6153
+
6154
+ # Check for common wpscan errors
6155
+ error_msg = None
6156
+ if 'The target is NOT running WordPress' in log_text:
6157
+ error_msg = "Target is not running WordPress"
6158
+ elif 'could not resolve' in log_text.lower():
6159
+ error_msg = "Could not resolve target hostname"
6160
+ elif 'Connection refused' in log_text or 'Unable to connect' in log_text:
6161
+ error_msg = "Connection refused - web server may be down"
6162
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
6163
+ error_msg = "Connection timed out - target may be slow or filtering"
6164
+ elif 'SSL' in log_text and ('error' in log_text.lower() or 'fail' in log_text.lower()):
6165
+ error_msg = "SSL error - try with --disable-tls-checks"
6166
+ elif 'API limit' in log_text.lower() or 'rate limit' in log_text.lower():
6167
+ error_msg = "WPScan API rate limit reached - try again later"
6168
+ elif '[!]' in log_text:
6169
+ match = re.search(r'\[!\]\s*(.+?)(?:\n|$)', log_text)
6170
+ if match:
6171
+ error_msg = match.group(1).strip()[:100]
6172
+
6173
+ if error_msg:
6174
+ click.echo(f" {error_msg}")
6175
+ else:
6176
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
6177
+
6178
+ click.echo()
6179
+ click.echo(click.style("=" * 70, fg='red'))
6180
+ click.echo()
6181
+
6182
+ except Exception:
6183
+ pass
6184
+
6101
6185
  # Parse and display WPScan results if available (only when not showing raw logs)
6102
6186
  if not show_raw_logs and job.get('tool') == 'wpscan' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
6103
6187
  try:
@@ -6291,6 +6375,46 @@ def view_job_detail(job_id: int):
6291
6375
  # Silently fail - not critical
6292
6376
  pass
6293
6377
 
6378
+ # DNSRecon ERROR handler
6379
+ if not show_raw_logs and job.get('tool') == 'dnsrecon' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
6380
+ try:
6381
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6382
+ log_text = f.read()
6383
+
6384
+ click.echo(click.style("=" * 70, fg='red'))
6385
+ click.echo(click.style("[ERROR] DNSRECON FAILED", bold=True, fg='red'))
6386
+ click.echo(click.style("=" * 70, fg='red'))
6387
+ click.echo()
6388
+
6389
+ # Check for common dnsrecon errors
6390
+ error_msg = None
6391
+ if 'Could not resolve' in log_text or 'NXDOMAIN' in log_text:
6392
+ error_msg = "Could not resolve domain - check if domain exists"
6393
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
6394
+ error_msg = "DNS query timed out - DNS server may be slow"
6395
+ elif 'SERVFAIL' in log_text:
6396
+ error_msg = "DNS server failure (SERVFAIL)"
6397
+ elif 'REFUSED' in log_text:
6398
+ error_msg = "DNS query refused - server may be blocking queries"
6399
+ elif 'No DNS records' in log_text:
6400
+ error_msg = "No DNS records found for domain"
6401
+ elif '[-]' in log_text:
6402
+ match = re.search(r'\[-\]\s*(.+?)(?:\n|$)', log_text)
6403
+ if match:
6404
+ error_msg = match.group(1).strip()[:100]
6405
+
6406
+ if error_msg:
6407
+ click.echo(f" {error_msg}")
6408
+ else:
6409
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
6410
+
6411
+ click.echo()
6412
+ click.echo(click.style("=" * 70, fg='red'))
6413
+ click.echo()
6414
+
6415
+ except Exception:
6416
+ pass
6417
+
6294
6418
  # Parse and display DNSRecon results if available (only when not showing raw logs)
6295
6419
  if not show_raw_logs and job.get('tool') == 'dnsrecon' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
6296
6420
  try:
@@ -6379,6 +6503,78 @@ def view_job_detail(job_id: int):
6379
6503
  # Parse and display Nmap results if available (only when not showing raw logs)
6380
6504
  # ARD plugin uses nmap under the hood, so include it here
6381
6505
  nmap_based_tools = ['nmap', 'ard']
6506
+
6507
+ # Nmap ERROR handler
6508
+ if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') == 'error' and log_path and os.path.exists(log_path):
6509
+ try:
6510
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6511
+ log_text = f.read()
6512
+
6513
+ click.echo(click.style("=" * 70, fg='red'))
6514
+ click.echo(click.style("[ERROR] NMAP SCAN FAILED", bold=True, fg='red'))
6515
+ click.echo(click.style("=" * 70, fg='red'))
6516
+ click.echo()
6517
+
6518
+ # Check for common nmap errors
6519
+ error_msg = None
6520
+ if 'Failed to resolve' in log_text or 'Failed to open' in log_text:
6521
+ error_msg = "Failed to resolve target hostname"
6522
+ elif 'No targets were specified' in log_text:
6523
+ error_msg = "No valid targets specified"
6524
+ elif 'requires root privileges' in log_text or 'Operation not permitted' in log_text:
6525
+ error_msg = "Scan type requires root privileges (try sudo)"
6526
+ elif 'Host seems down' in log_text:
6527
+ error_msg = "Host appears to be down or blocking probes"
6528
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
6529
+ error_msg = "Scan timed out - target may be slow or filtering"
6530
+ elif 'Connection refused' in log_text:
6531
+ error_msg = "Connection refused - no services on target ports"
6532
+
6533
+ if error_msg:
6534
+ click.echo(f" {error_msg}")
6535
+ else:
6536
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
6537
+
6538
+ click.echo()
6539
+ click.echo(click.style("=" * 70, fg='red'))
6540
+ click.echo()
6541
+
6542
+ except Exception:
6543
+ pass
6544
+
6545
+ # Nmap NO_RESULTS handler
6546
+ if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') == 'no_results' and log_path and os.path.exists(log_path):
6547
+ try:
6548
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6549
+ log_text = f.read()
6550
+
6551
+ click.echo(click.style("=" * 70, fg='cyan'))
6552
+ click.echo(click.style("NMAP SCAN RESULTS", bold=True, fg='cyan'))
6553
+ click.echo(click.style("=" * 70, fg='cyan'))
6554
+ click.echo()
6555
+ click.echo(" No open ports or services discovered.")
6556
+ click.echo()
6557
+
6558
+ # Check for additional context
6559
+ if 'Host seems down' in log_text:
6560
+ click.echo(click.style(" Note: Host appears to be down or blocking probes", fg='yellow'))
6561
+ elif 'filtered' in log_text.lower():
6562
+ click.echo(click.style(" Note: Ports may be filtered by firewall", fg='yellow'))
6563
+
6564
+ click.echo()
6565
+ click.echo(click.style(" This could mean:", fg='bright_black'))
6566
+ click.echo(click.style(" - All ports are closed or filtered", fg='bright_black'))
6567
+ click.echo(click.style(" - Host is behind a firewall", fg='bright_black'))
6568
+ click.echo(click.style(" - Try different scan types (-sS, -sT, -sU)", fg='bright_black'))
6569
+ click.echo(click.style(" - Try scanning more ports (-p-)", fg='bright_black'))
6570
+ click.echo()
6571
+ click.echo(click.style("=" * 70, fg='cyan'))
6572
+ click.echo()
6573
+
6574
+ except Exception:
6575
+ pass
6576
+
6577
+ # Nmap DONE/COMPLETED handler
6382
6578
  if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') in ['done', 'completed'] and log_path and os.path.exists(log_path):
6383
6579
  try:
6384
6580
  from souleyez.parsers.nmap_parser import parse_nmap_output
@@ -6545,6 +6741,48 @@ def view_job_detail(job_id: int):
6545
6741
  except Exception as e:
6546
6742
  pass
6547
6743
 
6744
+ # Nuclei ERROR handler
6745
+ if not show_raw_logs and job.get('tool') == 'nuclei' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
6746
+ try:
6747
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6748
+ log_text = f.read()
6749
+
6750
+ click.echo(click.style("=" * 70, fg='red'))
6751
+ click.echo(click.style("[ERROR] NUCLEI SCAN FAILED", bold=True, fg='red'))
6752
+ click.echo(click.style("=" * 70, fg='red'))
6753
+ click.echo()
6754
+
6755
+ # Check for common nuclei errors
6756
+ error_msg = None
6757
+ if 'Could not run nuclei' in log_text or 'not found' in log_text.lower():
6758
+ error_msg = "Nuclei binary not found - check installation"
6759
+ elif 'no templates' in log_text.lower():
6760
+ error_msg = "No templates found - update nuclei templates"
6761
+ elif 'rate limit' in log_text.lower():
6762
+ error_msg = "Rate limited by target - try with -rl flag"
6763
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
6764
+ error_msg = "Scan timed out - target may be slow or filtering"
6765
+ elif 'Connection refused' in log_text:
6766
+ error_msg = "Connection refused - target may be down"
6767
+ elif 'could not connect' in log_text.lower():
6768
+ error_msg = "Could not connect to target"
6769
+ elif '[ERR]' in log_text or '[FTL]' in log_text:
6770
+ match = re.search(r'\[(ERR|FTL)\]\s*(.+?)(?:\n|$)', log_text)
6771
+ if match:
6772
+ error_msg = match.group(2).strip()[:100]
6773
+
6774
+ if error_msg:
6775
+ click.echo(f" {error_msg}")
6776
+ else:
6777
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
6778
+
6779
+ click.echo()
6780
+ click.echo(click.style("=" * 70, fg='red'))
6781
+ click.echo()
6782
+
6783
+ except Exception:
6784
+ pass
6785
+
6548
6786
  # Parse and display Nuclei results if available (only when not showing raw logs)
6549
6787
  if not show_raw_logs and job.get('tool') == 'nuclei' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
6550
6788
  try:
@@ -6620,6 +6858,46 @@ def view_job_detail(job_id: int):
6620
6858
  except Exception as e:
6621
6859
  pass
6622
6860
 
6861
+ # theHarvester ERROR handler
6862
+ if not show_raw_logs and job.get('tool') == 'theharvester' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
6863
+ try:
6864
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6865
+ log_text = f.read()
6866
+
6867
+ click.echo(click.style("=" * 70, fg='red'))
6868
+ click.echo(click.style("[ERROR] THEHARVESTER FAILED", bold=True, fg='red'))
6869
+ click.echo(click.style("=" * 70, fg='red'))
6870
+ click.echo()
6871
+
6872
+ # Check for common theharvester errors
6873
+ error_msg = None
6874
+ if 'No results found' in log_text:
6875
+ error_msg = "No results found for the specified domain"
6876
+ elif 'Could not resolve' in log_text or 'DNS' in log_text and 'fail' in log_text.lower():
6877
+ error_msg = "Could not resolve domain"
6878
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
6879
+ error_msg = "Connection timed out - source may be slow"
6880
+ elif 'rate limit' in log_text.lower() or 'blocked' in log_text.lower():
6881
+ error_msg = "Rate limited or blocked by source"
6882
+ elif 'API' in log_text and ('key' in log_text.lower() or 'error' in log_text.lower()):
6883
+ error_msg = "API key error - check your API keys configuration"
6884
+ elif '[-]' in log_text:
6885
+ match = re.search(r'\[-\]\s*(.+?)(?:\n|$)', log_text)
6886
+ if match:
6887
+ error_msg = match.group(1).strip()[:100]
6888
+
6889
+ if error_msg:
6890
+ click.echo(f" {error_msg}")
6891
+ else:
6892
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
6893
+
6894
+ click.echo()
6895
+ click.echo(click.style("=" * 70, fg='red'))
6896
+ click.echo()
6897
+
6898
+ except Exception:
6899
+ pass
6900
+
6623
6901
  # Parse and display theHarvester results if available (only when not showing raw logs)
6624
6902
  if not show_raw_logs and job.get('tool') == 'theharvester' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
6625
6903
  try:
@@ -6708,6 +6986,44 @@ def view_job_detail(job_id: int):
6708
6986
  # Fall back to raw log if parsing fails
6709
6987
  pass
6710
6988
 
6989
+ # Nikto ERROR handler
6990
+ if not show_raw_logs and job.get('tool') == 'nikto' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
6991
+ try:
6992
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
6993
+ log_text = f.read()
6994
+
6995
+ click.echo(click.style("=" * 70, fg='red'))
6996
+ click.echo(click.style("[ERROR] NIKTO SCAN FAILED", bold=True, fg='red'))
6997
+ click.echo(click.style("=" * 70, fg='red'))
6998
+ click.echo()
6999
+
7000
+ # Check for common nikto errors
7001
+ error_msg = None
7002
+ if 'Unable to connect' in log_text or 'Connection refused' in log_text:
7003
+ error_msg = "Unable to connect to target - check if web server is running"
7004
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
7005
+ error_msg = "Connection timed out - target may be slow or filtering"
7006
+ elif 'No web server found' in log_text:
7007
+ error_msg = "No web server found on target port"
7008
+ elif 'SSL handshake' in log_text.lower():
7009
+ error_msg = "SSL handshake failed - try with/without -ssl flag"
7010
+ elif 'ERROR:' in log_text:
7011
+ match = re.search(r'ERROR:\s*(.+?)(?:\n|$)', log_text)
7012
+ if match:
7013
+ error_msg = match.group(1).strip()[:100]
7014
+
7015
+ if error_msg:
7016
+ click.echo(f" {error_msg}")
7017
+ else:
7018
+ click.echo(" Scan failed - see raw logs for details (press 'r')")
7019
+
7020
+ click.echo()
7021
+ click.echo(click.style("=" * 70, fg='red'))
7022
+ click.echo()
7023
+
7024
+ except Exception:
7025
+ pass
7026
+
6711
7027
  # Parse and display Nikto results if available (only when not showing raw logs)
6712
7028
  if not show_raw_logs and job.get('tool') == 'nikto' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
6713
7029
  try:
@@ -7157,6 +7473,46 @@ def view_job_detail(job_id: int):
7157
7473
  except Exception as e:
7158
7474
  pass
7159
7475
 
7476
+ # Hydra ERROR handler
7477
+ if not show_raw_logs and job.get('tool') == 'hydra' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
7478
+ try:
7479
+ with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
7480
+ log_text = f.read()
7481
+
7482
+ click.echo(click.style("=" * 70, fg='red'))
7483
+ click.echo(click.style("[ERROR] HYDRA ATTACK FAILED", bold=True, fg='red'))
7484
+ click.echo(click.style("=" * 70, fg='red'))
7485
+ click.echo()
7486
+
7487
+ # Check for common hydra errors
7488
+ error_msg = None
7489
+ if 'Connection refused' in log_text:
7490
+ error_msg = "Connection refused - service may be down or port closed"
7491
+ elif 'could not connect' in log_text.lower():
7492
+ error_msg = "Could not connect to target service"
7493
+ elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
7494
+ error_msg = "Connection timed out - target may be slow or filtering"
7495
+ elif 'too many connections' in log_text.lower():
7496
+ error_msg = "Too many connections - try reducing threads with -t"
7497
+ elif 'target does not support' in log_text.lower():
7498
+ error_msg = "Target does not support the specified protocol"
7499
+ elif 'ERROR' in log_text:
7500
+ match = re.search(r'\[ERROR\]\s*(.+?)(?:\n|$)', log_text)
7501
+ if match:
7502
+ error_msg = match.group(1).strip()[:100]
7503
+
7504
+ if error_msg:
7505
+ click.echo(f" {error_msg}")
7506
+ else:
7507
+ click.echo(" Attack failed - see raw logs for details (press 'r')")
7508
+
7509
+ click.echo()
7510
+ click.echo(click.style("=" * 70, fg='red'))
7511
+ click.echo()
7512
+
7513
+ except Exception:
7514
+ pass
7515
+
7160
7516
  # Parse and display Hydra results if available (only when not showing raw logs)
7161
7517
  if not show_raw_logs and job.get('tool') == 'hydra' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
7162
7518
  try:
@@ -7472,7 +7828,10 @@ def view_job_detail(job_id: int):
7472
7828
  # =================================================================
7473
7829
 
7474
7830
  # Tools with custom error handlers (don't show generic for these)
7475
- tools_with_error_handlers = ['gobuster', 'ffuf']
7831
+ tools_with_error_handlers = [
7832
+ 'gobuster', 'ffuf', 'nmap', 'ard', 'hydra', 'nuclei', 'sqlmap',
7833
+ 'nikto', 'wpscan', 'dnsrecon', 'theharvester'
7834
+ ]
7476
7835
 
7477
7836
  # Tools with custom warning handlers
7478
7837
  tools_with_warning_handlers = ['gobuster', 'ffuf']
@@ -7481,7 +7840,8 @@ def view_job_detail(job_id: int):
7481
7840
  tools_with_no_results_handlers = [
7482
7841
  'ffuf', 'gobuster', 'sqlmap', 'wpscan', 'dnsrecon', 'nuclei',
7483
7842
  'theharvester', 'nikto', 'whois', 'crackmapexec', 'smbmap',
7484
- 'enum4linux', 'hydra', 'searchsploit', 'http_fingerprint'
7843
+ 'enum4linux', 'hydra', 'searchsploit', 'http_fingerprint',
7844
+ 'nmap', 'ard'
7485
7845
  ]
7486
7846
 
7487
7847
  current_tool = job.get('tool', '')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: souleyez
3
- Version: 2.43.25
3
+ Version: 2.43.27
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=kkVflZUny39WoQMSEYDaJB4UzaEi_k65c5ZHSYiR29k,25
1
+ souleyez/__init__.py,sha256=OXioAdydP3dSiLSr9BJA6YoY7WSOxYycfwaRKWWJ_y4,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=V3QTWgRFMu4eSDGK-ul1EQIGP3z0S8gDZTNNdg53ieU,129101
7
+ souleyez/main.py,sha256=xsjD3Nz9MaPIYKqBt6NuxCXRV04UlOQ4Q47bYg7W_zs,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=TKl_YboET7lXCrehA6JG4YdG7dHlJnOt8cJ2Pcf-4go,7188
107
+ souleyez/docs/README.md,sha256=TRn7M2nuQzEiXsERpf1LjKeMeZd2JEvouAaSSh_T3zE,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
@@ -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=zC1TxRvaumvdfCMoaGrIq-inqezTLeQSwUUEf9UeSdY,1433095
350
+ souleyez/ui/interactive.py,sha256=Z4ixYut7u_RymcHTjeMkTMjFmQ2z-tqyF4gxIO8KMMU,1450904
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
@@ -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.25.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
375
- souleyez-2.43.25.dist-info/METADATA,sha256=zVv-wa2kHANcyU9-r17em543pZvz8NiS4BDRoMZ9DCo,10427
376
- souleyez-2.43.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
377
- souleyez-2.43.25.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
378
- souleyez-2.43.25.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
379
- souleyez-2.43.25.dist-info/RECORD,,
374
+ souleyez-2.43.27.dist-info/licenses/LICENSE,sha256=J7vDD5QMF4w2oSDm35eBgosATE70ah1M40u9W4EpTZs,1090
375
+ souleyez-2.43.27.dist-info/METADATA,sha256=0OBxVlojl_y7pAyeh5UqGqBDvV8MhKvYhomVeyiNXzU,10427
376
+ souleyez-2.43.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
377
+ souleyez-2.43.27.dist-info/entry_points.txt,sha256=bN5W1dhjDZJl3TKclMjRpfQvGPmyrJLwwDuCj_X39HE,48
378
+ souleyez-2.43.27.dist-info/top_level.txt,sha256=afAMzS9p4lcdBNxhGo6jl3ipQE9HUvvNIPOdjtPjr_Q,9
379
+ souleyez-2.43.27.dist-info/RECORD,,