Skip to content

SubHunter - A blazing-fast subdomain finder that hunts down hidden subdomains like a cyber-ninja! πŸ•΅οΈβ€β™‚οΈβš‘

License

Notifications You must be signed in to change notification settings

sh13y/SubHunter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ•΅οΈ SubHunter: Your Friendly Neighborhood Subdomain Stalker πŸ•ΈοΈ

SubHunter Screenshot

πŸš€ What is SubHunter?

Imagine if Sherlock Holmes went digital and decided to hunt down subdomains instead of criminals. That's SubHunter! πŸ•΅οΈπŸ”¦

A tool so nosy, it makes your grandma's neighborhood watch look like amateurs. We find subdomains faster than you can say "DNS resolution"!

πŸ” How the Digital Magic Happens

1. The Great Subdomain Gathering

const sources = [
    `https://api.hackertarget.com/hostsearch/?q=${domain}`,
    `https://crt.sh/?q=%25.${domain}&output=json`
];

Think of this like a digital party invitation list. We're not just knocking on the main door, we're finding ALL the secret entrances! πŸšͺπŸ•²οΈ

2. DNS Resolution: The IP Whisperer

const dnsResponse = await fetch(`https://dns.google.com/resolve?name=${subdomain}`);
const dnsData = await dnsResponse.json();

// Collecting IP addresses
if (dnsData.Answer) {
    dnsData.Answer.forEach(answer => {
        if (answer.type === 1) { // A record
            subdomainDetails.get(subdomain).ips.add(answer.data);
        }
    });
}

We're basically the GPS for internet addresses. "Hey Google, where does THIS subdomain live?" πŸ›οΈπŸ“

3. HTTP Status Check: The Digital Bouncer

try {
    const httpResponse = await fetchWithTimeout(`https://${subdomain}`, {
        method: 'HEAD',
        redirect: 'manual'
    });
    
    subdomainDetails.get(subdomain).httpStatus = httpResponse.status;
} catch {
    // Fallback to HTTP if HTTPS fails
    try {
        const httpResponse = await fetchWithTimeout(`http://${subdomain}`, {
            method: 'HEAD',
            redirect: 'manual'
        });
        
        subdomainDetails.get(subdomain).httpStatus = httpResponse.status;
    } catch {
        subdomainDetails.get(subdomain).httpStatus = 'N/A';
    }
}

We check if subdomains are alive or just digital zombies. "You shall not pass!" πŸš§πŸ§™β€β™‚οΈ

🌟 Features That'll Make Hackers Giggle

  • πŸ“‘ Subdomain hunting so thorough, it's almost creepy
  • 🌐 IP resolution faster than your internet connection
  • 🚦 HTTP status checking with attitude
  • 🎨 UI so cool, it makes The Matrix look boring

🚨 Disclaimer: With Great Power Comes Great Responsibility

SubHunter is for:

  • Ethical hackers
  • Cybersecurity nerds
  • People who think "404" is a personality trait
  • NOT for causing digital mischief! πŸ§•πŸ’•

Pro Tip: Just because you CAN scan a domain doesn't mean you SHOULD. Ask for permission, or risk becoming everyone's least favorite party guest! πŸŽ‰πŸš«

🀝 Wanna Contribute?

Got ideas to make SubHunter even more awesome?

  • Fork the repo
  • Create a branch
  • Commit your digital wizardry
  • Open a pull request faster than you can say "recursive DNS"

πŸ’‘ Learn While You Hunt

This project is basically a masterclass in:

  • Web API gymnastics
  • Async JavaScript ninja moves
  • DNS resolution dark arts
  • How to look cool while coding 😎

πŸ† Crafted With Love (and Caffeine)

Made in Ceylon by @sh13y

  • Powered by β˜• and an unhealthy amount of curiosity
  • Fueled by the spirit of digital adventure

🐜 License

WTFPL (Because sharing is caring, and lawyers are expensive) πŸ’Έ

🌈 Parting Wisdom

Remember: In the world of SubHunter, every subdomain has a story. We're just here to read it! πŸ•΅οΈπŸ“š

Star this repo if it saved you hours of manual searching! ⭐

About

SubHunter - A blazing-fast subdomain finder that hunts down hidden subdomains like a cyber-ninja! πŸ•΅οΈβ€β™‚οΈβš‘

Topics

Resources

License

Stars

Watchers

Forks