#!/usr/bin/env python3
"""
OSINT Hash Hunter - Gravatar & Email Hash Lookup
Usage: python hash_hunter.py <email_or_hash>
"""

import hashlib
import requests
import json
import sys

def md5_hash(email):
    """Generate MD5 hash of email (lowercased, stripped)"""
    return hashlib.md5(email.lower().strip().encode()).hexdigest()

def check_gravatar(email_or_hash):
    """Check if Gravatar profile exists"""
    if '@' in email_or_hash:
        hash_val = md5_hash(email_or_hash)
        print(f"[*] Email: {email_or_hash}")
        print(f"[*] MD5 Hash: {hash_val}")
    else:
        hash_val = email_or_hash
        print(f"[*] Hash provided: {hash_val}")

    # Check profile
    profile_url = f"https://gravatar.com/{hash_val}.json"
    avatar_url = f"https://gravatar.com/avatar/{hash_val}?d=404"

    print(f"\n[+] Checking Gravatar...")
    print(f"    Profile URL: https://gravatar.com/{hash_val}")
    print(f"    Avatar URL: {avatar_url}")

    try:
        # Check avatar exists
        r = requests.head(avatar_url, timeout=10)
        if r.status_code == 200:
            print(f"    [!] AVATAR EXISTS")
        else:
            print(f"    [-] No avatar (404)")

        # Try to get profile JSON
        r = requests.get(profile_url, timeout=10)
        if r.status_code == 200:
            data = r.json()
            print(f"\n[!] PROFILE FOUND:")
            print(json.dumps(data, indent=2))
            return data
        else:
            print(f"    [-] No public profile")
    except Exception as e:
        print(f"    [!] Error: {e}")

    return None

def batch_check(emails):
    """Check multiple emails"""
    results = {}
    for email in emails:
        print(f"\n{'='*60}")
        result = check_gravatar(email)
        if result:
            results[email] = result
    return results

# Target emails to check (add more as needed)
TARGET_EMAILS = [
    "info@khamenei.ir",
    "admin@khamenei.ir",
    "webmaster@khamenei.ir",
    "contact@moqawama.org.lb",
    "info@moqawama.org.lb",
    "info@almanar.com.lb",
    "news@almanar.com.lb",
]

if __name__ == "__main__":
    print("="*60)
    print("       OSINT HASH HUNTER - Gravatar Lookup")
    print("="*60)

    if len(sys.argv) > 1:
        # Single lookup
        check_gravatar(sys.argv[1])
    else:
        # Batch check targets
        print("\n[*] Running batch check on target emails...\n")
        batch_check(TARGET_EMAILS)

        # Print hash table
        print("\n" + "="*60)
        print("       HASH REFERENCE TABLE")
        print("="*60)
        for email in TARGET_EMAILS:
            print(f"{email:40} -> {md5_hash(email)}")
