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.
- helix_osint-3.3.0/LICENSE +21 -0
- helix_osint-3.3.0/PKG-INFO +333 -0
- helix_osint-3.3.0/README.md +295 -0
- helix_osint-3.3.0/helix.py +515 -0
- helix_osint-3.3.0/helix_osint.egg-info/PKG-INFO +333 -0
- helix_osint-3.3.0/helix_osint.egg-info/SOURCES.txt +33 -0
- helix_osint-3.3.0/helix_osint.egg-info/dependency_links.txt +1 -0
- helix_osint-3.3.0/helix_osint.egg-info/entry_points.txt +2 -0
- helix_osint-3.3.0/helix_osint.egg-info/requires.txt +24 -0
- helix_osint-3.3.0/helix_osint.egg-info/top_level.txt +2 -0
- helix_osint-3.3.0/osint/__init__.py +1 -0
- helix_osint-3.3.0/osint/adapters/__init__.py +0 -0
- helix_osint-3.3.0/osint/adapters/ai_verifier.py +128 -0
- helix_osint-3.3.0/osint/adapters/breach_adapter.py +97 -0
- helix_osint-3.3.0/osint/adapters/holehe_adapter.py +102 -0
- helix_osint-3.3.0/osint/adapters/maigret_adapter.py +157 -0
- helix_osint-3.3.0/osint/adapters/sherlock_adapter.py +118 -0
- helix_osint-3.3.0/osint/adapters/wmn_adapter.py +289 -0
- helix_osint-3.3.0/osint/checker.py +324 -0
- helix_osint-3.3.0/osint/email_permutations.py +88 -0
- helix_osint-3.3.0/osint/graph.py +621 -0
- helix_osint-3.3.0/osint/modules/__init__.py +1 -0
- helix_osint-3.3.0/osint/modules/crt.py +82 -0
- helix_osint-3.3.0/osint/modules/github_deep.py +191 -0
- helix_osint-3.3.0/osint/modules/paste.py +95 -0
- helix_osint-3.3.0/osint/modules/wayback.py +131 -0
- helix_osint-3.3.0/osint/pdf_report.py +227 -0
- helix_osint-3.3.0/osint/permutations.py +75 -0
- helix_osint-3.3.0/osint/phash.py +140 -0
- helix_osint-3.3.0/osint/pivot.py +102 -0
- helix_osint-3.3.0/osint/platforms.py +376 -0
- helix_osint-3.3.0/osint/report.py +64 -0
- helix_osint-3.3.0/osint/verifier.py +563 -0
- helix_osint-3.3.0/pyproject.toml +48 -0
- 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
|
+
[](https://python.org)
|
|
53
|
+
[](https://github.com/thalha-a9/helix/releases)
|
|
54
|
+
[](LICENSE)
|
|
55
|
+
[](https://github.com/thalha-a9/helix)
|
|
56
|
+
[](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
|
+
[](https://python.org)
|
|
15
|
+
[](https://github.com/thalha-a9/helix/releases)
|
|
16
|
+
[](LICENSE)
|
|
17
|
+
[](https://github.com/thalha-a9/helix)
|
|
18
|
+
[](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>
|