helix-osint 3.3.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 (35) hide show
  1. helix_osint-3.3.0/LICENSE +21 -0
  2. helix_osint-3.3.0/PKG-INFO +333 -0
  3. helix_osint-3.3.0/README.md +295 -0
  4. helix_osint-3.3.0/helix.py +515 -0
  5. helix_osint-3.3.0/helix_osint.egg-info/PKG-INFO +333 -0
  6. helix_osint-3.3.0/helix_osint.egg-info/SOURCES.txt +33 -0
  7. helix_osint-3.3.0/helix_osint.egg-info/dependency_links.txt +1 -0
  8. helix_osint-3.3.0/helix_osint.egg-info/entry_points.txt +2 -0
  9. helix_osint-3.3.0/helix_osint.egg-info/requires.txt +24 -0
  10. helix_osint-3.3.0/helix_osint.egg-info/top_level.txt +2 -0
  11. helix_osint-3.3.0/osint/__init__.py +1 -0
  12. helix_osint-3.3.0/osint/adapters/__init__.py +0 -0
  13. helix_osint-3.3.0/osint/adapters/ai_verifier.py +128 -0
  14. helix_osint-3.3.0/osint/adapters/breach_adapter.py +97 -0
  15. helix_osint-3.3.0/osint/adapters/holehe_adapter.py +102 -0
  16. helix_osint-3.3.0/osint/adapters/maigret_adapter.py +157 -0
  17. helix_osint-3.3.0/osint/adapters/sherlock_adapter.py +118 -0
  18. helix_osint-3.3.0/osint/adapters/wmn_adapter.py +289 -0
  19. helix_osint-3.3.0/osint/checker.py +324 -0
  20. helix_osint-3.3.0/osint/email_permutations.py +88 -0
  21. helix_osint-3.3.0/osint/graph.py +621 -0
  22. helix_osint-3.3.0/osint/modules/__init__.py +1 -0
  23. helix_osint-3.3.0/osint/modules/crt.py +82 -0
  24. helix_osint-3.3.0/osint/modules/github_deep.py +191 -0
  25. helix_osint-3.3.0/osint/modules/paste.py +95 -0
  26. helix_osint-3.3.0/osint/modules/wayback.py +131 -0
  27. helix_osint-3.3.0/osint/pdf_report.py +227 -0
  28. helix_osint-3.3.0/osint/permutations.py +75 -0
  29. helix_osint-3.3.0/osint/phash.py +140 -0
  30. helix_osint-3.3.0/osint/pivot.py +102 -0
  31. helix_osint-3.3.0/osint/platforms.py +376 -0
  32. helix_osint-3.3.0/osint/report.py +64 -0
  33. helix_osint-3.3.0/osint/verifier.py +563 -0
  34. helix_osint-3.3.0/pyproject.toml +48 -0
  35. helix_osint-3.3.0/setup.cfg +4 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Thalha Ahmed (@thalha-a9)
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,333 @@
1
+ Metadata-Version: 2.4
2
+ Name: helix-osint
3
+ Version: 3.3.0
4
+ Summary: Decode the digital DNA of any identity — OSINT Identity Mapper
5
+ Author-email: Thalha Ahmed <sheikthalah035@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/thalha-a9/helix
8
+ Project-URL: Repository, https://github.com/thalha-a9/helix
9
+ Project-URL: Issues, https://github.com/thalha-a9/helix/issues
10
+ Keywords: osint,reconnaissance,security,bug-bounty,username,identity
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Security
14
+ Classifier: Environment :: Console
15
+ Requires-Python: >=3.9
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: aiohttp>=3.9.0
19
+ Provides-Extra: tls
20
+ Requires-Dist: curl-cffi>=0.6.2; extra == "tls"
21
+ Provides-Extra: phash
22
+ Requires-Dist: imagehash>=4.3.1; extra == "phash"
23
+ Requires-Dist: Pillow>=10.0.0; extra == "phash"
24
+ Provides-Extra: email
25
+ Requires-Dist: holehe>=1.4.4; extra == "email"
26
+ Provides-Extra: ai
27
+ Requires-Dist: anthropic>=0.25.0; extra == "ai"
28
+ Requires-Dist: openai>=1.0.0; extra == "ai"
29
+ Provides-Extra: full
30
+ Requires-Dist: curl-cffi; extra == "full"
31
+ Requires-Dist: imagehash; extra == "full"
32
+ Requires-Dist: Pillow; extra == "full"
33
+ Requires-Dist: holehe; extra == "full"
34
+ Requires-Dist: anthropic; extra == "full"
35
+ Requires-Dist: openai; extra == "full"
36
+ Requires-Dist: weasyprint; extra == "full"
37
+ Dynamic: license-file
38
+
39
+ <div align="center">
40
+
41
+ ```
42
+ ██╗ ██╗███████╗██╗ ██╗██╗ ██╗
43
+ ██║ ██║██╔════╝██║ ██║╚██╗██╔╝
44
+ ███████║█████╗ ██║ ██║ ╚███╔╝
45
+ ██╔══██║██╔══╝ ██║ ██║ ██╔██╗
46
+ ██║ ██║███████╗███████╗██║██╔╝ ██╗
47
+ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝
48
+ ```
49
+
50
+ ### Decode the digital DNA of any identity
51
+
52
+ [![Python](https://img.shields.io/badge/Python-3.9%2B-3776ab?style=flat-square&logo=python&logoColor=white)](https://python.org)
53
+ [![Version](https://img.shields.io/badge/Version-3.1.0-00ff88?style=flat-square)](https://github.com/thalha-a9/helix/releases)
54
+ [![License](https://img.shields.io/badge/License-MIT-f59e0b?style=flat-square)](LICENSE)
55
+ [![Platforms](https://img.shields.io/badge/Platforms-70%2B%20builtin%20·%20700%2B%20WMN%20·%20400%2B%20Sherlock%20·%20Maigret-a78bfa?style=flat-square)](https://github.com/thalha-a9/helix)
56
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square)](https://github.com/thalha-a9/helix/pulls)
57
+
58
+ **Helix** is a next-generation open-source OSINT framework that goes far beyond username checking.<br>
59
+ It maps the *actual connections* between a target's online identities — then renders them as a<br>
60
+ live, interactive D3.js relational graph you can explore, filter, and export.
61
+
62
+ [**Quick Start**](#-quick-start) · [**Features**](#-what-makes-helix-different) · [**Modules**](#-intelligence-modules) · [**Graph**](#-the-graph) · [**Install**](#-installation)
63
+
64
+ </div>
65
+
66
+ ---
67
+
68
+ ## Why Helix?
69
+
70
+ Most OSINT tools answer one question: *"Does this username exist on Platform X?"*
71
+
72
+ Helix answers a harder one: **"How do all these accounts connect to the same person?"**
73
+
74
+ It extracts cross-platform links from bios, matches profile pictures by perceptual hash, infers timezone from commit patterns, discovers domains via certificate transparency, and plots every relationship as a glowing edge in a browser-based network graph — all in a single command.
75
+
76
+ ```bash
77
+ python helix.py -u johndoe --wayback --crt --paste --pivot --phash
78
+ ```
79
+
80
+ ---
81
+
82
+ ## ⚡ What Makes Helix Different
83
+
84
+ | Capability | Sherlock | SpiderFoot | Maltego | **Helix** |
85
+ |---|:---:|:---:|:---:|:---:|
86
+ | Username enumeration | ✓ | ✓ | ✓ | ✓ |
87
+ | Relational bio-link graph | ✗ | ✗ | Partial | **✓** |
88
+ | Recursive alias pivot | ✗ | ✗ | Manual | **✓ auto** |
89
+ | Perceptual avatar matching | ✗ | ✗ | ✗ | **✓** |
90
+ | Timezone inference | ✗ | ✗ | ✗ | **✓** |
91
+ | Wayback identity timeline | ✗ | Partial | ✗ | **✓** |
92
+ | Certificate transparency | ✗ | ✓ | ✓ | **✓** |
93
+ | GitHub commit email extraction | ✗ | ✗ | ✗ | **✓** |
94
+ | Local heuristic verifier | ✗ | ✗ | ✗ | **✓ always-on** |
95
+ | Multi-AI false-positive filter | ✗ | ✗ | ✗ | **✓ 3 providers** |
96
+ | Async speed | ✗ | ✗ | ✗ | **✓** |
97
+ | 100% free & open source | ✓ | ✓ | ✗ | **✓** |
98
+
99
+ ---
100
+
101
+ ## 🔍 Intelligence Modules
102
+
103
+ ### Always On
104
+ - **Local Heuristic Verifier** — Zero-dependency false-positive engine. Scores every result across 8 signals (WAF pages, generic titles, login redirects, homepage redirects). Runs before anything else, every single scan.
105
+
106
+ ### Core Flags
107
+ | Flag | What it does |
108
+ |---|---|
109
+ | `--wmn` | Loads WhatsMyName database at runtime — **700+ platforms**, community-maintained |
110
+ | `--maigret` | Loads **Maigret** database at runtime — sophisticated detection with `presenceStrs`/`absenceStrs`, 24h cached |
111
+ | `--sherlock` | Loads Sherlock's database at runtime — **400+ platforms**, cached 24h locally |
112
+ | `--pivot` | **Recursive bio pivot** — finds aliases in bios and auto-scans them, up to 4 hops deep |
113
+ | `--phash` | **Perceptual avatar hash** — downloads profile pics, hashes them, cross-matches across platforms. Finds the same person even if they changed their username |
114
+ | `--wayback` | **Wayback Machine** — fetches snapshot history + parses archived HTML for old usernames, historic emails, and past bios |
115
+ | `--crt` | **Certificate Transparency** — queries crt.sh for SSL certs containing the target's name or email. Finds personal domains that never appeared in any bio |
116
+ | `--paste` | **Paste Intelligence** — searches GitHub Gists and public Pastebin index for mentions |
117
+ | `--breach` | **Breach check** — queries XposedOrNot for breach metadata (names, dates, data types exposed). No credentials returned |
118
+ | `--holehe` | **Deep email scan** — hands off to holehe for 120+ platform email-registration checks |
119
+ | `--ai` | **AI false-positive filter** — second verification pass via Claude, OpenRouter (free), or NVIDIA NIM (free) |
120
+
121
+ ### Auto-Triggered
122
+ - **GitHub Deep Recon** — runs automatically when a GitHub profile is found. Extracts real emails from public commits (filters noreply), org memberships, language stats, npm packages, and infers timezone from commit timestamp distribution (requires ≥15 commits for confidence)
123
+
124
+ ---
125
+
126
+ ## 🕸 The Graph
127
+
128
+ The HTML output is a standalone zero-dependency interactive network — no server needed, just open in a browser.
129
+
130
+ ```
131
+ White pulsing node → Username root
132
+ Amber pulsing node → Email root
133
+ Amber/orange nodes → Pivot-discovered aliases
134
+ Green solid edges → Bio-extracted cross-links (proven connections)
135
+ Pink dashed edges → Avatar hash matches (same person across accounts)
136
+ Amber dashed edges → Email-matched platforms
137
+ Green ring on node → High confidence (OG meta validated)
138
+ Blue ring on node → Medium confidence
139
+ ```
140
+
141
+ **Controls:** drag nodes · scroll to zoom · click node to open profile · hover for tooltip (confidence, og:title, cross-link partners, bio-extracted alias details) · ⌕ search · ◌ not-found overlay · ☰ labels · ↓ SVG export · filter by confidence
142
+
143
+ ---
144
+
145
+ ## 🚀 Quick Start
146
+
147
+ ```bash
148
+ git clone https://github.com/thalha-a9/helix.git
149
+ cd helix
150
+ pip install -r requirements.txt
151
+ python helix.py -u johndoe
152
+ ```
153
+
154
+ ---
155
+
156
+ ## 📦 Installation
157
+
158
+ **Required**
159
+ ```bash
160
+ pip install aiohttp
161
+ ```
162
+
163
+ **Optional — unlock more power**
164
+ ```bash
165
+ pip install curl-cffi # WAF bypass for Twitter, Instagram, TikTok, Patreon
166
+ pip install imagehash Pillow # Perceptual avatar hash matching (--phash)
167
+ pip install holehe # Deep email scanning 120+ platforms (--holehe)
168
+ pip install anthropic # Claude AI verification (--ai claude)
169
+ pip install openai # OpenRouter / NVIDIA AI verification (--ai openrouter)
170
+ ```
171
+
172
+ **Or install everything at once**
173
+ ```bash
174
+ pip install "helix-osint[full]"
175
+ ```
176
+
177
+ **Set GITHUB_TOKEN for 5000 req/hr on GitHub API** (optional, default is 60/hr):
178
+ ```bash
179
+ export GITHUB_TOKEN=ghp_yourtoken
180
+ ```
181
+
182
+ ---
183
+
184
+ ## 💻 Usage
185
+
186
+ ```bash
187
+ # Basic scan — opens interactive graph automatically
188
+ python helix.py -u johndoe
189
+
190
+ # Full power — all intelligence modules
191
+ python helix.py -u johndoe --wayback --crt --paste --pivot --phash
192
+
193
+ # Username + email — two root nodes, cross-matched in graph
194
+ python helix.py -u johndoe -e johndoe@gmail.com --breach --holehe
195
+
196
+ # Massive scan — 1100+ platforms
197
+ python helix.py -u johndoe --wmn --sherlock
198
+
199
+ # AI-verified scan (free — no API key cost)
200
+ python helix.py -u johndoe --ai openrouter
201
+
202
+ # Recursive pivot — auto-scan aliases up to 4 hops deep
203
+ python helix.py -u johndoe --pivot --pivot-depth 4
204
+
205
+ # Permutations — scan johndoe1, john.doe, realjohndoe, etc.
206
+ python helix.py -u johndoe --permutations
207
+
208
+ # Everything, saved to custom dir, no browser
209
+ python helix.py -u johndoe -e johndoe@gmail.com \
210
+ --wmn --sherlock --wayback --crt --paste \
211
+ --pivot --phash --breach --holehe \
212
+ --ai openrouter --format all --no-browser --output ~/Desktop/report
213
+
214
+ # Check which AI providers are configured
215
+ python helix.py --providers
216
+ ```
217
+
218
+ ---
219
+
220
+ ## 🤖 AI Verification
221
+
222
+ Helix has a two-layer false-positive filter:
223
+
224
+ **Layer 1 — Local heuristic verifier** (always on, zero cost)
225
+ Scores every result across 8 signals. A single generic title (e.g. `"Pinterest"` instead of a username) instantly purges the result. WAF/Cloudflare pages scored separately at 80 points. Threshold: 60 for normal results, 85 for OG-validated high-confidence results.
226
+
227
+ **Layer 2 — AI verifier** (`--ai`, optional)
228
+ Sends uncertain results to an LLM with a strict system prompt. Three providers:
229
+
230
+ | Provider | Flag | Cost | Setup |
231
+ |---|---|---|---|
232
+ | Anthropic Claude | `--ai claude` | Paid | `export ANTHROPIC_API_KEY=...` |
233
+ | OpenRouter Llama 3.1 | `--ai openrouter` | **Free tier** | `export OPENROUTER_API_KEY=...` → [openrouter.ai](https://openrouter.ai) |
234
+ | NVIDIA NIM Llama 3.1 | `--ai nvidia` | **Free tier** | `export NVIDIA_API_KEY=...` → [build.nvidia.com](https://build.nvidia.com) |
235
+
236
+ ---
237
+
238
+ ## 🏗 Architecture
239
+
240
+ ```
241
+ helix/
242
+ ├── helix.py ← CLI entry point + orchestrator
243
+ ├── pyproject.toml ← pip installable (helix-osint)
244
+ ├── osint/
245
+ │ ├── checker.py ← Async engine (aiohttp + optional curl_cffi)
246
+ │ ├── platforms.py ← 70+ platform definitions with OG/API detection
247
+ │ ├── verifier.py ← Local heuristic false-positive engine
248
+ │ ├── graph.py ← D3.js relational graph generator
249
+ │ ├── report.py ← JSON / CSV / TXT exporters
250
+ │ ├── permutations.py ← Username variation generator
251
+ │ ├── pivot.py ← Concurrent BFS alias pivot engine
252
+ │ ├── phash.py ← Perceptual avatar hash matcher
253
+ │ └── modules/
254
+ │ ├── wayback.py ← Archive.org CDX API + archived HTML parser
255
+ │ ├── github_deep.py ← GitHub API deep recon + timezone inference
256
+ │ ├── crt.py ← Certificate transparency (crt.sh)
257
+ │ └── paste.py ← Gist + Pastebin intelligence
258
+ │ └── adapters/
259
+ │ ├── sherlock_adapter.py ← Sherlock data.json loader (24h cached)
260
+ │ ├── wmn_adapter.py ← WhatsMyName loader
261
+ │ ├── holehe_adapter.py ← holehe email scanner wrapper
262
+ │ ├── breach_adapter.py ← XposedOrNot breach metadata
263
+ │ └── ai_verifier.py ← Multi-provider async AI verification
264
+ └── results/ ← Output (git-ignored)
265
+ └── username/
266
+ ├── username_graph.html ← Interactive D3.js network graph
267
+ ├── username_TIMESTAMP.json ← Full structured report
268
+ ├── username_TIMESTAMP.csv
269
+ └── username_TIMESTAMP.txt
270
+ ```
271
+
272
+ ---
273
+
274
+ ## 🔬 How False Positive Prevention Works
275
+
276
+ Helix uses the right detection method per platform instead of naive HTTP 200 checks:
277
+
278
+ | Platform | Method | Why |
279
+ |---|---|---|
280
+ | Reddit | `reddit.com/user/{u}/about.json` → `"is_employee"` field | JSON API; field only exists for valid users |
281
+ | Bluesky | AT Protocol API | SPA — static HTML is useless |
282
+ | Chess.com | `api.chess.com/pub/player/{u}` | Official public API |
283
+ | Lichess | `lichess.org/api/user/{u}` | Official public API |
284
+ | GitHub | `og:title` parsed + validated against known error strings | Server-side rendered, reliable |
285
+ | Medium | `og:title` rejects homepage redirect string | Catches "Where good ideas find you" |
286
+ | Twitter/X | `curl_cffi` TLS impersonation | Skipped gracefully without it |
287
+
288
+ ---
289
+
290
+ ## 📋 Output Formats
291
+
292
+ | Format | Contents |
293
+ |---|---|
294
+ | `.html` | Standalone interactive D3.js graph — no server needed |
295
+ | `.json` | Full structured report including intel bundle (wayback, GitHub deep, CRT, paste) |
296
+ | `.csv` | Spreadsheet-friendly, all platforms |
297
+ | `.txt` | Clean terminal-style summary |
298
+
299
+ ---
300
+
301
+ ## 🤝 Contributing
302
+
303
+ Pull requests are welcome. For major changes open an issue first.
304
+
305
+ When adding a platform to `platforms.py`:
306
+ - Prefer `og_meta` or API endpoints over `text_not_present`
307
+ - Always test against a non-existent username first — if it returns `found=True`, your detection is wrong
308
+ - Add `bio_extract: True` + `bio_patterns` if the platform renders bio text server-side
309
+
310
+ ---
311
+
312
+ ## ⚠️ Legal & Ethics
313
+
314
+ Helix is built for **security research, bug bounty reconnaissance, and OSINT education**.
315
+ All data sources used are publicly accessible. Always ensure you have proper authorization
316
+ before running reconnaissance on any target. The author is not responsible for misuse.
317
+
318
+ ---
319
+
320
+ ## 📎 Related Projects
321
+
322
+ - [esp32-iot-audit](https://github.com/thalha-a9/esp32-iot-audit) — ESP32 IoT security scanner
323
+ - [esp-pentest-toolkit](https://github.com/thalha-a9/esp-pentest-toolkit) — Wireless ESP32/8266 pentest toolkit
324
+
325
+ ---
326
+
327
+ <div align="center">
328
+
329
+ Built by **Thalha Ahmed** · [@thalha-a9](https://github.com/thalha-a9)
330
+
331
+ *If Helix helped you — drop a ⭐ and share it with your security community.*
332
+
333
+ </div>
@@ -0,0 +1,295 @@
1
+ <div align="center">
2
+
3
+ ```
4
+ ██╗ ██╗███████╗██╗ ██╗██╗ ██╗
5
+ ██║ ██║██╔════╝██║ ██║╚██╗██╔╝
6
+ ███████║█████╗ ██║ ██║ ╚███╔╝
7
+ ██╔══██║██╔══╝ ██║ ██║ ██╔██╗
8
+ ██║ ██║███████╗███████╗██║██╔╝ ██╗
9
+ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝
10
+ ```
11
+
12
+ ### Decode the digital DNA of any identity
13
+
14
+ [![Python](https://img.shields.io/badge/Python-3.9%2B-3776ab?style=flat-square&logo=python&logoColor=white)](https://python.org)
15
+ [![Version](https://img.shields.io/badge/Version-3.1.0-00ff88?style=flat-square)](https://github.com/thalha-a9/helix/releases)
16
+ [![License](https://img.shields.io/badge/License-MIT-f59e0b?style=flat-square)](LICENSE)
17
+ [![Platforms](https://img.shields.io/badge/Platforms-70%2B%20builtin%20·%20700%2B%20WMN%20·%20400%2B%20Sherlock%20·%20Maigret-a78bfa?style=flat-square)](https://github.com/thalha-a9/helix)
18
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square)](https://github.com/thalha-a9/helix/pulls)
19
+
20
+ **Helix** is a next-generation open-source OSINT framework that goes far beyond username checking.<br>
21
+ It maps the *actual connections* between a target's online identities — then renders them as a<br>
22
+ live, interactive D3.js relational graph you can explore, filter, and export.
23
+
24
+ [**Quick Start**](#-quick-start) · [**Features**](#-what-makes-helix-different) · [**Modules**](#-intelligence-modules) · [**Graph**](#-the-graph) · [**Install**](#-installation)
25
+
26
+ </div>
27
+
28
+ ---
29
+
30
+ ## Why Helix?
31
+
32
+ Most OSINT tools answer one question: *"Does this username exist on Platform X?"*
33
+
34
+ Helix answers a harder one: **"How do all these accounts connect to the same person?"**
35
+
36
+ It extracts cross-platform links from bios, matches profile pictures by perceptual hash, infers timezone from commit patterns, discovers domains via certificate transparency, and plots every relationship as a glowing edge in a browser-based network graph — all in a single command.
37
+
38
+ ```bash
39
+ python helix.py -u johndoe --wayback --crt --paste --pivot --phash
40
+ ```
41
+
42
+ ---
43
+
44
+ ## ⚡ What Makes Helix Different
45
+
46
+ | Capability | Sherlock | SpiderFoot | Maltego | **Helix** |
47
+ |---|:---:|:---:|:---:|:---:|
48
+ | Username enumeration | ✓ | ✓ | ✓ | ✓ |
49
+ | Relational bio-link graph | ✗ | ✗ | Partial | **✓** |
50
+ | Recursive alias pivot | ✗ | ✗ | Manual | **✓ auto** |
51
+ | Perceptual avatar matching | ✗ | ✗ | ✗ | **✓** |
52
+ | Timezone inference | ✗ | ✗ | ✗ | **✓** |
53
+ | Wayback identity timeline | ✗ | Partial | ✗ | **✓** |
54
+ | Certificate transparency | ✗ | ✓ | ✓ | **✓** |
55
+ | GitHub commit email extraction | ✗ | ✗ | ✗ | **✓** |
56
+ | Local heuristic verifier | ✗ | ✗ | ✗ | **✓ always-on** |
57
+ | Multi-AI false-positive filter | ✗ | ✗ | ✗ | **✓ 3 providers** |
58
+ | Async speed | ✗ | ✗ | ✗ | **✓** |
59
+ | 100% free & open source | ✓ | ✓ | ✗ | **✓** |
60
+
61
+ ---
62
+
63
+ ## 🔍 Intelligence Modules
64
+
65
+ ### Always On
66
+ - **Local Heuristic Verifier** — Zero-dependency false-positive engine. Scores every result across 8 signals (WAF pages, generic titles, login redirects, homepage redirects). Runs before anything else, every single scan.
67
+
68
+ ### Core Flags
69
+ | Flag | What it does |
70
+ |---|---|
71
+ | `--wmn` | Loads WhatsMyName database at runtime — **700+ platforms**, community-maintained |
72
+ | `--maigret` | Loads **Maigret** database at runtime — sophisticated detection with `presenceStrs`/`absenceStrs`, 24h cached |
73
+ | `--sherlock` | Loads Sherlock's database at runtime — **400+ platforms**, cached 24h locally |
74
+ | `--pivot` | **Recursive bio pivot** — finds aliases in bios and auto-scans them, up to 4 hops deep |
75
+ | `--phash` | **Perceptual avatar hash** — downloads profile pics, hashes them, cross-matches across platforms. Finds the same person even if they changed their username |
76
+ | `--wayback` | **Wayback Machine** — fetches snapshot history + parses archived HTML for old usernames, historic emails, and past bios |
77
+ | `--crt` | **Certificate Transparency** — queries crt.sh for SSL certs containing the target's name or email. Finds personal domains that never appeared in any bio |
78
+ | `--paste` | **Paste Intelligence** — searches GitHub Gists and public Pastebin index for mentions |
79
+ | `--breach` | **Breach check** — queries XposedOrNot for breach metadata (names, dates, data types exposed). No credentials returned |
80
+ | `--holehe` | **Deep email scan** — hands off to holehe for 120+ platform email-registration checks |
81
+ | `--ai` | **AI false-positive filter** — second verification pass via Claude, OpenRouter (free), or NVIDIA NIM (free) |
82
+
83
+ ### Auto-Triggered
84
+ - **GitHub Deep Recon** — runs automatically when a GitHub profile is found. Extracts real emails from public commits (filters noreply), org memberships, language stats, npm packages, and infers timezone from commit timestamp distribution (requires ≥15 commits for confidence)
85
+
86
+ ---
87
+
88
+ ## 🕸 The Graph
89
+
90
+ The HTML output is a standalone zero-dependency interactive network — no server needed, just open in a browser.
91
+
92
+ ```
93
+ White pulsing node → Username root
94
+ Amber pulsing node → Email root
95
+ Amber/orange nodes → Pivot-discovered aliases
96
+ Green solid edges → Bio-extracted cross-links (proven connections)
97
+ Pink dashed edges → Avatar hash matches (same person across accounts)
98
+ Amber dashed edges → Email-matched platforms
99
+ Green ring on node → High confidence (OG meta validated)
100
+ Blue ring on node → Medium confidence
101
+ ```
102
+
103
+ **Controls:** drag nodes · scroll to zoom · click node to open profile · hover for tooltip (confidence, og:title, cross-link partners, bio-extracted alias details) · ⌕ search · ◌ not-found overlay · ☰ labels · ↓ SVG export · filter by confidence
104
+
105
+ ---
106
+
107
+ ## 🚀 Quick Start
108
+
109
+ ```bash
110
+ git clone https://github.com/thalha-a9/helix.git
111
+ cd helix
112
+ pip install -r requirements.txt
113
+ python helix.py -u johndoe
114
+ ```
115
+
116
+ ---
117
+
118
+ ## 📦 Installation
119
+
120
+ **Required**
121
+ ```bash
122
+ pip install aiohttp
123
+ ```
124
+
125
+ **Optional — unlock more power**
126
+ ```bash
127
+ pip install curl-cffi # WAF bypass for Twitter, Instagram, TikTok, Patreon
128
+ pip install imagehash Pillow # Perceptual avatar hash matching (--phash)
129
+ pip install holehe # Deep email scanning 120+ platforms (--holehe)
130
+ pip install anthropic # Claude AI verification (--ai claude)
131
+ pip install openai # OpenRouter / NVIDIA AI verification (--ai openrouter)
132
+ ```
133
+
134
+ **Or install everything at once**
135
+ ```bash
136
+ pip install "helix-osint[full]"
137
+ ```
138
+
139
+ **Set GITHUB_TOKEN for 5000 req/hr on GitHub API** (optional, default is 60/hr):
140
+ ```bash
141
+ export GITHUB_TOKEN=ghp_yourtoken
142
+ ```
143
+
144
+ ---
145
+
146
+ ## 💻 Usage
147
+
148
+ ```bash
149
+ # Basic scan — opens interactive graph automatically
150
+ python helix.py -u johndoe
151
+
152
+ # Full power — all intelligence modules
153
+ python helix.py -u johndoe --wayback --crt --paste --pivot --phash
154
+
155
+ # Username + email — two root nodes, cross-matched in graph
156
+ python helix.py -u johndoe -e johndoe@gmail.com --breach --holehe
157
+
158
+ # Massive scan — 1100+ platforms
159
+ python helix.py -u johndoe --wmn --sherlock
160
+
161
+ # AI-verified scan (free — no API key cost)
162
+ python helix.py -u johndoe --ai openrouter
163
+
164
+ # Recursive pivot — auto-scan aliases up to 4 hops deep
165
+ python helix.py -u johndoe --pivot --pivot-depth 4
166
+
167
+ # Permutations — scan johndoe1, john.doe, realjohndoe, etc.
168
+ python helix.py -u johndoe --permutations
169
+
170
+ # Everything, saved to custom dir, no browser
171
+ python helix.py -u johndoe -e johndoe@gmail.com \
172
+ --wmn --sherlock --wayback --crt --paste \
173
+ --pivot --phash --breach --holehe \
174
+ --ai openrouter --format all --no-browser --output ~/Desktop/report
175
+
176
+ # Check which AI providers are configured
177
+ python helix.py --providers
178
+ ```
179
+
180
+ ---
181
+
182
+ ## 🤖 AI Verification
183
+
184
+ Helix has a two-layer false-positive filter:
185
+
186
+ **Layer 1 — Local heuristic verifier** (always on, zero cost)
187
+ Scores every result across 8 signals. A single generic title (e.g. `"Pinterest"` instead of a username) instantly purges the result. WAF/Cloudflare pages scored separately at 80 points. Threshold: 60 for normal results, 85 for OG-validated high-confidence results.
188
+
189
+ **Layer 2 — AI verifier** (`--ai`, optional)
190
+ Sends uncertain results to an LLM with a strict system prompt. Three providers:
191
+
192
+ | Provider | Flag | Cost | Setup |
193
+ |---|---|---|---|
194
+ | Anthropic Claude | `--ai claude` | Paid | `export ANTHROPIC_API_KEY=...` |
195
+ | OpenRouter Llama 3.1 | `--ai openrouter` | **Free tier** | `export OPENROUTER_API_KEY=...` → [openrouter.ai](https://openrouter.ai) |
196
+ | NVIDIA NIM Llama 3.1 | `--ai nvidia` | **Free tier** | `export NVIDIA_API_KEY=...` → [build.nvidia.com](https://build.nvidia.com) |
197
+
198
+ ---
199
+
200
+ ## 🏗 Architecture
201
+
202
+ ```
203
+ helix/
204
+ ├── helix.py ← CLI entry point + orchestrator
205
+ ├── pyproject.toml ← pip installable (helix-osint)
206
+ ├── osint/
207
+ │ ├── checker.py ← Async engine (aiohttp + optional curl_cffi)
208
+ │ ├── platforms.py ← 70+ platform definitions with OG/API detection
209
+ │ ├── verifier.py ← Local heuristic false-positive engine
210
+ │ ├── graph.py ← D3.js relational graph generator
211
+ │ ├── report.py ← JSON / CSV / TXT exporters
212
+ │ ├── permutations.py ← Username variation generator
213
+ │ ├── pivot.py ← Concurrent BFS alias pivot engine
214
+ │ ├── phash.py ← Perceptual avatar hash matcher
215
+ │ └── modules/
216
+ │ ├── wayback.py ← Archive.org CDX API + archived HTML parser
217
+ │ ├── github_deep.py ← GitHub API deep recon + timezone inference
218
+ │ ├── crt.py ← Certificate transparency (crt.sh)
219
+ │ └── paste.py ← Gist + Pastebin intelligence
220
+ │ └── adapters/
221
+ │ ├── sherlock_adapter.py ← Sherlock data.json loader (24h cached)
222
+ │ ├── wmn_adapter.py ← WhatsMyName loader
223
+ │ ├── holehe_adapter.py ← holehe email scanner wrapper
224
+ │ ├── breach_adapter.py ← XposedOrNot breach metadata
225
+ │ └── ai_verifier.py ← Multi-provider async AI verification
226
+ └── results/ ← Output (git-ignored)
227
+ └── username/
228
+ ├── username_graph.html ← Interactive D3.js network graph
229
+ ├── username_TIMESTAMP.json ← Full structured report
230
+ ├── username_TIMESTAMP.csv
231
+ └── username_TIMESTAMP.txt
232
+ ```
233
+
234
+ ---
235
+
236
+ ## 🔬 How False Positive Prevention Works
237
+
238
+ Helix uses the right detection method per platform instead of naive HTTP 200 checks:
239
+
240
+ | Platform | Method | Why |
241
+ |---|---|---|
242
+ | Reddit | `reddit.com/user/{u}/about.json` → `"is_employee"` field | JSON API; field only exists for valid users |
243
+ | Bluesky | AT Protocol API | SPA — static HTML is useless |
244
+ | Chess.com | `api.chess.com/pub/player/{u}` | Official public API |
245
+ | Lichess | `lichess.org/api/user/{u}` | Official public API |
246
+ | GitHub | `og:title` parsed + validated against known error strings | Server-side rendered, reliable |
247
+ | Medium | `og:title` rejects homepage redirect string | Catches "Where good ideas find you" |
248
+ | Twitter/X | `curl_cffi` TLS impersonation | Skipped gracefully without it |
249
+
250
+ ---
251
+
252
+ ## 📋 Output Formats
253
+
254
+ | Format | Contents |
255
+ |---|---|
256
+ | `.html` | Standalone interactive D3.js graph — no server needed |
257
+ | `.json` | Full structured report including intel bundle (wayback, GitHub deep, CRT, paste) |
258
+ | `.csv` | Spreadsheet-friendly, all platforms |
259
+ | `.txt` | Clean terminal-style summary |
260
+
261
+ ---
262
+
263
+ ## 🤝 Contributing
264
+
265
+ Pull requests are welcome. For major changes open an issue first.
266
+
267
+ When adding a platform to `platforms.py`:
268
+ - Prefer `og_meta` or API endpoints over `text_not_present`
269
+ - Always test against a non-existent username first — if it returns `found=True`, your detection is wrong
270
+ - Add `bio_extract: True` + `bio_patterns` if the platform renders bio text server-side
271
+
272
+ ---
273
+
274
+ ## ⚠️ Legal & Ethics
275
+
276
+ Helix is built for **security research, bug bounty reconnaissance, and OSINT education**.
277
+ All data sources used are publicly accessible. Always ensure you have proper authorization
278
+ before running reconnaissance on any target. The author is not responsible for misuse.
279
+
280
+ ---
281
+
282
+ ## 📎 Related Projects
283
+
284
+ - [esp32-iot-audit](https://github.com/thalha-a9/esp32-iot-audit) — ESP32 IoT security scanner
285
+ - [esp-pentest-toolkit](https://github.com/thalha-a9/esp-pentest-toolkit) — Wireless ESP32/8266 pentest toolkit
286
+
287
+ ---
288
+
289
+ <div align="center">
290
+
291
+ Built by **Thalha Ahmed** · [@thalha-a9](https://github.com/thalha-a9)
292
+
293
+ *If Helix helped you — drop a ⭐ and share it with your security community.*
294
+
295
+ </div>