Holehe: Complete Guide to Email Account Enumeration and OSINT Using Kali Linux

Holehe: Complete Guide to Email Account Enumeration and OSINT Using Kali Linux

holehe is a Python-based OSINT tool that checks whether a given email address is registered on numerous popular websites and services — including social media platforms, e-commerce sites, and productivity tools. It works by abusing each service’s “forgot password” or “account registration” endpoints, which frequently leak whether an email is already associated with an account (via subtly different response messages, status codes, or timing) without ever needing valid credentials. Holehe is a fast, lightweight complement to username-based tools like Sherlock, focusing specifically on email-to-account correlation.

Installation

# Kali/Debian (pre-installed, or reinstall)
sudo apt update && sudo apt install holehe -y

# Via pip (any platform with Python 3)
pip3 install holehe --break-system-packages

# From source
git clone https://github.com/megadose/holehe.git
cd holehe
python3 setup.py install

Verify installation:

holehe --help

Syntax

holehe [OPTIONS] EMAIL

Command-Line Options

FlagDescription
EMAILThe target email address to check (positional argument)
-C, --csvExport results in CSV format
-j, --jsonExport results in JSON format
-o, --output FILEWrite output to a specified file
--only-usedShow only sites where the email is registered (hide “not used”/”rate limited” entries)
-nc, --no-colorDisable colored terminal output
-t, --timeout SECSet timeout in seconds for each site’s request
-N, --no-clearDo not clear the terminal before displaying results
-M, --modulesShow a list of all supported modules/websites Holehe can check against

Basic Usage

holehe target@gmail.com

Expected output:

*********************************
    target@gmail.com
*********************************

[+] Twitter
[+] Instagram
[+] Spotify
[-] Pinterest
[x] Adobe (rate limited)

email used : 3
email not used : 1
rate limit : 1

Practical Examples

Example 1 — Basic email check

holehe johnsmith@gmail.com
[+] Twitter
[+] GitHub
[-] Pinterest
email used : 2
email not used : 1

Example 2 — Showing only sites where the email is used

holehe johnsmith@gmail.com --only-used
[+] Twitter
[+] GitHub

Example 3 — Exporting results to CSV

holehe johnsmith@gmail.com --csv
cat johnsmith_gmail_com.csv
email,domain,exists,rateLimit,emailrecovery,phoneNumber,others
johnsmith@gmail.com,twitter.com,True,False,,,
johnsmith@gmail.com,pinterest.com,False,False,,,

Example 4 — Exporting results to JSON

holehe johnsmith@gmail.com --json > results.json
cat results.json
[
  {"name": "twitter", "domain": "twitter.com", "exists": true},
  {"name": "pinterest", "domain": "pinterest.com", "exists": false}
]

Example 5 — Listing all supported modules

holehe --modules
Modules available: 120
adobe.py
amazon.py
github.com
instagram.py
spotify.py
twitter.py
...

Example 6 — Setting a custom timeout for slow networks

holehe johnsmith@gmail.com -t 15
[+] Twitter
[+] Spotify
email used : 2

Example 7 — Saving output to a plain text file

holehe johnsmith@gmail.com -o johnsmith_results.txt
cat johnsmith_results.txt
[+] Twitter
[+] GitHub
[-] Pinterest

Example 8 — Checking multiple emails in a simple loop

for email in john@gmail.com jane@gmail.com; do
    echo "=== $email ==="
    holehe "$email" --only-used
done
=== john@gmail.com ===
[+] Twitter
[+] GitHub

=== jane@gmail.com ===
[+] Instagram
[+] Pinterest

Common Use Cases

  • Rapidly determining which online services a target email address has registered accounts on, without needing any credentials.
  • Building a profile of a target’s digital footprint as part of an authorized social engineering or OSINT investigation, complementing username-based tools like Sherlock.
  • Verifying whether a corporate email address has been used to sign up for unauthorized third-party/shadow-IT services, as part of a security awareness or Shadow IT assessment.
  • Supporting incident response/fraud investigations by quickly checking whether a suspicious email address associated with an incident has accounts on major platforms.
  • Cross-referencing with breach databases (e.g., Have I Been Pwned) to build a complete picture of an email address’s overall exposure.

Automation with Bash

Batch-check a list of email addresses and consolidate “used” results:

#!/bin/bash
# holehe_batch.sh
mkdir -p holehe_results
while IFS= read -r email; do
    echo "[*] Checking $email"
    safe_name=$(echo "$email" | tr '@.' '_')
    holehe "$email" --only-used -o "holehe_results/${safe_name}.txt"
done < emails.txt

echo "[+] All results saved in holehe_results/"

Consolidate all “used” platforms across a batch into a single summary report:

#!/bin/bash
for file in holehe_results/*.txt; do
    email=$(basename "$file" .txt)
    echo "=== $email ==="
    cat "$file"
    echo
done > holehe_summary_report.txt
echo "[+] Summary report saved to holehe_summary_report.txt"

Tips and Best Practices

  • Use --only-used in scripts and reports to cut down noise — most emails will show “not used” for the majority of the 120+ supported modules, and only the positive hits are typically actionable.
  • Combine Holehe’s results with Sherlock (username-based) and GHunt (Google-account-specific) for a comprehensive email/username OSINT profile rather than relying on any single tool.
  • Be mindful of rate limiting — some modules (e.g., Adobe, Amazon) are known to rate-limit or block automated checks after a handful of requests; spread out large batch jobs over time.
  • Regularly update Holehe (pip3 install --upgrade holehe) since websites change their registration/password-reset flows, which can silently break individual modules until patched.
  • Use JSON/CSV output for integration into larger OSINT reporting pipelines or SIEM/case-management systems.

Troubleshooting

ProblemCauseFix
Many modules show [x] rate limitedToo many requests sent to a service in a short window, or shared IP already flaggedWait before retrying; consider spacing out checks or using a different network/proxy
Module reports incorrect/stale resultTarget website changed its registration or password-reset flow, breaking Holehe’s detection logic for that moduleUpdate Holehe to the latest version; report the broken module upstream if still failing
No output for any moduleNetwork connectivity issue or firewall blocking outbound HTTPSVerify general internet connectivity; test with curl to one of the target service domains
Extremely slow full scanDefault timeout too long across 120+ modules, some of which are unresponsiveReduce -t timeout value to skip slow/unresponsive modules faster
pip install fails with dependency conflictsConflicting Python package versions in the system environmentUse a dedicated virtual environment (python3 -m venv venv && source venv/bin/activate) before installing

References

  • Official GitHub repository: https://github.com/megadose/holehe
  • Kali Linux tool page: https://www.kali.org/tools/holehe/
  • PyPI package page: https://pypi.org/project/holehe/
Total
0
Shares

Leave a Reply

Previous Post
GHunt: Complete Guide to Google Account OSINT and Information Gathering Using Kali Linux

GHunt: Complete Guide to Google Account OSINT and Information Gathering Using Kali Linux

Next Post
Metasploit Framework: Complete Guide to Penetration Testing and Exploitation Using Kali Linux

Metasploit Framework: Complete Guide to Penetration Testing and Exploitation Using Kali Linux

Related Posts