ReconNinja 5.0.1__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.
- reconninja-5.0.1/LICENSE +21 -0
- reconninja-5.0.1/MANIFEST.in +8 -0
- reconninja-5.0.1/PKG-INFO +331 -0
- reconninja-5.0.1/README.md +273 -0
- reconninja-5.0.1/ReconNinja.egg-info/PKG-INFO +331 -0
- reconninja-5.0.1/ReconNinja.egg-info/SOURCES.txt +45 -0
- reconninja-5.0.1/ReconNinja.egg-info/dependency_links.txt +1 -0
- reconninja-5.0.1/ReconNinja.egg-info/entry_points.txt +2 -0
- reconninja-5.0.1/ReconNinja.egg-info/requires.txt +15 -0
- reconninja-5.0.1/ReconNinja.egg-info/top_level.txt +4 -0
- reconninja-5.0.1/core/__init__.py +1 -0
- reconninja-5.0.1/core/ai_analysis.py +355 -0
- reconninja-5.0.1/core/cve_lookup.py +204 -0
- reconninja-5.0.1/core/orchestrator.py +555 -0
- reconninja-5.0.1/core/ports.py +596 -0
- reconninja-5.0.1/core/resume.py +181 -0
- reconninja-5.0.1/core/shodan_lookup.py +105 -0
- reconninja-5.0.1/core/ssl_scan.py +159 -0
- reconninja-5.0.1/core/subdomains.py +199 -0
- reconninja-5.0.1/core/updater.py +204 -0
- reconninja-5.0.1/core/virustotal.py +146 -0
- reconninja-5.0.1/core/vuln.py +144 -0
- reconninja-5.0.1/core/wayback.py +114 -0
- reconninja-5.0.1/core/web.py +211 -0
- reconninja-5.0.1/core/whois_lookup.py +92 -0
- reconninja-5.0.1/output/__init__.py +1 -0
- reconninja-5.0.1/output/report_html.py +695 -0
- reconninja-5.0.1/output/reports.py +508 -0
- reconninja-5.0.1/plugins/__init__.py +94 -0
- reconninja-5.0.1/plugins/cve_banner_check.py +35 -0
- reconninja-5.0.1/pyproject.toml +59 -0
- reconninja-5.0.1/requirements.txt +1 -0
- reconninja-5.0.1/setup.cfg +4 -0
- reconninja-5.0.1/tests/test_ai_analysis.py +333 -0
- reconninja-5.0.1/tests/test_cve_lookup.py +333 -0
- reconninja-5.0.1/tests/test_models.py +396 -0
- reconninja-5.0.1/tests/test_orchestrator.py +821 -0
- reconninja-5.0.1/tests/test_ports.py +198 -0
- reconninja-5.0.1/tests/test_report_html.py +276 -0
- reconninja-5.0.1/tests/test_resume.py +361 -0
- reconninja-5.0.1/tests/test_v4_modules.py +738 -0
- reconninja-5.0.1/utils/__init__.py +1 -0
- reconninja-5.0.1/utils/helpers.py +169 -0
- reconninja-5.0.1/utils/logger.py +62 -0
- reconninja-5.0.1/utils/models.py +210 -0
- reconninja-5.0.1/utils/parser.py +72 -0
- reconninja-5.0.1/utils/updater.py +189 -0
reconninja-5.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ExploitCraft
|
|
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,331 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ReconNinja
|
|
3
|
+
Version: 5.0.1
|
|
4
|
+
Summary: 14-phase automated reconnaissance framework for security researchers
|
|
5
|
+
Author-email: ExploitCraft <emonkk06@gmail.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 ExploitCraft
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
Project-URL: Homepage, https://github.com/ExploitCraft/ReconNinja
|
|
29
|
+
Project-URL: Repository, https://github.com/ExploitCraft/ReconNinja
|
|
30
|
+
Project-URL: Issues, https://github.com/ExploitCraft/ReconNinja/issues
|
|
31
|
+
Keywords: recon,reconnaissance,security,penetration-testing,osint
|
|
32
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
33
|
+
Classifier: Environment :: Console
|
|
34
|
+
Classifier: Intended Audience :: Information Technology
|
|
35
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
36
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
37
|
+
Classifier: Programming Language :: Python :: 3
|
|
38
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
39
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
41
|
+
Classifier: Topic :: Security
|
|
42
|
+
Requires-Python: >=3.10
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
License-File: LICENSE
|
|
45
|
+
Requires-Dist: rich>=13.0.0
|
|
46
|
+
Provides-Extra: ai
|
|
47
|
+
Requires-Dist: groq>=0.5.0; extra == "ai"
|
|
48
|
+
Requires-Dist: google-generativeai>=0.5.0; extra == "ai"
|
|
49
|
+
Requires-Dist: openai>=1.0.0; extra == "ai"
|
|
50
|
+
Provides-Extra: shodan
|
|
51
|
+
Requires-Dist: shodan>=1.28.0; extra == "shodan"
|
|
52
|
+
Provides-Extra: full
|
|
53
|
+
Requires-Dist: groq>=0.5.0; extra == "full"
|
|
54
|
+
Requires-Dist: google-generativeai>=0.5.0; extra == "full"
|
|
55
|
+
Requires-Dist: openai>=1.0.0; extra == "full"
|
|
56
|
+
Requires-Dist: shodan>=1.28.0; extra == "full"
|
|
57
|
+
Dynamic: license-file
|
|
58
|
+
|
|
59
|
+
<div align="center">
|
|
60
|
+
|
|
61
|
+
# ReconNinja
|
|
62
|
+
|
|
63
|
+
**14-phase automated reconnaissance framework for authorized security testing.**
|
|
64
|
+
|
|
65
|
+
[](https://github.com/ExploitCraft/ReconNinja/releases)
|
|
66
|
+
[](https://python.org)
|
|
67
|
+
[](tests/)
|
|
68
|
+
[](LICENSE)
|
|
69
|
+
[](https://github.com/ExploitCraft)
|
|
70
|
+
[](http://doc.emonpersonal.xyz/)
|
|
71
|
+
|
|
72
|
+
> ⚠ Use only against targets you own or have explicit written permission to test.
|
|
73
|
+
|
|
74
|
+
📄 **Documentation available at [doc.emonpersonal.xyz](http://doc.emonpersonal.xyz/)**
|
|
75
|
+
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## What it does
|
|
81
|
+
|
|
82
|
+
ReconNinja automates every phase of a reconnaissance engagement into a single command. Point it at a domain or IP and it drives the full pipeline — passive OSINT, port scanning, web discovery, vulnerability scanning, credential intelligence, and AI-powered threat analysis — then generates HTML, JSON, and Markdown reports.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Install
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# From GitHub (always latest)
|
|
90
|
+
pip install git+https://github.com/ExploitCraft/ReconNinja.git
|
|
91
|
+
|
|
92
|
+
# From PIP
|
|
93
|
+
pip install ReconNinja
|
|
94
|
+
|
|
95
|
+
# From install file (RECOMMENDED)
|
|
96
|
+
git clone https://github.com/ExploitCraft/ReconNinja.git
|
|
97
|
+
cd ReconNinja && chmod +x install.sh && ./install.sh
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Quick start
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Interactive mode — guided setup
|
|
106
|
+
reconninja
|
|
107
|
+
|
|
108
|
+
# Standard scan
|
|
109
|
+
reconninja -t example.com
|
|
110
|
+
|
|
111
|
+
# Full 14-phase pipeline
|
|
112
|
+
reconninja -t example.com --profile full_suite -y
|
|
113
|
+
|
|
114
|
+
# v5: WHOIS + Wayback + SSL — no keys needed
|
|
115
|
+
reconninja -t example.com --whois --wayback --ssl -y
|
|
116
|
+
|
|
117
|
+
# v5: Full intelligence
|
|
118
|
+
reconninja -t example.com --profile full_suite \
|
|
119
|
+
--whois --wayback --ssl \
|
|
120
|
+
--shodan --shodan-key YOUR_KEY \
|
|
121
|
+
--vt --vt-key YOUR_KEY \
|
|
122
|
+
--ai --ai-provider groq --ai-key YOUR_KEY \
|
|
123
|
+
-y
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Scan profiles
|
|
129
|
+
|
|
130
|
+
| Profile | What runs |
|
|
131
|
+
|---|---|
|
|
132
|
+
| `fast` | Top 100 ports, no scripts |
|
|
133
|
+
| `standard` | Top 1000 ports, scripts + versions *(default)* |
|
|
134
|
+
| `thorough` | All ports, OS detection, aggressive scripts |
|
|
135
|
+
| `stealth` | SYN scan, low timing, no banners |
|
|
136
|
+
| `web_only` | httpx + dir scan + nuclei |
|
|
137
|
+
| `port_only` | RustScan + Masscan + Nmap |
|
|
138
|
+
| `full_suite` | All 14 phases |
|
|
139
|
+
| `custom` | Interactive builder |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Pipeline
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
Phase 1 Passive Recon subdomain enum (amass, subfinder, crt.sh)
|
|
147
|
+
Phase 2 RustScan ultra-fast port discovery (all 65535 ports)
|
|
148
|
+
Phase 2b Async TCP asyncio fallback, no root required
|
|
149
|
+
Phase 3 Masscan optional SYN sweep (root required)
|
|
150
|
+
Phase 4 Nmap deep service / version / script analysis
|
|
151
|
+
Phase 4b CVE Lookup NVD API CVE matching on detected services
|
|
152
|
+
Phase 5 httpx live web detection + tech fingerprint
|
|
153
|
+
Phase 6 Dir Scan feroxbuster → ffuf → dirsearch fallback chain
|
|
154
|
+
Phase 7 WhatWeb technology fingerprinting
|
|
155
|
+
Phase 8 Nikto classic web vulnerability scanner
|
|
156
|
+
Phase 9 Nuclei template-based vulnerability detection
|
|
157
|
+
Phase 10 Screenshots aquatone → gowitness fallback
|
|
158
|
+
Phase 12 v5 Integrations WHOIS · Wayback · SSL · VirusTotal · Shodan
|
|
159
|
+
Phase 14 AI Analysis Groq / Ollama / Gemini / OpenAI threat summary
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## What's new in v5.0.0
|
|
165
|
+
|
|
166
|
+
**5 new intelligence modules — 3 need zero API keys:**
|
|
167
|
+
|
|
168
|
+
| Module | Flag | API Key |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| WHOIS lookup | `--whois` | None |
|
|
171
|
+
| Wayback Machine URL discovery | `--wayback` | None |
|
|
172
|
+
| SSL/TLS certificate analysis | `--ssl` | None |
|
|
173
|
+
| VirusTotal reputation | `--vt --vt-key KEY` | Free tier |
|
|
174
|
+
| Shodan host intelligence | `--shodan --shodan-key KEY` | Free tier |
|
|
175
|
+
|
|
176
|
+
**Output control (new flags):**
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
--output-format html # html | json | md | txt | all
|
|
180
|
+
--exclude passive,vuln # skip specific phases
|
|
181
|
+
--timeout 60 # global per-operation timeout
|
|
182
|
+
--rate-limit 1.0 # seconds between requests
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## All flags
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
Target
|
|
191
|
+
-t, --target Domain, IP, CIDR, or path to list file
|
|
192
|
+
-p, --profile Scan profile (see above)
|
|
193
|
+
-y, --yes Skip confirmation prompt (CI/automation)
|
|
194
|
+
|
|
195
|
+
Port scanning
|
|
196
|
+
--all-ports Scan all 65535 ports
|
|
197
|
+
--top-ports N Scan top N ports (default: 1000)
|
|
198
|
+
--timing T1-T5 Nmap timing template (default: T4)
|
|
199
|
+
--rustscan Enable RustScan pre-scan
|
|
200
|
+
--masscan Enable Masscan sweep (root required)
|
|
201
|
+
--masscan-rate N Masscan packets/sec (default: 5000)
|
|
202
|
+
--async-concurrency Async TCP concurrency (default: 1000)
|
|
203
|
+
--async-timeout Async TCP timeout seconds (default: 1.5)
|
|
204
|
+
|
|
205
|
+
Web & discovery
|
|
206
|
+
--httpx httpx live service detection
|
|
207
|
+
--whatweb WhatWeb fingerprinting
|
|
208
|
+
--ferox Feroxbuster directory scan
|
|
209
|
+
--nikto Nikto scanner
|
|
210
|
+
--nuclei Nuclei vulnerability templates
|
|
211
|
+
--aquatone Screenshots
|
|
212
|
+
--subdomains Subdomain enumeration
|
|
213
|
+
--wordlist-size small | medium | large
|
|
214
|
+
|
|
215
|
+
Vulnerability intelligence
|
|
216
|
+
--cve NVD CVE lookup for detected services
|
|
217
|
+
--nvd-key KEY NVD API key (raises rate limit 5→50 req/30s)
|
|
218
|
+
|
|
219
|
+
v5 integrations
|
|
220
|
+
--shodan Shodan host intelligence
|
|
221
|
+
--shodan-key KEY Shodan API key
|
|
222
|
+
--vt VirusTotal reputation
|
|
223
|
+
--vt-key KEY VirusTotal API key
|
|
224
|
+
--whois WHOIS lookup (no key needed)
|
|
225
|
+
--wayback Wayback Machine URL discovery (no key needed)
|
|
226
|
+
--ssl SSL/TLS certificate analysis (no key needed)
|
|
227
|
+
|
|
228
|
+
AI analysis
|
|
229
|
+
--ai Enable AI threat analysis
|
|
230
|
+
--ai-provider groq | ollama | gemini | openai (default: groq)
|
|
231
|
+
--ai-key KEY API key for AI provider
|
|
232
|
+
--ai-model MODEL Override default model
|
|
233
|
+
|
|
234
|
+
Output
|
|
235
|
+
--output DIR Output directory (default: reports/)
|
|
236
|
+
--output-format FMT all | html | json | md | txt (default: all)
|
|
237
|
+
--exclude PHASES Comma-separated phases to skip
|
|
238
|
+
--timeout N Global per-operation timeout seconds (default: 30)
|
|
239
|
+
--rate-limit N Seconds between requests (default: 0)
|
|
240
|
+
|
|
241
|
+
Scan management
|
|
242
|
+
--resume FILE Resume interrupted scan from state.json
|
|
243
|
+
--update Check GitHub for updates
|
|
244
|
+
--force-update Update even if already on latest
|
|
245
|
+
--check-tools Show tool availability
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Output
|
|
251
|
+
|
|
252
|
+
Each scan creates a timestamped folder:
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
reports/
|
|
256
|
+
└── example.com_20260307_120000/
|
|
257
|
+
├── report.html ← dark-mode dashboard
|
|
258
|
+
├── report.json ← full machine-readable results (includes v5 intelligence data)
|
|
259
|
+
├── report.md ← markdown summary
|
|
260
|
+
├── scan_config.json ← exact config used
|
|
261
|
+
├── scan.log ← full execution log
|
|
262
|
+
├── state.json ← resume checkpoint
|
|
263
|
+
├── subdomains/
|
|
264
|
+
├── nmap/
|
|
265
|
+
└── nuclei/
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Resume interrupted scans
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Scan crashes after Phase 8 — resume from last checkpoint
|
|
274
|
+
reconninja --resume reports/example.com_20260307_120000/state.json
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
All v5 results (WHOIS, Wayback, SSL, VT, Shodan) are preserved in `state.json` and restored on resume.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Plugin system
|
|
282
|
+
|
|
283
|
+
Drop a `.py` file into `plugins/` to extend the pipeline. It receives the full `ReconResult` and `ScanConfig` after all phases complete.
|
|
284
|
+
|
|
285
|
+
```python
|
|
286
|
+
# plugins/custom.py
|
|
287
|
+
def run(target, out_folder, result, cfg):
|
|
288
|
+
print(f"Custom: {len(result.hosts)} hosts, {len(result.shodan_results)} Shodan entries")
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Tool dependencies
|
|
294
|
+
|
|
295
|
+
Only `rich` is required. All external tools are optional — ReconNinja detects what's available and falls back gracefully.
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
reconninja --check-tools # show availability
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Optional tools: `nmap`, `rustscan`, `masscan`, `amass`, `subfinder`, `httpx`, `feroxbuster`, `ffuf`, `dirsearch`, `whatweb`, `nikto`, `nuclei`, `aquatone`, `gowitness`
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Development
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
git clone https://github.com/ExploitCraft/ReconNinja.git
|
|
309
|
+
cd ReconNinja
|
|
310
|
+
chmod +x install.sh
|
|
311
|
+
./install.sh
|
|
312
|
+
python3 -m unittest discover -s tests -v # run all tests
|
|
313
|
+
python3 -m unittest tests.test_v4_modules -v
|
|
314
|
+
python3 -m unittest tests.test_orchestrator -v
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## License
|
|
320
|
+
|
|
321
|
+
MIT — see [LICENSE](LICENSE)
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
<div align="center">
|
|
326
|
+
|
|
327
|
+
**[ExploitCraft](https://github.com/ExploitCraft)** · Bangladesh · Building tools that matter
|
|
328
|
+
|
|
329
|
+
📄 Full documentation at **[doc.emonpersonal.xyz](http://doc.emonpersonal.xyz/)**
|
|
330
|
+
|
|
331
|
+
</div>
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# ReconNinja
|
|
4
|
+
|
|
5
|
+
**14-phase automated reconnaissance framework for authorized security testing.**
|
|
6
|
+
|
|
7
|
+
[](https://github.com/ExploitCraft/ReconNinja/releases)
|
|
8
|
+
[](https://python.org)
|
|
9
|
+
[](tests/)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://github.com/ExploitCraft)
|
|
12
|
+
[](http://doc.emonpersonal.xyz/)
|
|
13
|
+
|
|
14
|
+
> ⚠ Use only against targets you own or have explicit written permission to test.
|
|
15
|
+
|
|
16
|
+
📄 **Documentation available at [doc.emonpersonal.xyz](http://doc.emonpersonal.xyz/)**
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## What it does
|
|
23
|
+
|
|
24
|
+
ReconNinja automates every phase of a reconnaissance engagement into a single command. Point it at a domain or IP and it drives the full pipeline — passive OSINT, port scanning, web discovery, vulnerability scanning, credential intelligence, and AI-powered threat analysis — then generates HTML, JSON, and Markdown reports.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# From GitHub (always latest)
|
|
32
|
+
pip install git+https://github.com/ExploitCraft/ReconNinja.git
|
|
33
|
+
|
|
34
|
+
# From PIP
|
|
35
|
+
pip install ReconNinja
|
|
36
|
+
|
|
37
|
+
# From install file (RECOMMENDED)
|
|
38
|
+
git clone https://github.com/ExploitCraft/ReconNinja.git
|
|
39
|
+
cd ReconNinja && chmod +x install.sh && ./install.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Quick start
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Interactive mode — guided setup
|
|
48
|
+
reconninja
|
|
49
|
+
|
|
50
|
+
# Standard scan
|
|
51
|
+
reconninja -t example.com
|
|
52
|
+
|
|
53
|
+
# Full 14-phase pipeline
|
|
54
|
+
reconninja -t example.com --profile full_suite -y
|
|
55
|
+
|
|
56
|
+
# v5: WHOIS + Wayback + SSL — no keys needed
|
|
57
|
+
reconninja -t example.com --whois --wayback --ssl -y
|
|
58
|
+
|
|
59
|
+
# v5: Full intelligence
|
|
60
|
+
reconninja -t example.com --profile full_suite \
|
|
61
|
+
--whois --wayback --ssl \
|
|
62
|
+
--shodan --shodan-key YOUR_KEY \
|
|
63
|
+
--vt --vt-key YOUR_KEY \
|
|
64
|
+
--ai --ai-provider groq --ai-key YOUR_KEY \
|
|
65
|
+
-y
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Scan profiles
|
|
71
|
+
|
|
72
|
+
| Profile | What runs |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `fast` | Top 100 ports, no scripts |
|
|
75
|
+
| `standard` | Top 1000 ports, scripts + versions *(default)* |
|
|
76
|
+
| `thorough` | All ports, OS detection, aggressive scripts |
|
|
77
|
+
| `stealth` | SYN scan, low timing, no banners |
|
|
78
|
+
| `web_only` | httpx + dir scan + nuclei |
|
|
79
|
+
| `port_only` | RustScan + Masscan + Nmap |
|
|
80
|
+
| `full_suite` | All 14 phases |
|
|
81
|
+
| `custom` | Interactive builder |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Pipeline
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Phase 1 Passive Recon subdomain enum (amass, subfinder, crt.sh)
|
|
89
|
+
Phase 2 RustScan ultra-fast port discovery (all 65535 ports)
|
|
90
|
+
Phase 2b Async TCP asyncio fallback, no root required
|
|
91
|
+
Phase 3 Masscan optional SYN sweep (root required)
|
|
92
|
+
Phase 4 Nmap deep service / version / script analysis
|
|
93
|
+
Phase 4b CVE Lookup NVD API CVE matching on detected services
|
|
94
|
+
Phase 5 httpx live web detection + tech fingerprint
|
|
95
|
+
Phase 6 Dir Scan feroxbuster → ffuf → dirsearch fallback chain
|
|
96
|
+
Phase 7 WhatWeb technology fingerprinting
|
|
97
|
+
Phase 8 Nikto classic web vulnerability scanner
|
|
98
|
+
Phase 9 Nuclei template-based vulnerability detection
|
|
99
|
+
Phase 10 Screenshots aquatone → gowitness fallback
|
|
100
|
+
Phase 12 v5 Integrations WHOIS · Wayback · SSL · VirusTotal · Shodan
|
|
101
|
+
Phase 14 AI Analysis Groq / Ollama / Gemini / OpenAI threat summary
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## What's new in v5.0.0
|
|
107
|
+
|
|
108
|
+
**5 new intelligence modules — 3 need zero API keys:**
|
|
109
|
+
|
|
110
|
+
| Module | Flag | API Key |
|
|
111
|
+
|---|---|---|
|
|
112
|
+
| WHOIS lookup | `--whois` | None |
|
|
113
|
+
| Wayback Machine URL discovery | `--wayback` | None |
|
|
114
|
+
| SSL/TLS certificate analysis | `--ssl` | None |
|
|
115
|
+
| VirusTotal reputation | `--vt --vt-key KEY` | Free tier |
|
|
116
|
+
| Shodan host intelligence | `--shodan --shodan-key KEY` | Free tier |
|
|
117
|
+
|
|
118
|
+
**Output control (new flags):**
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
--output-format html # html | json | md | txt | all
|
|
122
|
+
--exclude passive,vuln # skip specific phases
|
|
123
|
+
--timeout 60 # global per-operation timeout
|
|
124
|
+
--rate-limit 1.0 # seconds between requests
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## All flags
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Target
|
|
133
|
+
-t, --target Domain, IP, CIDR, or path to list file
|
|
134
|
+
-p, --profile Scan profile (see above)
|
|
135
|
+
-y, --yes Skip confirmation prompt (CI/automation)
|
|
136
|
+
|
|
137
|
+
Port scanning
|
|
138
|
+
--all-ports Scan all 65535 ports
|
|
139
|
+
--top-ports N Scan top N ports (default: 1000)
|
|
140
|
+
--timing T1-T5 Nmap timing template (default: T4)
|
|
141
|
+
--rustscan Enable RustScan pre-scan
|
|
142
|
+
--masscan Enable Masscan sweep (root required)
|
|
143
|
+
--masscan-rate N Masscan packets/sec (default: 5000)
|
|
144
|
+
--async-concurrency Async TCP concurrency (default: 1000)
|
|
145
|
+
--async-timeout Async TCP timeout seconds (default: 1.5)
|
|
146
|
+
|
|
147
|
+
Web & discovery
|
|
148
|
+
--httpx httpx live service detection
|
|
149
|
+
--whatweb WhatWeb fingerprinting
|
|
150
|
+
--ferox Feroxbuster directory scan
|
|
151
|
+
--nikto Nikto scanner
|
|
152
|
+
--nuclei Nuclei vulnerability templates
|
|
153
|
+
--aquatone Screenshots
|
|
154
|
+
--subdomains Subdomain enumeration
|
|
155
|
+
--wordlist-size small | medium | large
|
|
156
|
+
|
|
157
|
+
Vulnerability intelligence
|
|
158
|
+
--cve NVD CVE lookup for detected services
|
|
159
|
+
--nvd-key KEY NVD API key (raises rate limit 5→50 req/30s)
|
|
160
|
+
|
|
161
|
+
v5 integrations
|
|
162
|
+
--shodan Shodan host intelligence
|
|
163
|
+
--shodan-key KEY Shodan API key
|
|
164
|
+
--vt VirusTotal reputation
|
|
165
|
+
--vt-key KEY VirusTotal API key
|
|
166
|
+
--whois WHOIS lookup (no key needed)
|
|
167
|
+
--wayback Wayback Machine URL discovery (no key needed)
|
|
168
|
+
--ssl SSL/TLS certificate analysis (no key needed)
|
|
169
|
+
|
|
170
|
+
AI analysis
|
|
171
|
+
--ai Enable AI threat analysis
|
|
172
|
+
--ai-provider groq | ollama | gemini | openai (default: groq)
|
|
173
|
+
--ai-key KEY API key for AI provider
|
|
174
|
+
--ai-model MODEL Override default model
|
|
175
|
+
|
|
176
|
+
Output
|
|
177
|
+
--output DIR Output directory (default: reports/)
|
|
178
|
+
--output-format FMT all | html | json | md | txt (default: all)
|
|
179
|
+
--exclude PHASES Comma-separated phases to skip
|
|
180
|
+
--timeout N Global per-operation timeout seconds (default: 30)
|
|
181
|
+
--rate-limit N Seconds between requests (default: 0)
|
|
182
|
+
|
|
183
|
+
Scan management
|
|
184
|
+
--resume FILE Resume interrupted scan from state.json
|
|
185
|
+
--update Check GitHub for updates
|
|
186
|
+
--force-update Update even if already on latest
|
|
187
|
+
--check-tools Show tool availability
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Output
|
|
193
|
+
|
|
194
|
+
Each scan creates a timestamped folder:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
reports/
|
|
198
|
+
└── example.com_20260307_120000/
|
|
199
|
+
├── report.html ← dark-mode dashboard
|
|
200
|
+
├── report.json ← full machine-readable results (includes v5 intelligence data)
|
|
201
|
+
├── report.md ← markdown summary
|
|
202
|
+
├── scan_config.json ← exact config used
|
|
203
|
+
├── scan.log ← full execution log
|
|
204
|
+
├── state.json ← resume checkpoint
|
|
205
|
+
├── subdomains/
|
|
206
|
+
├── nmap/
|
|
207
|
+
└── nuclei/
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Resume interrupted scans
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Scan crashes after Phase 8 — resume from last checkpoint
|
|
216
|
+
reconninja --resume reports/example.com_20260307_120000/state.json
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
All v5 results (WHOIS, Wayback, SSL, VT, Shodan) are preserved in `state.json` and restored on resume.
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Plugin system
|
|
224
|
+
|
|
225
|
+
Drop a `.py` file into `plugins/` to extend the pipeline. It receives the full `ReconResult` and `ScanConfig` after all phases complete.
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
# plugins/custom.py
|
|
229
|
+
def run(target, out_folder, result, cfg):
|
|
230
|
+
print(f"Custom: {len(result.hosts)} hosts, {len(result.shodan_results)} Shodan entries")
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Tool dependencies
|
|
236
|
+
|
|
237
|
+
Only `rich` is required. All external tools are optional — ReconNinja detects what's available and falls back gracefully.
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
reconninja --check-tools # show availability
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Optional tools: `nmap`, `rustscan`, `masscan`, `amass`, `subfinder`, `httpx`, `feroxbuster`, `ffuf`, `dirsearch`, `whatweb`, `nikto`, `nuclei`, `aquatone`, `gowitness`
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Development
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
git clone https://github.com/ExploitCraft/ReconNinja.git
|
|
251
|
+
cd ReconNinja
|
|
252
|
+
chmod +x install.sh
|
|
253
|
+
./install.sh
|
|
254
|
+
python3 -m unittest discover -s tests -v # run all tests
|
|
255
|
+
python3 -m unittest tests.test_v4_modules -v
|
|
256
|
+
python3 -m unittest tests.test_orchestrator -v
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## License
|
|
262
|
+
|
|
263
|
+
MIT — see [LICENSE](LICENSE)
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
<div align="center">
|
|
268
|
+
|
|
269
|
+
**[ExploitCraft](https://github.com/ExploitCraft)** · Bangladesh · Building tools that matter
|
|
270
|
+
|
|
271
|
+
📄 Full documentation at **[doc.emonpersonal.xyz](http://doc.emonpersonal.xyz/)**
|
|
272
|
+
|
|
273
|
+
</div>
|