A lightweight OSINT (Open Source Intelligence) toolkit for domain reconnaissance, email intelligence, social-media username discovery, and data-breach monitoring.
Disclaimer: These tools are provided for authorized security assessments and educational purposes only. Misuse against targets without explicit permission may violate applicable laws.
| Tool | File | Description |
|---|---|---|
| Domain Recon | domain_recon.py |
Subdomain brute-force + crt.sh certificate transparency lookup |
| Email OSINT | email_osint.py |
SMTP verification, HIBP breach lookup, social-discovery stubs |
| Social Search | social_search.py |
Username search across dozens of online platforms |
| Data Breach | data_breach.py |
k-anonymity password check & paste monitoring (HIBP) |
# Clone the repository
git clone https://github.com/ridhinva/OSINT-Toolkit.git
cd OSINT-Toolkit
# (Optional) Create a virtual environment
python3 -m venv venv
source venv/bin/activate
# No external dependencies required — all tools use the Python standard library
# and urllib / socket (built-in).Brute-forces a list of common subdomains using DNS resolution and queries crt.sh for certificate transparency logs.
# Basic subdomain brute-force
python domain_recon.py --subs example.com
# Query crt.sh for certificate logs
python domain_recon.py --crtsh example.com
# Combine both
python domain_recon.py --subs example.com --crtsh example.com
# JSON output
python domain_recon.py --subs example.com --crtsh example.com --jsonHow It Works:
- Subdomain brute-force: For each word in the built-in wordlist (www, mail, admin, …), the tool constructs
<word>.<domain>and callssocket.getaddrinfo(<fqdn>, 80). If the call succeeds, the subdomain is considered resolved (it exists). AThreadPoolExecutorwith 30 workers parallelizes the queries for speed. - crt.sh lookup: Sends an HTTP GET to
https://crt.sh/?q=%25.<domain>&output=json. The JSON response is parsed, deduplicated by certificate common name / name value, and printed. This reveals subdomains and hosts with public TLS certificates.
Framework for email address intelligence gathering. Currently provides a CLI skeleton and detailed docstring; the core verification logic can be extended.
# Show help and full usage documentation
python email_osint.py --help
# With arguments (placeholder — will print the docstring + received args)
python email_osint.py --verify user@example.com
python email_osint.py --hibp user@example.com --api-key YOUR_KEY
python email_osint.py --social user@example.comHow It Works:
- SMTP Verification: Connects to the domain's MX server and issues SMTP
VRFYorRCPT TOcommands, observing the response code. A250response usually indicates the mailbox exists. - HIBP Breach Lookup: Sends the email address (SHA-1 hashed) to the Have I Been Pwned API v3 to fetch a list of known breaches the address appears in.
- Social Discovery: Queries public-facing APIs and profile-page patterns (Gravatar, GitHub events, etc.) to surface accounts linked to the email.
Looks up a username across popular social-media and online-service platforms.
# Search for a username
python social_search.py --username johndoe
# JSON output
python social_search.py --username johndoe --output json
# List supported platforms
python social_search.py --list-platformsHow It Works:
The tool maintains an internal mapping of platform → profile-URL pattern (e.g. https://github.com/<username>). For each platform it issues an HTTP HEAD/GET request. A 200 OK response (that is not a soft-404) signals the account exists. Results are deduplicated and presented in a table or JSON.
Privately checks passwords against known breaches (k-anonymity) and monitors pastes for email addresses.
# Check a password (fully private — no plaintext or full hash leaves your machine)
python data_breach.py --check-password "MyP@ssw0rd!"
# Monitor pastes for an email (requires HIBP API key)
python data_breach.py --monitor-pastes user@example.com --api-key YOUR_KEY
# Combined
python data_breach.py --check-password P@ss123 --monitor-pastes user@ex.com --api-key KEYHow It Works:
- k-Anonymity Password Check: The password is SHA-1 hashed locally. Only the first 5 hex characters of the hash are sent to the HIBP Pwned Passwords API (
https://api.pwnedpasswords.com/range/<prefix>). The API returns a list of hash suffixes and their occurrence counts. The tool compares the local full hash against the returned suffixes — the full hash never leaves your machine. - Paste Monitoring: Queries the HIBP paste API (
https://haveibeenpwned.com/api/v3/pasteaccount/<email>) with the provided API key. Returns metadata (source, title, date) for any pastes that include the target email.
OSINT-Toolkit/
├── domain_recon.py # Domain recon (subdomain brute + crt.sh)
├── email_osint.py # Email OSINT skeleton
├── social_search.py # Username search skeleton
├── data_breach.py # Data breach monitoring skeleton
└── README.md # This file
MIT