aliens-eye 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aliens_eye-2.0.0/.gitignore +12 -0
- aliens_eye-2.0.0/LICENSE +21 -0
- aliens_eye-2.0.0/PKG-INFO +220 -0
- aliens_eye-2.0.0/README.md +179 -0
- aliens_eye-2.0.0/pyproject.toml +71 -0
- aliens_eye-2.0.0/src/aliens_eye/__init__.py +3 -0
- aliens_eye-2.0.0/src/aliens_eye/__main__.py +4 -0
- aliens_eye-2.0.0/src/aliens_eye/cli.py +563 -0
- aliens_eye-2.0.0/src/aliens_eye/core/__init__.py +1 -0
- aliens_eye-2.0.0/src/aliens_eye/core/analyzer.py +162 -0
- aliens_eye-2.0.0/src/aliens_eye/core/browser.py +43 -0
- aliens_eye-2.0.0/src/aliens_eye/core/config.py +141 -0
- aliens_eye-2.0.0/src/aliens_eye/core/detector.py +126 -0
- aliens_eye-2.0.0/src/aliens_eye/core/exporter.py +345 -0
- aliens_eye-2.0.0/src/aliens_eye/core/features.py +33 -0
- aliens_eye-2.0.0/src/aliens_eye/core/fingerprints.py +113 -0
- aliens_eye-2.0.0/src/aliens_eye/core/http.py +127 -0
- aliens_eye-2.0.0/src/aliens_eye/core/rate_limit.py +29 -0
- aliens_eye-2.0.0/src/aliens_eye/core/scanner.py +362 -0
- aliens_eye-2.0.0/src/aliens_eye/core/variations.py +79 -0
- aliens_eye-2.0.0/src/aliens_eye/data/model.json +118 -0
- aliens_eye-2.0.0/src/aliens_eye/data/nsfw_sites.json +22 -0
- aliens_eye-2.0.0/src/aliens_eye/data/seed_dataset.csv +144 -0
- aliens_eye-2.0.0/src/aliens_eye/data/selfcheck.json +28 -0
- aliens_eye-2.0.0/src/aliens_eye/data/sites.json +842 -0
- aliens_eye-2.0.0/src/aliens_eye/ml/__init__.py +1 -0
- aliens_eye-2.0.0/src/aliens_eye/ml/collect.py +132 -0
- aliens_eye-2.0.0/src/aliens_eye/ml/inference.py +84 -0
- aliens_eye-2.0.0/src/aliens_eye/ml/train.py +91 -0
- aliens_eye-2.0.0/src/aliens_eye/selfcheck.py +123 -0
- aliens_eye-2.0.0/src/aliens_eye/utils/__init__.py +1 -0
- aliens_eye-2.0.0/src/aliens_eye/utils/colors.py +15 -0
- aliens_eye-2.0.0/src/aliens_eye/utils/console.py +135 -0
- aliens_eye-2.0.0/src/aliens_eye/utils/logger.py +16 -0
aliens_eye-2.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Aaron Thomas
|
|
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,220 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aliens-eye
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: AI-powered OSINT username scanner across 800+ social media and web platforms
|
|
5
|
+
Project-URL: Homepage, https://github.com/arxhr007/Aliens_eye
|
|
6
|
+
Project-URL: Repository, https://github.com/arxhr007/Aliens_eye
|
|
7
|
+
Project-URL: Issues, https://github.com/arxhr007/Aliens_eye/issues
|
|
8
|
+
Author: Aaron Thomas (arxhr007)
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: osint,recon,scanner,security,social-media,username
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Information Technology
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Security
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Requires-Dist: aiohttp-socks<1.0,>=0.8
|
|
25
|
+
Requires-Dist: aiohttp>=3.8
|
|
26
|
+
Requires-Dist: platformdirs>=4.0
|
|
27
|
+
Requires-Dist: rich>=13.7
|
|
28
|
+
Requires-Dist: selectolax>=0.3.21
|
|
29
|
+
Provides-Extra: browser
|
|
30
|
+
Requires-Dist: playwright>=1.42; extra == 'browser'
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: build; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
35
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
36
|
+
Requires-Dist: twine; extra == 'dev'
|
|
37
|
+
Provides-Extra: train
|
|
38
|
+
Requires-Dist: numpy>=1.24; extra == 'train'
|
|
39
|
+
Requires-Dist: scikit-learn>=1.3; extra == 'train'
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
41
|
+
|
|
42
|
+
<h1 align="center">ALIENS EYE</h1>
|
|
43
|
+
|
|
44
|
+
<div align="center">
|
|
45
|
+
<img src="https://raw.githubusercontent.com/arxhr007/Aliens_eye/main/photos/logo.png"
|
|
46
|
+
alt="Aliens Eye Logo"
|
|
47
|
+
width="400"
|
|
48
|
+
height="300">
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<h1 align="center">AI-OSINT Username Scanner</h1>
|
|
52
|
+
|
|
53
|
+
<h3 align="center">Advanced AI-Powered Social Media Username Finder</h3>
|
|
54
|
+
<h4 align="center">Scan 840+ platforms with ML-blended detection</h4>
|
|
55
|
+
|
|
56
|
+
<p align="center">
|
|
57
|
+
<a href="https://pypi.org/project/aliens-eye/"><img alt="PyPI" src="https://img.shields.io/pypi/v/aliens-eye?style=for-the-badge&color=blue"></a>
|
|
58
|
+
<a href="https://github.com/arxhr007/Aliens_eye/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/arxhr007/Aliens_eye/ci.yml?style=for-the-badge"></a>
|
|
59
|
+
<a href="#"><img alt="Python" src="https://img.shields.io/pypi/pyversions/aliens-eye?style=for-the-badge"></a>
|
|
60
|
+
<a href="#"><img alt="Stars" src="https://img.shields.io/github/stars/arxhr007/Aliens_eye?style=for-the-badge&color=red"></a>
|
|
61
|
+
<a href="#"><img alt="License" src="https://img.shields.io/github/license/arxhr007/Aliens_eye?color=orange&style=for-the-badge"></a>
|
|
62
|
+
</p>
|
|
63
|
+
|
|
64
|
+
<!-- TODO: record a demo GIF (e.g. with vhs or asciinema) and drop it at docs/demo.gif -->
|
|
65
|
+
<!-- <p align="center"><img src="docs/demo.gif" width="700"></p> -->
|
|
66
|
+
|
|
67
|
+
## Highlights
|
|
68
|
+
|
|
69
|
+
- **840+ platforms** scanned asynchronously in seconds
|
|
70
|
+
- **ML + heuristic detection** — a trained model blended with 25 structural signals (HTTP status, DOM shape, keywords, fingerprints) instead of naive status-code checks
|
|
71
|
+
- **Modern terminal UI** — live progress, sorted result tables, summary panels (powered by [rich](https://github.com/Textualize/rich))
|
|
72
|
+
- **Proxy & Tor support** — `--proxy socks5://...` or just `--tor`
|
|
73
|
+
- **Site filtering** — `--site github,reddit`, `--exclude-site`, `--no-nsfw`
|
|
74
|
+
- **Self-check** — `aliens_eye selfcheck` validates detection accuracy against accounts known to exist
|
|
75
|
+
- **Retrainable** — collect your own labeled dataset and retrain the model with `aliens_eye train`
|
|
76
|
+
- **Reports** in JSON, CSV, HTML, and Markdown
|
|
77
|
+
- **Playwright fallback** for JavaScript-heavy pages (optional extra)
|
|
78
|
+
|
|
79
|
+
## Install
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pip install aliens-eye
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Optional extras:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
pip install "aliens-eye[browser]" # Playwright fallback for hard pages
|
|
89
|
+
python -m playwright install chromium
|
|
90
|
+
|
|
91
|
+
pip install "aliens-eye[train]" # scikit-learn, for retraining the ML model
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Or with Docker:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
docker build -t aliens-eye .
|
|
98
|
+
docker run --rm -it aliens-eye username
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
From source:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
git clone https://github.com/arxhr007/Aliens_eye.git
|
|
105
|
+
cd Aliens_eye
|
|
106
|
+
pip install -e .
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Usage
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Interactive prompts
|
|
113
|
+
aliens_eye
|
|
114
|
+
|
|
115
|
+
# Single username
|
|
116
|
+
aliens_eye username
|
|
117
|
+
|
|
118
|
+
# Multiple usernames
|
|
119
|
+
aliens_eye username1 username2
|
|
120
|
+
|
|
121
|
+
# Advanced scan level (prefix/suffix variations)
|
|
122
|
+
aliens_eye username -l advanced
|
|
123
|
+
|
|
124
|
+
# Only scan specific sites
|
|
125
|
+
aliens_eye username --site github,reddit,gitlab
|
|
126
|
+
|
|
127
|
+
# Skip NSFW sites
|
|
128
|
+
aliens_eye username --no-nsfw
|
|
129
|
+
|
|
130
|
+
# Route through Tor (needs a local Tor daemon)
|
|
131
|
+
aliens_eye username --tor
|
|
132
|
+
|
|
133
|
+
# Any HTTP or SOCKS proxy
|
|
134
|
+
aliens_eye username --proxy socks5://127.0.0.1:1080
|
|
135
|
+
|
|
136
|
+
# Export everything
|
|
137
|
+
aliens_eye username --format all --output results
|
|
138
|
+
|
|
139
|
+
# Heuristics only, no ML
|
|
140
|
+
aliens_eye username --no-ml
|
|
141
|
+
|
|
142
|
+
# Non-interactive preset: quick / full / aggressive
|
|
143
|
+
aliens_eye username --profile quick
|
|
144
|
+
|
|
145
|
+
# Plain output for scripts and CI (no colors/progress)
|
|
146
|
+
aliens_eye username --plain
|
|
147
|
+
|
|
148
|
+
# View results from a previous scan
|
|
149
|
+
aliens_eye -r results/username_advanced_20260611_120000.json
|
|
150
|
+
|
|
151
|
+
# Validate detection accuracy against known accounts
|
|
152
|
+
aliens_eye selfcheck
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## How detection works
|
|
156
|
+
|
|
157
|
+
Every response is converted into a 25-dimensional feature vector: HTTP status buckets, username placement (path/title/meta), error and profile keywords, DOM structure (images, forms, profile/error CSS classes), response timing, redirect counts, and per-site fingerprint matches learned from previous scans.
|
|
158
|
+
|
|
159
|
+
Two judges then vote:
|
|
160
|
+
|
|
161
|
+
1. **Heuristic engine** — weighted scoring over the features
|
|
162
|
+
2. **ML model** — logistic regression trained on labeled scans of real (and deliberately fake) accounts, shipped with the package and running in pure Python (no sklearn needed at runtime)
|
|
163
|
+
|
|
164
|
+
The blended probability maps to **Found / Maybe / Not Found** with a confidence percentage. If a model file is missing or invalid, the scanner silently falls back to heuristics.
|
|
165
|
+
|
|
166
|
+
### Retraining the model
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
pip install "aliens-eye[train]"
|
|
170
|
+
|
|
171
|
+
# 1. Scan ground-truth accounts + random non-existent usernames to build a dataset
|
|
172
|
+
aliens_eye train collect --out dataset.csv --negatives 4
|
|
173
|
+
|
|
174
|
+
# 2. Fit and export the model
|
|
175
|
+
aliens_eye train fit --data dataset.csv --out model.json
|
|
176
|
+
|
|
177
|
+
# 3. Use it
|
|
178
|
+
aliens_eye username --model model.json
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Configuration
|
|
182
|
+
|
|
183
|
+
Aliens Eye merges a JSON config file with CLI flags (CLI wins). Search order without `--config`: `./config.json`, then the platform config dir (e.g. `~/.config/aliens_eye/config.json` on Linux, `%LOCALAPPDATA%\aliens_eye` on Windows).
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"concurrent": 50,
|
|
188
|
+
"timeout": 10.0,
|
|
189
|
+
"retries": 2,
|
|
190
|
+
"rate_limit_delay": 0.2,
|
|
191
|
+
"output_dir": "results",
|
|
192
|
+
"output_formats": ["json", "csv", "html", "md"],
|
|
193
|
+
"use_playwright": false,
|
|
194
|
+
"proxy": null,
|
|
195
|
+
"use_ml": true,
|
|
196
|
+
"exclude_nsfw": false,
|
|
197
|
+
"level": "basic"
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Outputs
|
|
202
|
+
|
|
203
|
+
Results are saved with timestamped filenames:
|
|
204
|
+
|
|
205
|
+
- `username_level_YYYYMMDD_HHMMSS.json` — full detail including per-site feature analysis
|
|
206
|
+
- `.csv` — flat rows for spreadsheets
|
|
207
|
+
- `.html` — styled standalone report
|
|
208
|
+
- `.md` — Markdown summary of Found/Maybe hits
|
|
209
|
+
|
|
210
|
+
## Architecture
|
|
211
|
+
|
|
212
|
+
The package lives under `src/aliens_eye/`: `core/` (scanner, detector, analyzer, http, exporter, fingerprints), `ml/` (inference, training, dataset collection), `utils/` (rich console layer), and `data/` (sites.json, trained model, ground-truth sets). For internals and flowcharts, see [WORKING.md](WORKING.md).
|
|
213
|
+
|
|
214
|
+
## Contributing
|
|
215
|
+
|
|
216
|
+
Issues and PRs welcome — adding sites to `src/aliens_eye/data/sites.json`, expanding the ground-truth set in `selfcheck.json`, or improving the model all directly improve detection. Run `pytest` and `ruff check src tests` before submitting.
|
|
217
|
+
|
|
218
|
+
## Disclaimer
|
|
219
|
+
|
|
220
|
+
This tool is for educational purposes and legitimate OSINT research only. You are responsible for complying with laws and site terms of service.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
<h1 align="center">ALIENS EYE</h1>
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/arxhr007/Aliens_eye/main/photos/logo.png"
|
|
5
|
+
alt="Aliens Eye Logo"
|
|
6
|
+
width="400"
|
|
7
|
+
height="300">
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<h1 align="center">AI-OSINT Username Scanner</h1>
|
|
11
|
+
|
|
12
|
+
<h3 align="center">Advanced AI-Powered Social Media Username Finder</h3>
|
|
13
|
+
<h4 align="center">Scan 840+ platforms with ML-blended detection</h4>
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<a href="https://pypi.org/project/aliens-eye/"><img alt="PyPI" src="https://img.shields.io/pypi/v/aliens-eye?style=for-the-badge&color=blue"></a>
|
|
17
|
+
<a href="https://github.com/arxhr007/Aliens_eye/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/arxhr007/Aliens_eye/ci.yml?style=for-the-badge"></a>
|
|
18
|
+
<a href="#"><img alt="Python" src="https://img.shields.io/pypi/pyversions/aliens-eye?style=for-the-badge"></a>
|
|
19
|
+
<a href="#"><img alt="Stars" src="https://img.shields.io/github/stars/arxhr007/Aliens_eye?style=for-the-badge&color=red"></a>
|
|
20
|
+
<a href="#"><img alt="License" src="https://img.shields.io/github/license/arxhr007/Aliens_eye?color=orange&style=for-the-badge"></a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<!-- TODO: record a demo GIF (e.g. with vhs or asciinema) and drop it at docs/demo.gif -->
|
|
24
|
+
<!-- <p align="center"><img src="docs/demo.gif" width="700"></p> -->
|
|
25
|
+
|
|
26
|
+
## Highlights
|
|
27
|
+
|
|
28
|
+
- **840+ platforms** scanned asynchronously in seconds
|
|
29
|
+
- **ML + heuristic detection** — a trained model blended with 25 structural signals (HTTP status, DOM shape, keywords, fingerprints) instead of naive status-code checks
|
|
30
|
+
- **Modern terminal UI** — live progress, sorted result tables, summary panels (powered by [rich](https://github.com/Textualize/rich))
|
|
31
|
+
- **Proxy & Tor support** — `--proxy socks5://...` or just `--tor`
|
|
32
|
+
- **Site filtering** — `--site github,reddit`, `--exclude-site`, `--no-nsfw`
|
|
33
|
+
- **Self-check** — `aliens_eye selfcheck` validates detection accuracy against accounts known to exist
|
|
34
|
+
- **Retrainable** — collect your own labeled dataset and retrain the model with `aliens_eye train`
|
|
35
|
+
- **Reports** in JSON, CSV, HTML, and Markdown
|
|
36
|
+
- **Playwright fallback** for JavaScript-heavy pages (optional extra)
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install aliens-eye
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Optional extras:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install "aliens-eye[browser]" # Playwright fallback for hard pages
|
|
48
|
+
python -m playwright install chromium
|
|
49
|
+
|
|
50
|
+
pip install "aliens-eye[train]" # scikit-learn, for retraining the ML model
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Or with Docker:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
docker build -t aliens-eye .
|
|
57
|
+
docker run --rm -it aliens-eye username
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
From source:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git clone https://github.com/arxhr007/Aliens_eye.git
|
|
64
|
+
cd Aliens_eye
|
|
65
|
+
pip install -e .
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Usage
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Interactive prompts
|
|
72
|
+
aliens_eye
|
|
73
|
+
|
|
74
|
+
# Single username
|
|
75
|
+
aliens_eye username
|
|
76
|
+
|
|
77
|
+
# Multiple usernames
|
|
78
|
+
aliens_eye username1 username2
|
|
79
|
+
|
|
80
|
+
# Advanced scan level (prefix/suffix variations)
|
|
81
|
+
aliens_eye username -l advanced
|
|
82
|
+
|
|
83
|
+
# Only scan specific sites
|
|
84
|
+
aliens_eye username --site github,reddit,gitlab
|
|
85
|
+
|
|
86
|
+
# Skip NSFW sites
|
|
87
|
+
aliens_eye username --no-nsfw
|
|
88
|
+
|
|
89
|
+
# Route through Tor (needs a local Tor daemon)
|
|
90
|
+
aliens_eye username --tor
|
|
91
|
+
|
|
92
|
+
# Any HTTP or SOCKS proxy
|
|
93
|
+
aliens_eye username --proxy socks5://127.0.0.1:1080
|
|
94
|
+
|
|
95
|
+
# Export everything
|
|
96
|
+
aliens_eye username --format all --output results
|
|
97
|
+
|
|
98
|
+
# Heuristics only, no ML
|
|
99
|
+
aliens_eye username --no-ml
|
|
100
|
+
|
|
101
|
+
# Non-interactive preset: quick / full / aggressive
|
|
102
|
+
aliens_eye username --profile quick
|
|
103
|
+
|
|
104
|
+
# Plain output for scripts and CI (no colors/progress)
|
|
105
|
+
aliens_eye username --plain
|
|
106
|
+
|
|
107
|
+
# View results from a previous scan
|
|
108
|
+
aliens_eye -r results/username_advanced_20260611_120000.json
|
|
109
|
+
|
|
110
|
+
# Validate detection accuracy against known accounts
|
|
111
|
+
aliens_eye selfcheck
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## How detection works
|
|
115
|
+
|
|
116
|
+
Every response is converted into a 25-dimensional feature vector: HTTP status buckets, username placement (path/title/meta), error and profile keywords, DOM structure (images, forms, profile/error CSS classes), response timing, redirect counts, and per-site fingerprint matches learned from previous scans.
|
|
117
|
+
|
|
118
|
+
Two judges then vote:
|
|
119
|
+
|
|
120
|
+
1. **Heuristic engine** — weighted scoring over the features
|
|
121
|
+
2. **ML model** — logistic regression trained on labeled scans of real (and deliberately fake) accounts, shipped with the package and running in pure Python (no sklearn needed at runtime)
|
|
122
|
+
|
|
123
|
+
The blended probability maps to **Found / Maybe / Not Found** with a confidence percentage. If a model file is missing or invalid, the scanner silently falls back to heuristics.
|
|
124
|
+
|
|
125
|
+
### Retraining the model
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pip install "aliens-eye[train]"
|
|
129
|
+
|
|
130
|
+
# 1. Scan ground-truth accounts + random non-existent usernames to build a dataset
|
|
131
|
+
aliens_eye train collect --out dataset.csv --negatives 4
|
|
132
|
+
|
|
133
|
+
# 2. Fit and export the model
|
|
134
|
+
aliens_eye train fit --data dataset.csv --out model.json
|
|
135
|
+
|
|
136
|
+
# 3. Use it
|
|
137
|
+
aliens_eye username --model model.json
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Configuration
|
|
141
|
+
|
|
142
|
+
Aliens Eye merges a JSON config file with CLI flags (CLI wins). Search order without `--config`: `./config.json`, then the platform config dir (e.g. `~/.config/aliens_eye/config.json` on Linux, `%LOCALAPPDATA%\aliens_eye` on Windows).
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"concurrent": 50,
|
|
147
|
+
"timeout": 10.0,
|
|
148
|
+
"retries": 2,
|
|
149
|
+
"rate_limit_delay": 0.2,
|
|
150
|
+
"output_dir": "results",
|
|
151
|
+
"output_formats": ["json", "csv", "html", "md"],
|
|
152
|
+
"use_playwright": false,
|
|
153
|
+
"proxy": null,
|
|
154
|
+
"use_ml": true,
|
|
155
|
+
"exclude_nsfw": false,
|
|
156
|
+
"level": "basic"
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Outputs
|
|
161
|
+
|
|
162
|
+
Results are saved with timestamped filenames:
|
|
163
|
+
|
|
164
|
+
- `username_level_YYYYMMDD_HHMMSS.json` — full detail including per-site feature analysis
|
|
165
|
+
- `.csv` — flat rows for spreadsheets
|
|
166
|
+
- `.html` — styled standalone report
|
|
167
|
+
- `.md` — Markdown summary of Found/Maybe hits
|
|
168
|
+
|
|
169
|
+
## Architecture
|
|
170
|
+
|
|
171
|
+
The package lives under `src/aliens_eye/`: `core/` (scanner, detector, analyzer, http, exporter, fingerprints), `ml/` (inference, training, dataset collection), `utils/` (rich console layer), and `data/` (sites.json, trained model, ground-truth sets). For internals and flowcharts, see [WORKING.md](WORKING.md).
|
|
172
|
+
|
|
173
|
+
## Contributing
|
|
174
|
+
|
|
175
|
+
Issues and PRs welcome — adding sites to `src/aliens_eye/data/sites.json`, expanding the ground-truth set in `selfcheck.json`, or improving the model all directly improve detection. Run `pytest` and `ruff check src tests` before submitting.
|
|
176
|
+
|
|
177
|
+
## Disclaimer
|
|
178
|
+
|
|
179
|
+
This tool is for educational purposes and legitimate OSINT research only. You are responsible for complying with laws and site terms of service.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "aliens-eye"
|
|
7
|
+
version = "2.0.0"
|
|
8
|
+
description = "AI-powered OSINT username scanner across 800+ social media and web platforms"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "Aaron Thomas (arxhr007)" }]
|
|
13
|
+
keywords = ["osint", "username", "recon", "social-media", "security", "scanner"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Environment :: Console",
|
|
17
|
+
"Intended Audience :: Information Technology",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Topic :: Security",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"aiohttp>=3.8",
|
|
29
|
+
"selectolax>=0.3.21",
|
|
30
|
+
"rich>=13.7",
|
|
31
|
+
"aiohttp-socks>=0.8,<1.0",
|
|
32
|
+
"platformdirs>=4.0",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[project.optional-dependencies]
|
|
36
|
+
browser = ["playwright>=1.42"]
|
|
37
|
+
train = ["scikit-learn>=1.3", "numpy>=1.24"]
|
|
38
|
+
dev = [
|
|
39
|
+
"pytest>=8",
|
|
40
|
+
"pytest-asyncio>=0.23",
|
|
41
|
+
"ruff>=0.4",
|
|
42
|
+
"build",
|
|
43
|
+
"twine",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[project.scripts]
|
|
47
|
+
aliens_eye = "aliens_eye.cli:main"
|
|
48
|
+
|
|
49
|
+
[project.urls]
|
|
50
|
+
Homepage = "https://github.com/arxhr007/Aliens_eye"
|
|
51
|
+
Repository = "https://github.com/arxhr007/Aliens_eye"
|
|
52
|
+
Issues = "https://github.com/arxhr007/Aliens_eye/issues"
|
|
53
|
+
|
|
54
|
+
[tool.hatch.build.targets.wheel]
|
|
55
|
+
packages = ["src/aliens_eye"]
|
|
56
|
+
|
|
57
|
+
[tool.hatch.build.targets.sdist]
|
|
58
|
+
include = ["src/aliens_eye", "README.md", "LICENSE", "pyproject.toml"]
|
|
59
|
+
|
|
60
|
+
[tool.ruff]
|
|
61
|
+
line-length = 110
|
|
62
|
+
target-version = "py310"
|
|
63
|
+
|
|
64
|
+
[tool.ruff.lint]
|
|
65
|
+
select = ["E", "F", "W", "I", "UP", "B"]
|
|
66
|
+
ignore = ["E501"]
|
|
67
|
+
|
|
68
|
+
[tool.pytest.ini_options]
|
|
69
|
+
asyncio_mode = "auto"
|
|
70
|
+
testpaths = ["tests"]
|
|
71
|
+
pythonpath = ["src"]
|