#!/usr/bin/env python3
"""
OSINT Username Hunter - Social Media Account Finder
Uses public APIs to find accounts across platforms
"""

import requests
import json
import sys

# Known Iranian/Hezbollah social media handles
TARGET_USERNAMES = [
    "khamenei_ir",
    "Khamenei_m",
    "almoqawama1",
    "English_AlAhed",
    "AlAhedEnglish",
    "almanaborabar",
]

def check_twitter(username):
    """Check if Twitter/X account exists (basic check)"""
    url = f"https://twitter.com/{username}"
    try:
        r = requests.head(url, timeout=10, allow_redirects=True)
        exists = r.status_code == 200
        return {'platform': 'Twitter/X', 'username': username, 'url': url, 'exists': exists}
    except:
        return {'platform': 'Twitter/X', 'username': username, 'url': url, 'exists': 'unknown'}

def check_telegram(username):
    """Check Telegram channel/user"""
    url = f"https://t.me/{username}"
    try:
        r = requests.get(url, timeout=10)
        exists = 'tgme_page_title' in r.text or r.status_code == 200
        return {'platform': 'Telegram', 'username': username, 'url': url, 'exists': exists}
    except:
        return {'platform': 'Telegram', 'username': username, 'url': url, 'exists': 'unknown'}

def check_youtube(username):
    """Check YouTube channel"""
    url = f"https://www.youtube.com/@{username}"
    try:
        r = requests.get(url, timeout=10)
        exists = r.status_code == 200 and 'channel' in r.text.lower()
        return {'platform': 'YouTube', 'username': username, 'url': url, 'exists': exists}
    except:
        return {'platform': 'YouTube', 'username': username, 'url': url, 'exists': 'unknown'}

def check_github(username):
    """Check GitHub user"""
    url = f"https://api.github.com/users/{username}"
    try:
        r = requests.get(url, timeout=10)
        if r.status_code == 200:
            data = r.json()
            return {
                'platform': 'GitHub',
                'username': username,
                'url': f"https://github.com/{username}",
                'exists': True,
                'data': {
                    'name': data.get('name'),
                    'bio': data.get('bio'),
                    'location': data.get('location'),
                    'repos': data.get('public_repos'),
                    'created': data.get('created_at'),
                }
            }
        return {'platform': 'GitHub', 'username': username, 'exists': False}
    except:
        return {'platform': 'GitHub', 'username': username, 'exists': 'unknown'}

def hunt_username(username):
    """Check username across all platforms"""
    print(f"\n{'='*60}")
    print(f"    Hunting: {username}")
    print("="*60)

    results = []

    # Check each platform
    platforms = [
        ('Twitter/X', check_twitter),
        ('Telegram', check_telegram),
        ('YouTube', check_youtube),
        ('GitHub', check_github),
    ]

    for name, func in platforms:
        result = func(username)
        results.append(result)

        status = "[+] FOUND" if result.get('exists') == True else "[-] Not found" if result.get('exists') == False else "[?] Unknown"
        print(f"    {name:15} : {status}")
        if result.get('url'):
            print(f"                    {result['url']}")

    return results

def batch_hunt():
    """Hunt all target usernames"""
    all_results = {}
    for username in TARGET_USERNAMES:
        all_results[username] = hunt_username(username)
    return all_results

if __name__ == "__main__":
    print("="*60)
    print("       OSINT USERNAME HUNTER")
    print("="*60)

    if len(sys.argv) > 1:
        hunt_username(sys.argv[1])
    else:
        print("\n[*] Hunting known target usernames...\n")
        batch_hunt()

        print("\n" + "="*60)
        print("    TARGET USERNAME REFERENCE")
        print("="*60)
        for u in TARGET_USERNAMES:
            print(f"    {u}")
