jseye 1.0.3__tar.gz → 1.0.5__tar.gz
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.
- {jseye-1.0.3/jseye.egg-info → jseye-1.0.5}/PKG-INFO +1 -1
- {jseye-1.0.3 → jseye-1.0.5}/jseye/__init__.py +1 -1
- {jseye-1.0.3 → jseye-1.0.5}/jseye/banner.py +2 -2
- {jseye-1.0.3 → jseye-1.0.5}/jseye/cli.py +3 -3
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/js_download.py +1 -1
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/js_filter.py +15 -1
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/tiered_analysis.py +46 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/pipeline.py +1 -1
- {jseye-1.0.3 → jseye-1.0.5/jseye.egg-info}/PKG-INFO +1 -1
- {jseye-1.0.3 → jseye-1.0.5}/pyproject.toml +1 -1
- {jseye-1.0.3 → jseye-1.0.5}/LICENSE +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/MANIFEST.in +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/README.md +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/__main__.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/data/regex.yaml +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/data/vendor_blacklist.txt +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/installer.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/__init__.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/analyze_ast.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/analyze_regex.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/correlate.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/harvest.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/linkfinder.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/secrets.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/modules/sinks.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/utils/__init__.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/utils/cache.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/utils/fs.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/utils/hashing.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/utils/logger.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye/utils/shell.py +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye.egg-info/SOURCES.txt +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye.egg-info/dependency_links.txt +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye.egg-info/entry_points.txt +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye.egg-info/requires.txt +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/jseye.egg-info/top_level.txt +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/scripts/ast_parser.js +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/setup.cfg +0 -0
- {jseye-1.0.3 → jseye-1.0.5}/setup.py +0 -0
|
@@ -68,10 +68,10 @@ def show_banner():
|
|
|
68
68
|
console.print()
|
|
69
69
|
|
|
70
70
|
def show_performance_banner():
|
|
71
|
-
"""Show performance-focused banner for v1.0.
|
|
71
|
+
"""Show performance-focused banner for v1.0.5"""
|
|
72
72
|
# Performance upgrade banner
|
|
73
73
|
perf_banner = Panel.fit(
|
|
74
|
-
"[bold cyan]>> JSEye v1.0.
|
|
74
|
+
"[bold cyan]>> JSEye v1.0.5 - Performance Revolution[/bold cyan]\n"
|
|
75
75
|
"[green][+] Parallel Tool Execution (3-5x faster)[/green]\n"
|
|
76
76
|
"[green][+] Smart JS Prioritization (60-70% time saved)[/green]\n"
|
|
77
77
|
"[green][+] Tiered Analysis Engine[/green]\n"
|
|
@@ -19,7 +19,7 @@ console = Console()
|
|
|
19
19
|
def create_parser():
|
|
20
20
|
"""Create enhanced argument parser"""
|
|
21
21
|
parser = argparse.ArgumentParser(
|
|
22
|
-
description="JSEye v1.0.
|
|
22
|
+
description="JSEye v1.0.5 - High-Performance JavaScript Intelligence Framework",
|
|
23
23
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
24
24
|
epilog="""
|
|
25
25
|
Examples:
|
|
@@ -80,7 +80,7 @@ def list_modules():
|
|
|
80
80
|
]
|
|
81
81
|
|
|
82
82
|
console.print()
|
|
83
|
-
panel_content = "[bold cyan]JSEye v1.0.
|
|
83
|
+
panel_content = "[bold cyan]JSEye v1.0.5 - Available Modules[/bold cyan]\n\n"
|
|
84
84
|
|
|
85
85
|
for name, desc, symbol in modules_info:
|
|
86
86
|
panel_content += f"{symbol} [bold green]{name}[/bold green] - {desc}\n"
|
|
@@ -161,7 +161,7 @@ def main():
|
|
|
161
161
|
return 1
|
|
162
162
|
|
|
163
163
|
# Initialize and run enhanced pipeline
|
|
164
|
-
console.print("[bold cyan]Starting JSEye v1.0.
|
|
164
|
+
console.print("[bold cyan]Starting JSEye v1.0.5 High-Performance Pipeline...[/bold cyan]")
|
|
165
165
|
pipeline = JSEyePipeline(args.input, args.output, args)
|
|
166
166
|
results = pipeline.run()
|
|
167
167
|
|
|
@@ -32,7 +32,7 @@ class JSDownloader:
|
|
|
32
32
|
self.max_concurrent = 10 # Max concurrent downloads
|
|
33
33
|
|
|
34
34
|
self.session_headers = {
|
|
35
|
-
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.
|
|
35
|
+
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.5472.124 Safari/537.36'
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
self.performance_stats = {}
|
|
@@ -238,4 +238,18 @@ class JSFilter:
|
|
|
238
238
|
}
|
|
239
239
|
save_json(detailed_results, self.output_dir / "js_smart_analysis.json")
|
|
240
240
|
|
|
241
|
-
return results
|
|
241
|
+
return results
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def filter_and_prioritize_js(self, urls: List[str]) -> Dict[str, List[str]]:
|
|
245
|
+
"""Alias for filter_javascript_urls - for backward compatibility"""
|
|
246
|
+
results = self.filter_javascript_urls(urls)
|
|
247
|
+
|
|
248
|
+
# Map to expected format for pipeline
|
|
249
|
+
return {
|
|
250
|
+
'tier1': results['tier1_full'],
|
|
251
|
+
'tier2': results['tier2_medium'],
|
|
252
|
+
'tier3': results['tier3_light'],
|
|
253
|
+
'all_js': results['all_js'],
|
|
254
|
+
'vendor_skipped': results.get('vendor_skipped', 0)
|
|
255
|
+
}
|
|
@@ -308,3 +308,49 @@ class TieredAnalysisEngine:
|
|
|
308
308
|
def get_performance_stats(self) -> Dict:
|
|
309
309
|
"""Get performance statistics"""
|
|
310
310
|
return self.analysis_stats
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
def analyze_tiered_files(self, downloaded_files: Dict, skip_ast: bool = False, regex_only: bool = False) -> Dict[str, Any]:
|
|
314
|
+
"""
|
|
315
|
+
Alias for run_tiered_analysis - for pipeline compatibility
|
|
316
|
+
|
|
317
|
+
Args:
|
|
318
|
+
downloaded_files: Dict with tier1, tier2, tier3 keys containing downloaded file info
|
|
319
|
+
skip_ast: Skip AST analysis
|
|
320
|
+
regex_only: Only perform regex analysis
|
|
321
|
+
|
|
322
|
+
Returns:
|
|
323
|
+
Aggregated analysis results
|
|
324
|
+
"""
|
|
325
|
+
# Convert downloaded_files format to what run_tiered_analysis expects
|
|
326
|
+
tiered_js_files = {
|
|
327
|
+
'tier1': downloaded_files.get('tier1', []),
|
|
328
|
+
'tier2': downloaded_files.get('tier2', []),
|
|
329
|
+
'tier3': downloaded_files.get('tier3', [])
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
# Flatten all files for the downloaded_files parameter
|
|
333
|
+
all_files = []
|
|
334
|
+
for tier_files in downloaded_files.values():
|
|
335
|
+
if isinstance(tier_files, list):
|
|
336
|
+
all_files.extend(tier_files)
|
|
337
|
+
|
|
338
|
+
# Run async analysis
|
|
339
|
+
try:
|
|
340
|
+
results = asyncio.run(self.run_tiered_analysis(tiered_js_files, all_files))
|
|
341
|
+
return results
|
|
342
|
+
except Exception as e:
|
|
343
|
+
log_progress(f"Tiered analysis error: {e}")
|
|
344
|
+
return {
|
|
345
|
+
'summary': {
|
|
346
|
+
'total_findings': 0,
|
|
347
|
+
'endpoints_found': 0,
|
|
348
|
+
'secrets_found': 0,
|
|
349
|
+
'files_by_tier': {'tier1': 0, 'tier2': 0, 'tier3': 0},
|
|
350
|
+
'total_analysis_time': 0
|
|
351
|
+
},
|
|
352
|
+
'endpoints': [],
|
|
353
|
+
'secrets': [],
|
|
354
|
+
'sinks': [],
|
|
355
|
+
'functions': []
|
|
356
|
+
}
|
|
@@ -304,7 +304,7 @@ class JSEyePipeline:
|
|
|
304
304
|
def show_summary(self, results: Dict[str, Any]):
|
|
305
305
|
"""Show enhanced summary with performance metrics"""
|
|
306
306
|
console.print("\n" + "─" * 50)
|
|
307
|
-
console.print("[bold cyan]JSEye v1.0.
|
|
307
|
+
console.print("[bold cyan]JSEye v1.0.5 - Performance Summary[/bold cyan]", justify="center")
|
|
308
308
|
console.print("─" * 50)
|
|
309
309
|
|
|
310
310
|
# Main results table
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|