jseye 1.0.0__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.
Files changed (36) hide show
  1. jseye-1.0.0/LICENSE +21 -0
  2. jseye-1.0.0/MANIFEST.in +8 -0
  3. jseye-1.0.0/PKG-INFO +264 -0
  4. jseye-1.0.0/README.md +219 -0
  5. jseye-1.0.0/jseye/__init__.py +9 -0
  6. jseye-1.0.0/jseye/banner.py +37 -0
  7. jseye-1.0.0/jseye/cli.py +137 -0
  8. jseye-1.0.0/jseye/data/regex.yaml +1050 -0
  9. jseye-1.0.0/jseye/data/vendor_blacklist.txt +65 -0
  10. jseye-1.0.0/jseye/installer.py +190 -0
  11. jseye-1.0.0/jseye/modules/__init__.py +1 -0
  12. jseye-1.0.0/jseye/modules/analyze_ast.py +116 -0
  13. jseye-1.0.0/jseye/modules/analyze_regex.py +123 -0
  14. jseye-1.0.0/jseye/modules/correlate.py +140 -0
  15. jseye-1.0.0/jseye/modules/harvest.py +124 -0
  16. jseye-1.0.0/jseye/modules/js_download.py +82 -0
  17. jseye-1.0.0/jseye/modules/js_filter.py +186 -0
  18. jseye-1.0.0/jseye/modules/linkfinder.py +56 -0
  19. jseye-1.0.0/jseye/modules/secrets.py +71 -0
  20. jseye-1.0.0/jseye/modules/sinks.py +132 -0
  21. jseye-1.0.0/jseye/pipeline.py +230 -0
  22. jseye-1.0.0/jseye/utils/__init__.py +1 -0
  23. jseye-1.0.0/jseye/utils/fs.py +98 -0
  24. jseye-1.0.0/jseye/utils/hashing.py +42 -0
  25. jseye-1.0.0/jseye/utils/logger.py +50 -0
  26. jseye-1.0.0/jseye/utils/shell.py +83 -0
  27. jseye-1.0.0/jseye.egg-info/PKG-INFO +264 -0
  28. jseye-1.0.0/jseye.egg-info/SOURCES.txt +34 -0
  29. jseye-1.0.0/jseye.egg-info/dependency_links.txt +1 -0
  30. jseye-1.0.0/jseye.egg-info/entry_points.txt +2 -0
  31. jseye-1.0.0/jseye.egg-info/requires.txt +12 -0
  32. jseye-1.0.0/jseye.egg-info/top_level.txt +1 -0
  33. jseye-1.0.0/pyproject.toml +96 -0
  34. jseye-1.0.0/scripts/ast_parser.js +138 -0
  35. jseye-1.0.0/setup.cfg +4 -0
  36. jseye-1.0.0/setup.py +79 -0
jseye-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Lakshmikanthan K (letchupkt)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,8 @@
1
+ include README.md
2
+ include LICENSE
3
+ include pyproject.toml
4
+ include MANIFEST.in
5
+ recursive-include jseye/data *.yaml *.txt
6
+ recursive-include scripts *.js
7
+ exclude test_*.py
8
+ exclude test_*.txt
jseye-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,264 @@
1
+ Metadata-Version: 2.4
2
+ Name: jseye
3
+ Version: 1.0.0
4
+ Summary: JavaScript Intelligence & Attack Surface Discovery Tool
5
+ Home-page: https://github.com/letchupkt/jseye
6
+ Author: Lakshmikanthan K
7
+ Author-email: Lakshmikanthan K <letchupkt.dev@gmail.com>
8
+ Maintainer-email: Lakshmikanthan K <letchupkt.dev@gmail.com>
9
+ License: MIT
10
+ Project-URL: Homepage, https://github.com/letchupkt/jseye
11
+ Project-URL: Repository, https://github.com/letchupkt/jseye
12
+ Project-URL: Issues, https://github.com/letchupkt/jseye/issues
13
+ Project-URL: Documentation, https://github.com/letchupkt/jseye#readme
14
+ Keywords: security,javascript,reconnaissance,bug-bounty,pentesting
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Information Technology
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: POSIX :: Linux
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Security
25
+ Classifier: Topic :: Internet :: WWW/HTTP
26
+ Classifier: Topic :: Software Development :: Testing
27
+ Requires-Python: >=3.10
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: rich>=13.0.0
31
+ Requires-Dist: pyyaml>=6.0
32
+ Requires-Dist: requests>=2.28.0
33
+ Requires-Dist: urllib3>=1.26.0
34
+ Requires-Dist: pathlib>=1.0.0
35
+ Provides-Extra: dev
36
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
37
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
38
+ Requires-Dist: black>=22.0.0; extra == "dev"
39
+ Requires-Dist: flake8>=5.0.0; extra == "dev"
40
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
41
+ Dynamic: author
42
+ Dynamic: home-page
43
+ Dynamic: license-file
44
+ Dynamic: requires-python
45
+
46
+ # JSEye 👁️
47
+
48
+ **See What JavaScript Hides**
49
+
50
+ JSEye is a production-grade Python reconnaissance framework for deep JavaScript intelligence and attack surface discovery. Built for bug bounty hunters and security researchers who need comprehensive JavaScript analysis with minimal noise.
51
+
52
+ ## 🚀 Features
53
+
54
+ - **Fully Automatic**: Default mode runs complete pipeline with zero configuration
55
+ - **Modular Design**: Control execution with granular flags
56
+ - **Multi-Tool Integration**: Orchestrates gau, waybackurls, hakrawler, katana, subjs, linkfinder, and mantra
57
+ - **Smart Prioritization**: AI-powered JavaScript file ranking
58
+ - **Correlation Engine**: Connects findings across multiple sources
59
+ - **Clean Terminal UX**: Rich progress indicators and polished output
60
+ - **Linux-First**: Optimized for Linux environments
61
+
62
+ ## 📦 Installation
63
+
64
+ ### From PyPI (Recommended)
65
+
66
+ ```bash
67
+ pip install jseye
68
+ ```
69
+
70
+ ### From Source
71
+
72
+ ```bash
73
+ git clone https://github.com/letchupkt/jseye.git
74
+ cd jseye
75
+ pip install -e .
76
+ ```
77
+
78
+ ## 🛠️ Requirements
79
+
80
+ JSEye automatically installs required tools on first run:
81
+
82
+ - **Go** (for gau, waybackurls, hakrawler, katana, subjs, mantra)
83
+ - **Node.js** (for AST analysis)
84
+ - **Python 3.10+** (for linkfinder and core functionality)
85
+
86
+ ## 🎯 Usage
87
+
88
+ ### Default Mode (Full Pipeline)
89
+
90
+ ```bash
91
+ # Run everything - this is the default behavior
92
+ jseye -i subdomains.txt -o output
93
+ ```
94
+
95
+ ### Module Control Flags
96
+
97
+ ```bash
98
+ # Stop after JavaScript discovery
99
+ jseye -i subs.txt -o output --js-only
100
+
101
+ # Skip secrets detection
102
+ jseye -i subs.txt -o output --no-secrets
103
+
104
+ # Only regex analysis (skip AST)
105
+ jseye -i subs.txt -o output --regex-only
106
+
107
+ # Skip AST analysis
108
+ jseye -i subs.txt -o output --skip-ast
109
+
110
+ # Skip sink detection
111
+ jseye -i subs.txt -o output --no-sinks
112
+
113
+ # Skip correlation engine
114
+ jseye -i subs.txt -o output --no-correlate
115
+
116
+ # Don't auto-install tools
117
+ jseye -i subs.txt -o output --no-install
118
+ ```
119
+
120
+ ### Information Commands
121
+
122
+ ```bash
123
+ # List available modules
124
+ jseye --list-modules
125
+ ```
126
+
127
+ ## 🔄 Pipeline
128
+
129
+ JSEye executes a comprehensive analysis pipeline:
130
+
131
+ ```
132
+ subdomains.txt
133
+
134
+ 📡 URL Harvesting (gau, waybackurls, hakrawler, katana)
135
+
136
+ 🔍 JavaScript Filtering & Prioritization
137
+
138
+ 📥 JavaScript Download
139
+
140
+ 🧠 Regex Analysis
141
+
142
+ 🌳 AST Analysis
143
+
144
+ 🔗 LinkFinder Integration
145
+
146
+ 🔐 Secrets Detection (mantra)
147
+
148
+ 🎯 Sink Detection
149
+
150
+ 🔄 Intelligence Correlation
151
+
152
+ 📊 Final Report
153
+ ```
154
+
155
+ ## 📁 Output Structure
156
+
157
+ ```
158
+ output/
159
+ ├── harvested_urls.txt # All discovered URLs
160
+ ├── js_files_all.txt # All JavaScript files
161
+ ├── js_files_high_priority.txt # High-value JS files
162
+ ├── js_files_medium_priority.txt # Medium-value JS files
163
+ ├── js_files_low_priority.txt # Low-value JS files
164
+ ├── js_files_detailed.json # Detailed JS analysis
165
+ ├── endpoints.json # Discovered endpoints
166
+ ├── secrets.json # Found secrets
167
+ ├── sinks.json # Detected sinks
168
+ ├── correlation_report.json # Correlated intelligence
169
+ └── jseye_summary.json # Final summary
170
+ ```
171
+
172
+ ## 🎨 Terminal Output
173
+
174
+ JSEye provides beautiful, informative terminal output:
175
+
176
+ ```
177
+ ██╗███████╗███████╗██╗ ██╗███████╗
178
+ ██║██╔════╝██╔════╝╚██╗ ██╔╝██╔════╝
179
+ ██║███████╗█████╗ ╚████╔╝ █████╗
180
+ ██ ██║╚════██║██╔══╝ ╚██╔╝ ██╔══╝
181
+ ╚█████╔╝███████║███████╗ ██║ ███████╗
182
+ ╚════╝ ╚══════╝╚══════╝ ╚═╝ ╚══════╝
183
+
184
+ JSEye — See What JavaScript Hides
185
+ Author: Lakshmikanthan K (letchupkt)
186
+
187
+ [+] Loading domains from subdomains.txt
188
+ [+] Harvesting URLs (gau, waybackurls, katana)
189
+ [+] Extracted 1,482 JavaScript files
190
+ [+] Prioritized 214 high-value JS files
191
+ [+] Analyzing JavaScript (regex + AST)
192
+ [+] Found 37 endpoints, 4 secrets, 9 sinks
193
+ [+] Correlating intelligence
194
+ [✓] Results saved to output/
195
+
196
+ ──────── JSEye Summary ────────
197
+ JS Files Analyzed : 214
198
+ Endpoints Found : 37
199
+ Secrets Found : 4
200
+ Sinks Found : 9
201
+ High Confidence : 11
202
+ Output Directory : output/
203
+ ────────────────────────────────
204
+ ```
205
+
206
+ ## 🧠 Smart Features
207
+
208
+ ### JavaScript Prioritization
209
+
210
+ JSEye intelligently prioritizes JavaScript files based on:
211
+
212
+ - **High-value indicators**: admin, api, auth, config, dashboard, login
213
+ - **File characteristics**: non-minified, shorter paths, custom code
214
+ - **Vendor detection**: deprioritizes common libraries and CDN files
215
+
216
+ ### Correlation Engine
217
+
218
+ Connects findings across multiple sources to reduce false positives and highlight high-confidence discoveries.
219
+
220
+ ### Auto-Installation
221
+
222
+ Automatically detects and installs missing tools on first run, with graceful fallbacks and clear error messages.
223
+
224
+ ## 🔧 Advanced Configuration
225
+
226
+ ### Custom Regex Patterns
227
+
228
+ Edit `jseye/data/regex.yaml` to customize detection patterns for:
229
+ - API endpoints
230
+ - Secrets and tokens
231
+ - DOM sinks
232
+ - Custom patterns
233
+
234
+ ### Vendor Blacklist
235
+
236
+ Modify `jseye/data/vendor_blacklist.txt` to customize which JavaScript libraries are deprioritized.
237
+
238
+ ## 🤝 Contributing
239
+
240
+ Contributions are welcome! Please feel free to submit a Pull Request.
241
+
242
+ 1. Fork the repository
243
+ 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
244
+ 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
245
+ 4. Push to the branch (`git push origin feature/AmazingFeature`)
246
+ 5. Open a Pull Request
247
+
248
+ ## 📄 License
249
+
250
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
251
+
252
+ ## 👤 Author
253
+
254
+ **Lakshmikanthan K** (letchupkt)
255
+ - GitHub: [@letchupkt](https://github.com/letchupkt)
256
+
257
+ ## 🙏 Acknowledgments
258
+
259
+ - Thanks to all the tool authors: gau, waybackurls, hakrawler, katana, subjs, linkfinder, mantra
260
+ - Inspired by the bug bounty and security research community
261
+
262
+ ---
263
+
264
+ **JSEye** - See what JavaScript hides. 👁️
jseye-1.0.0/README.md ADDED
@@ -0,0 +1,219 @@
1
+ # JSEye 👁️
2
+
3
+ **See What JavaScript Hides**
4
+
5
+ JSEye is a production-grade Python reconnaissance framework for deep JavaScript intelligence and attack surface discovery. Built for bug bounty hunters and security researchers who need comprehensive JavaScript analysis with minimal noise.
6
+
7
+ ## 🚀 Features
8
+
9
+ - **Fully Automatic**: Default mode runs complete pipeline with zero configuration
10
+ - **Modular Design**: Control execution with granular flags
11
+ - **Multi-Tool Integration**: Orchestrates gau, waybackurls, hakrawler, katana, subjs, linkfinder, and mantra
12
+ - **Smart Prioritization**: AI-powered JavaScript file ranking
13
+ - **Correlation Engine**: Connects findings across multiple sources
14
+ - **Clean Terminal UX**: Rich progress indicators and polished output
15
+ - **Linux-First**: Optimized for Linux environments
16
+
17
+ ## 📦 Installation
18
+
19
+ ### From PyPI (Recommended)
20
+
21
+ ```bash
22
+ pip install jseye
23
+ ```
24
+
25
+ ### From Source
26
+
27
+ ```bash
28
+ git clone https://github.com/letchupkt/jseye.git
29
+ cd jseye
30
+ pip install -e .
31
+ ```
32
+
33
+ ## 🛠️ Requirements
34
+
35
+ JSEye automatically installs required tools on first run:
36
+
37
+ - **Go** (for gau, waybackurls, hakrawler, katana, subjs, mantra)
38
+ - **Node.js** (for AST analysis)
39
+ - **Python 3.10+** (for linkfinder and core functionality)
40
+
41
+ ## 🎯 Usage
42
+
43
+ ### Default Mode (Full Pipeline)
44
+
45
+ ```bash
46
+ # Run everything - this is the default behavior
47
+ jseye -i subdomains.txt -o output
48
+ ```
49
+
50
+ ### Module Control Flags
51
+
52
+ ```bash
53
+ # Stop after JavaScript discovery
54
+ jseye -i subs.txt -o output --js-only
55
+
56
+ # Skip secrets detection
57
+ jseye -i subs.txt -o output --no-secrets
58
+
59
+ # Only regex analysis (skip AST)
60
+ jseye -i subs.txt -o output --regex-only
61
+
62
+ # Skip AST analysis
63
+ jseye -i subs.txt -o output --skip-ast
64
+
65
+ # Skip sink detection
66
+ jseye -i subs.txt -o output --no-sinks
67
+
68
+ # Skip correlation engine
69
+ jseye -i subs.txt -o output --no-correlate
70
+
71
+ # Don't auto-install tools
72
+ jseye -i subs.txt -o output --no-install
73
+ ```
74
+
75
+ ### Information Commands
76
+
77
+ ```bash
78
+ # List available modules
79
+ jseye --list-modules
80
+ ```
81
+
82
+ ## 🔄 Pipeline
83
+
84
+ JSEye executes a comprehensive analysis pipeline:
85
+
86
+ ```
87
+ subdomains.txt
88
+
89
+ 📡 URL Harvesting (gau, waybackurls, hakrawler, katana)
90
+
91
+ 🔍 JavaScript Filtering & Prioritization
92
+
93
+ 📥 JavaScript Download
94
+
95
+ 🧠 Regex Analysis
96
+
97
+ 🌳 AST Analysis
98
+
99
+ 🔗 LinkFinder Integration
100
+
101
+ 🔐 Secrets Detection (mantra)
102
+
103
+ 🎯 Sink Detection
104
+
105
+ 🔄 Intelligence Correlation
106
+
107
+ 📊 Final Report
108
+ ```
109
+
110
+ ## 📁 Output Structure
111
+
112
+ ```
113
+ output/
114
+ ├── harvested_urls.txt # All discovered URLs
115
+ ├── js_files_all.txt # All JavaScript files
116
+ ├── js_files_high_priority.txt # High-value JS files
117
+ ├── js_files_medium_priority.txt # Medium-value JS files
118
+ ├── js_files_low_priority.txt # Low-value JS files
119
+ ├── js_files_detailed.json # Detailed JS analysis
120
+ ├── endpoints.json # Discovered endpoints
121
+ ├── secrets.json # Found secrets
122
+ ├── sinks.json # Detected sinks
123
+ ├── correlation_report.json # Correlated intelligence
124
+ └── jseye_summary.json # Final summary
125
+ ```
126
+
127
+ ## 🎨 Terminal Output
128
+
129
+ JSEye provides beautiful, informative terminal output:
130
+
131
+ ```
132
+ ██╗███████╗███████╗██╗ ██╗███████╗
133
+ ██║██╔════╝██╔════╝╚██╗ ██╔╝██╔════╝
134
+ ██║███████╗█████╗ ╚████╔╝ █████╗
135
+ ██ ██║╚════██║██╔══╝ ╚██╔╝ ██╔══╝
136
+ ╚█████╔╝███████║███████╗ ██║ ███████╗
137
+ ╚════╝ ╚══════╝╚══════╝ ╚═╝ ╚══════╝
138
+
139
+ JSEye — See What JavaScript Hides
140
+ Author: Lakshmikanthan K (letchupkt)
141
+
142
+ [+] Loading domains from subdomains.txt
143
+ [+] Harvesting URLs (gau, waybackurls, katana)
144
+ [+] Extracted 1,482 JavaScript files
145
+ [+] Prioritized 214 high-value JS files
146
+ [+] Analyzing JavaScript (regex + AST)
147
+ [+] Found 37 endpoints, 4 secrets, 9 sinks
148
+ [+] Correlating intelligence
149
+ [✓] Results saved to output/
150
+
151
+ ──────── JSEye Summary ────────
152
+ JS Files Analyzed : 214
153
+ Endpoints Found : 37
154
+ Secrets Found : 4
155
+ Sinks Found : 9
156
+ High Confidence : 11
157
+ Output Directory : output/
158
+ ────────────────────────────────
159
+ ```
160
+
161
+ ## 🧠 Smart Features
162
+
163
+ ### JavaScript Prioritization
164
+
165
+ JSEye intelligently prioritizes JavaScript files based on:
166
+
167
+ - **High-value indicators**: admin, api, auth, config, dashboard, login
168
+ - **File characteristics**: non-minified, shorter paths, custom code
169
+ - **Vendor detection**: deprioritizes common libraries and CDN files
170
+
171
+ ### Correlation Engine
172
+
173
+ Connects findings across multiple sources to reduce false positives and highlight high-confidence discoveries.
174
+
175
+ ### Auto-Installation
176
+
177
+ Automatically detects and installs missing tools on first run, with graceful fallbacks and clear error messages.
178
+
179
+ ## 🔧 Advanced Configuration
180
+
181
+ ### Custom Regex Patterns
182
+
183
+ Edit `jseye/data/regex.yaml` to customize detection patterns for:
184
+ - API endpoints
185
+ - Secrets and tokens
186
+ - DOM sinks
187
+ - Custom patterns
188
+
189
+ ### Vendor Blacklist
190
+
191
+ Modify `jseye/data/vendor_blacklist.txt` to customize which JavaScript libraries are deprioritized.
192
+
193
+ ## 🤝 Contributing
194
+
195
+ Contributions are welcome! Please feel free to submit a Pull Request.
196
+
197
+ 1. Fork the repository
198
+ 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
199
+ 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
200
+ 4. Push to the branch (`git push origin feature/AmazingFeature`)
201
+ 5. Open a Pull Request
202
+
203
+ ## 📄 License
204
+
205
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
206
+
207
+ ## 👤 Author
208
+
209
+ **Lakshmikanthan K** (letchupkt)
210
+ - GitHub: [@letchupkt](https://github.com/letchupkt)
211
+
212
+ ## 🙏 Acknowledgments
213
+
214
+ - Thanks to all the tool authors: gau, waybackurls, hakrawler, katana, subjs, linkfinder, mantra
215
+ - Inspired by the bug bounty and security research community
216
+
217
+ ---
218
+
219
+ **JSEye** - See what JavaScript hides. 👁️
@@ -0,0 +1,9 @@
1
+ """
2
+ JSEye - JavaScript Intelligence & Attack Surface Discovery Tool
3
+ Author: Lakshmikanthan K (letchupkt)
4
+ License: MIT
5
+ """
6
+
7
+ __version__ = "1.0.0"
8
+ __author__ = "Lakshmikanthan K (letchupkt)"
9
+ __email__ = "letchupkt.dev@gmail.com"
@@ -0,0 +1,37 @@
1
+ """
2
+ JSEye Banner Display
3
+ """
4
+
5
+ from rich.console import Console
6
+ from rich.text import Text
7
+ from rich.align import Align
8
+
9
+ console = Console()
10
+
11
+ def show_banner():
12
+ """Display the JSEye banner with proper alignment"""
13
+ banner = """
14
+
15
+ ▄▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄▄▄
16
+ █▀ ██ ██▀▀▀▀█▄ █▀██▀▀▀
17
+ ██ ▀██▄ ▄▀ ██
18
+ ██ ▀██▄▄ ████ ██ ██ ▄█▀█▄
19
+ ██ ▄ ▀██▄ ██ ██▄██ ██▄█▀
20
+ ██ ▀██████▀ ▀█████▄▄▀██▀▄▀█▄▄▄
21
+ ▄ ██ ██
22
+ ▀████▀ ▀▀▀
23
+ """
24
+
25
+ # Display banner in cyan, centered
26
+ banner_text = Text(banner.strip(), style="cyan bold")
27
+ console.print(Align.center(banner_text))
28
+ console.print()
29
+
30
+ # Tagline and author info, centered
31
+ tagline = Text("JSEye — See What JavaScript Hides", style="green bold")
32
+ console.print(Align.center(tagline))
33
+
34
+ author = Text("Author: Lakshmikanthan K (letchupkt)", style="purple")
35
+ console.print(Align.center(author))
36
+
37
+ console.print()
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ JSEye CLI - Main entry point
4
+ """
5
+
6
+ import os
7
+ import sys
8
+ import argparse
9
+ from pathlib import Path
10
+ from rich.console import Console
11
+
12
+ from .banner import show_banner
13
+ from .installer import check_and_install_tools
14
+ from .pipeline import JSEyePipeline
15
+
16
+ console = Console()
17
+
18
+ def clear_terminal():
19
+ """Clear terminal screen (cross-platform)"""
20
+ import platform
21
+ if platform.system() == "Windows":
22
+ os.system("cls")
23
+ else:
24
+ os.system("clear")
25
+
26
+ def create_parser():
27
+ """Create argument parser"""
28
+ parser = argparse.ArgumentParser(
29
+ description="JSEye - JavaScript Intelligence & Attack Surface Discovery",
30
+ formatter_class=argparse.RawDescriptionHelpFormatter,
31
+ epilog="""
32
+ Examples:
33
+ jseye -i subs.txt -o output # Full pipeline (default)
34
+ jseye -i subs.txt -o output --js-only # Stop after JS discovery
35
+ jseye -i subs.txt -o output --no-secrets # Skip secrets detection
36
+ jseye -i subs.txt -o output --regex-only # Only regex analysis
37
+ """
38
+ )
39
+
40
+ # Required arguments (but not when listing modules)
41
+ parser.add_argument("-i", "--input",
42
+ help="Input file containing subdomains")
43
+ parser.add_argument("-o", "--output",
44
+ help="Output directory for results")
45
+
46
+ # Module control flags (disable/isolate modules)
47
+ parser.add_argument("--js-only", action="store_true",
48
+ help="Stop after JavaScript discovery")
49
+ parser.add_argument("--no-install", action="store_true",
50
+ help="Do not auto-install missing tools")
51
+ parser.add_argument("--skip-ast", action="store_true",
52
+ help="Skip AST analysis")
53
+ parser.add_argument("--regex-only", action="store_true",
54
+ help="Only perform regex analysis")
55
+ parser.add_argument("--no-secrets", action="store_true",
56
+ help="Skip secrets detection (mantra)")
57
+ parser.add_argument("--no-sinks", action="store_true",
58
+ help="Skip sink detection")
59
+ parser.add_argument("--no-correlate", action="store_true",
60
+ help="Skip correlation engine")
61
+ parser.add_argument("--list-modules", action="store_true",
62
+ help="Show available modules and exit")
63
+
64
+ return parser
65
+
66
+ def list_modules():
67
+ """List available modules"""
68
+ modules = [
69
+ "harvest - URL harvesting (gau, waybackurls, katana)",
70
+ "js_filter - JavaScript file filtering",
71
+ "js_download - JavaScript file downloading",
72
+ "analyze_regex - Regex-based analysis",
73
+ "analyze_ast - AST-based analysis",
74
+ "linkfinder - Endpoint discovery",
75
+ "secrets - Secret detection (mantra)",
76
+ "sinks - Sink detection",
77
+ "correlate - Intelligence correlation"
78
+ ]
79
+
80
+ console.print("\n[bold cyan]Available JSEye Modules:[/bold cyan]")
81
+ for module in modules:
82
+ console.print(f" • {module}")
83
+ console.print()
84
+
85
+ def main():
86
+ """Main CLI entry point"""
87
+ parser = create_parser()
88
+ args = parser.parse_args()
89
+
90
+ # Clear terminal and show banner
91
+ clear_terminal()
92
+ show_banner()
93
+
94
+ # List modules if requested
95
+ if args.list_modules:
96
+ list_modules()
97
+ return 0
98
+
99
+ # Validate required arguments for normal operation
100
+ if not args.input or not args.output:
101
+ parser.error("Input and output arguments are required for normal operation")
102
+
103
+ # Validate input file
104
+ if not Path(args.input).exists():
105
+ console.print(f"[red]Error: Input file '{args.input}' not found[/red]")
106
+ return 1
107
+
108
+ # Create output directory
109
+ output_dir = Path(args.output)
110
+ output_dir.mkdir(parents=True, exist_ok=True)
111
+
112
+ try:
113
+ # Check and install tools if needed
114
+ if not args.no_install:
115
+ console.print("[yellow]Checking required tools...[/yellow]")
116
+ if not check_and_install_tools():
117
+ console.print("[red]Failed to install required tools[/red]")
118
+ return 1
119
+
120
+ # Initialize and run pipeline
121
+ pipeline = JSEyePipeline(args.input, args.output, args)
122
+ results = pipeline.run()
123
+
124
+ # Show summary
125
+ pipeline.show_summary(results)
126
+
127
+ return 0
128
+
129
+ except KeyboardInterrupt:
130
+ console.print("\n[yellow]Interrupted by user[/yellow]")
131
+ return 1
132
+ except Exception as e:
133
+ console.print(f"[red]Error: {e}[/red]")
134
+ return 1
135
+
136
+ if __name__ == "__main__":
137
+ sys.exit(main())