Skip to content

Commit be85576

Browse files
committed
docs: prepare Trackher 1.2.0 documentation
1 parent f89e7df commit be85576

2 files changed

Lines changed: 214 additions & 42 deletions

File tree

CONTRIBUTING.md

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,33 @@ If you add or modify a service check:
5555
- document the source of truth used for verification
5656
- prove that the check is side-effect-free
5757
- include tests that cover false positives and blocked or unknown states
58+
- if you add remediation links, keep them official, user-facing, and limited to `http` / `https` URLs only
59+
60+
## Updating Catalogs
61+
62+
Trackher keeps its platform catalogs in JSON:
63+
64+
- username platforms: `osint/platforms.json`
65+
- email platforms and breach providers: `osint/email_platforms.json`
66+
67+
When updating a platform entry, keep the current runtime shape in mind:
68+
69+
- username entries use `url_pattern`, `error_type`, `reliability`, and the
70+
detector-specific metadata fields already used by the runtime
71+
- email entries use `section`, `category`, `check`, `probe_url` or
72+
`profile_url_template`, and the metadata fields already consumed by the
73+
detector runtime
74+
- `verified` means the result is backed by clear, side-effect-free evidence
75+
- `unreliable` / `heuristic` means the detector is still passive but weaker
76+
- `manual` means no safe automatic check is available
77+
78+
If you change catalog logic, add tests that cover:
79+
80+
- `FOUND`, `NOT_FOUND`, `POSSIBLE`, `UNKNOWN`, `MANUAL`, and error handling
81+
- reliability normalization, especially that heuristic results never become
82+
verified `FOUND`
83+
- remediation metadata serialization when official links are added
84+
- reporting output if the change affects CLI, GUI, HTML, or JSON exports
5885

5986
## Adding a New Username Platform
6087

@@ -78,7 +105,13 @@ Username platform definitions live in `osint/platforms.json`.
78105
python -m unittest tests.test_platform_catalog tests.test_username_checker -v
79106
```
80107

81-
6. If your change affects reporting or catalog loading, also run:
108+
6. If your change affects email catalogs, reporting, or catalog loading, also run:
109+
110+
```bash
111+
python -m unittest tests.test_email_checker tests.test_platform_catalog tests.test_health -v
112+
```
113+
114+
7. If your change touches runtime modules or catalog loading, also run:
82115

83116
```bash
84117
python -m compileall -q osint utils tests

README.md

Lines changed: 180 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,27 @@
44

55
# Trackher
66

7-
Trackher is an open-source Python application for reviewing parts of your own
8-
digital footprint and cleaning selected local traces on your own devices.
9-
It ships with both a GUI and a CLI, and it is designed around cautious,
10-
evidence-based checks instead of aggressive or side-effectful probing.
11-
12-
> Trackher should only be used on accounts, email addresses, usernames, and
13-
> devices that belong to you, or for which you have explicit permission. See
7+
Trackher is an open-source Python Digital Footprint & Privacy Toolkit for
8+
reviewing parts of your own digital footprint and cleaning selected local
9+
traces on your own devices. It ships with both a CLI and a GUI, and it is
10+
designed around cautious, evidence-based checks instead of aggressive or
11+
side-effectful probing.
12+
13+
> Trackher should only be used on accounts, usernames, and devices that belong
14+
> to you, or for which you have explicit permission. See
1415
> [ETHICS.md](ETHICS.md) for the usage policy.
1516
1617
## Why Trackher
1718

18-
- Evidence-based email and username OSINT
19+
- CLI + GUI
20+
- Username OSINT across public profile patterns
21+
- Email account intelligence with verified, possible, unknown, and manual separation
22+
- Breach exposure checks through Have I Been Pwned
23+
- Search engine dorks for manual investigation
1924
- Local cleanup tools for shell history, browser traces, and system caches
2025
- Best-effort secure deletion for files and directories
2126
- HTML and JSON reporting
27+
- Risk scoring, scan history, remediation actions, identity correlation, and platform health
2228
- Dry-run support before any destructive action
2329
- Windows, macOS, and Linux support
2430
- Scheduled cleanup support for Windows Task Scheduler, macOS `launchd`, and Linux `cron`
@@ -34,18 +40,80 @@ Trackher is intentionally conservative.
3440
- Critical system paths, user root paths, and protected exclusions are blocked
3541
from bulk deletion.
3642
- HTML reports escape dynamic values and reject unsafe links.
43+
- Local scan history and platform health state stay on the local machine.
3744

3845
## Features
3946

4047
### OSINT
4148

4249
- Username scan across 197 platforms
43-
- Email catalog with 110 services
44-
- Up to 2 side-effect-free automatic email checks (`Gravatar` avatar existence
45-
via its documented `d=404` behavior, and `Have I Been Pwned` breach lookup
46-
via the official API v3 when `HIBP_API_KEY` is set)
50+
- Email OSINT with a catalog of 110 services
51+
- Only a small side-effect-free subset is automatically checkable today
52+
- Automatic email checks currently include Gravatar, GitLab, and GitHub
4753
- Search engine dork generation for manual investigation
48-
- Optional Have I Been Pwned API v3 support through `HIBP_API_KEY`
54+
55+
Email results are separated as:
56+
57+
- `FOUND`: verified passive evidence
58+
- `NOT_FOUND`: reliably checked and absent
59+
- `POSSIBLE`: heuristic evidence only
60+
- `UNKNOWN`: inconclusive or error
61+
- `MANUAL`: no safe automatic check is available
62+
63+
`Have I Been Pwned` is kept separate under `Breaches` and uses `HIBP_API_KEY`
64+
when configured.
65+
66+
### Scan Profiles
67+
68+
Use `--profile` to choose how broad a scan should be.
69+
70+
- `quick`: verified and high-confidence checks only
71+
- `standard`: current default behavior
72+
- `deep`: currently matches `standard`; reserved for broader coverage
73+
- `username-only`: run username OSINT only
74+
- `email-only`: run email OSINT only
75+
76+
### Scan History + Diff
77+
78+
Trackher stores normalized local snapshots and compares each scan against the
79+
previous matching scan.
80+
81+
- Use `--no-history` to disable storage and diffing for a run
82+
- Use `--clear-history` to remove local history data
83+
- If two scans use different profiles, Trackher warns that diff coverage differs
84+
85+
### Identity Correlation
86+
87+
Trackher can group public findings that may belong to the same digital identity.
88+
This is probabilistic, not certain, and it is based only on public signals such
89+
as the same username, display name, avatar hash, linked website/domain, or
90+
matching public profile metadata.
91+
92+
### Risk Score
93+
94+
Trackher includes an explainable Digital Footprint Risk Score from `0` to `100`.
95+
96+
- Levels: `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`
97+
- The score is based only on scan evidence
98+
- Verified findings contribute more than heuristic or unreliable findings
99+
- `MANUAL`, `UNKNOWN`, and `ERROR` do not increase the score
100+
- Breaches contribute to risk
101+
- Category caps prevent one finding type from dominating
102+
- The score is not a scientific measurement or a security guarantee
103+
104+
### Platform / Detector Health
105+
106+
Trackher can check platform and detector health separately from normal scans.
107+
108+
- `--health-check` runs offline schema and catalog validation
109+
- `--health-check-live` adds optional safe live probes where supported
110+
- Health data is cached locally and does not affect normal scan behavior
111+
112+
### Remediation / Privacy Actions
113+
114+
When Trackher finds an exposure, it can show official user-facing links for
115+
privacy settings, account security, data export, deletion help, or profile
116+
pages. It never automates those actions.
49117

50118
### Cleanup
51119

@@ -59,6 +127,8 @@ Trackher is intentionally conservative.
59127
- Best-effort overwrite and delete for files
60128
- Recursive directory shredding
61129
- Symlink and critical-path protections
130+
- Secure deletion is still best-effort on SSD, copy-on-write, journaled, or
131+
network-backed file systems
62132

63133
## Requirements
64134

@@ -78,7 +148,9 @@ Main runtime dependencies: `rich`, `httpx`, `customtkinter`, `Pillow`
78148

79149
## Installation
80150

81-
### Windows PowerShell
151+
### Developer source run
152+
153+
Windows PowerShell:
82154

83155
```powershell
84156
py -3 -m venv .venv
@@ -88,7 +160,7 @@ python -m pip install -r requirements.txt
88160
python main.py
89161
```
90162

91-
### macOS / Linux
163+
macOS / Linux:
92164

93165
```bash
94166
python3 -m venv .venv
@@ -101,37 +173,93 @@ python main.py
101173
Running `python main.py` with no arguments launches the GUI if GUI
102174
dependencies are available. Passing arguments runs the CLI mode.
103175

176+
### Installed CLI
177+
178+
```bash
179+
python -m pip install .
180+
trackher --version
181+
trackher --username example_user
182+
```
183+
184+
### Windows packaged build
185+
186+
The packaging workflow produces a standalone Windows bundle that launches the
187+
GUI on double-click and also supports CLI arguments:
188+
189+
```powershell
190+
.\Trackher.exe
191+
.\Trackher.exe --username example_user
192+
```
193+
104194
## Quick Start
105195

106-
### Email and username checks
196+
### Email checks
107197

108198
```bash
109-
python main.py --email user@example.com
199+
python main.py --email analyst@example.com
110200
```
111201

112202
```text
113-
[INFO] Scanning: user@example.com
114-
[+] Found on 1/110 services: Gravatar
115-
[?] 1 result could not be verified: Have I Been Pwned
203+
Email Account Discovery
204+
205+
Verified Accounts
206+
✓ Gravatar
207+
208+
Possible Accounts
209+
~ GitHub - Public profile email matched exactly (exampleuser)
210+
211+
Breaches
212+
! Have I Been Pwned: NOT CONFIGURED
213+
214+
Manual Investigation
215+
Most remaining services require manual review.
216+
Use --show-manual to display them.
116217
```
117218

118219
```bash
119-
python main.py --username example_user
220+
python main.py --email analyst@example.com --show-manual --search-dork
221+
```
222+
223+
```text
224+
Email Account Discovery
225+
226+
Verified Accounts
227+
✓ Gravatar
228+
229+
Possible Accounts
230+
~ GitHub - Public profile email matched exactly (exampleuser)
231+
232+
Manual Investigation
233+
> Figma
234+
> Notion
235+
> Trello
236+
...
237+
238+
Breaches
239+
! Have I Been Pwned: NOT CONFIGURED
240+
```
241+
242+
### Username checks
243+
244+
```bash
245+
python main.py --username example_user --search-dork
120246
```
121247

122248
```text
123-
[INFO] Scanning: example_user
249+
[INFO] Taraniyor: example_user
124250
[+] Found on 3/197 platforms: Reddit, GitLab, Medium
125251
[?] 4 platform checks could not be verified
252+
[INFO] Google, Bing, DuckDuckGo, and Yandex dorks generated
126253
```
127254

128255
```bash
129-
python main.py --email user@example.com --search-dork
256+
python main.py --username example_user
130257
```
131258

132259
```text
133-
[INFO] Generated search links for: user@example.com
134-
[+] Google, Bing, DuckDuckGo, and Yandex dorks ready
260+
[INFO] Taraniyor: example_user
261+
[+] Found on 2/197 platforms: Reddit, Medium
262+
[?] 3 platform checks could not be verified
135263
```
136264

137265
### Cleanup preview and execution
@@ -167,39 +295,47 @@ python main.py --schedule weekly --yes
167295
Trackher can generate reports in HTML or JSON:
168296

169297
```bash
170-
python main.py --email user@example.com --report html
298+
python main.py --email analyst@example.com --report html
299+
python main.py --email analyst@example.com --report json
300+
python main.py --username example_user --report html
171301
python main.py --username example_user --report json
172302
```
173303

174304
Generated report filenames follow this pattern:
175305

176-
- `footprint_report_html.html`
177-
- `footprint_report_json.json`
306+
- `trackher_report_html.html`
307+
- `trackher_report_json.json`
178308

179309
These files are already ignored by `.gitignore`.
180310

181-
## HIBP API Support
311+
Reported vulnerabilities are handled through the disclosure process described in
312+
[SECURITY.md](SECURITY.md).
313+
314+
## HIBP API Key
182315

183-
Have I Been Pwned requests use the official API v3 and require an API key.
316+
Have I Been Pwned support is optional. Without `HIBP_API_KEY`, Trackher keeps
317+
running and reports `NOT CONFIGURED` for that provider.
184318

185-
### PowerShell
319+
PowerShell:
186320

187321
```powershell
188-
$env:HIBP_API_KEY="your-api-key"
322+
$env:HIBP_API_KEY = "<key>"
189323
```
190324

191-
### Bash
325+
macOS / Linux:
192326

193327
```bash
194-
export HIBP_API_KEY="your-api-key"
328+
export HIBP_API_KEY="<key>"
195329
```
196330

197-
If `HIBP_API_KEY` is not set, Trackher will not send the HIBP request.
198-
Do not commit API keys, screenshots containing keys, or generated reports with
199-
sensitive data.
331+
## Common Flags
200332

201-
Reported vulnerabilities are handled through the disclosure process described in
202-
[SECURITY.md](SECURITY.md).
333+
- `--show-manual`: reveal manual email services in the console output
334+
- `--no-history`: skip local scan history storage and diffing
335+
- `--clear-history`: remove local scan history
336+
- `--health-check`: run offline catalog and schema health checks
337+
- `--health-check-live`: add safe live health probes where supported
338+
- `--profile quick|standard|deep|username-only|email-only`: choose scan breadth
203339

204340
## Platform Support
205341

@@ -226,7 +362,8 @@ The project includes automated tests for:
226362
- Safe deletion and exclusion handling
227363
- HTML report escaping
228364
- Non-interactive destructive action protection
229-
- Username and email detection rules
365+
- Username detection rules
366+
- Email status grouping and HIBP configuration handling
230367
- GUI queue and terminal memory behavior
231368

232369
## Repository Guide
@@ -243,7 +380,9 @@ The project includes automated tests for:
243380
copy-on-write, journaled, compressed, or network-backed file systems.
244381
- OSINT results can change as services update their behavior, anti-bot rules,
245382
or public endpoints.
246-
- A positive result should not be treated as sole proof of identity or account ownership.
383+
- Identity correlation is probabilistic and should not be treated as proof of
384+
identity or account ownership.
385+
- Risk scores are explainable heuristics, not scientific or security guarantees.
247386

248387
## License
249388

0 commit comments

Comments
 (0)