Skip to content
/ tldenum Public

A Python-based tool to enumerate and validate domain registrations across TLDs using whois and DNS TXT records, with detailed reporting and multithreading for fast and robust analysis.

Notifications You must be signed in to change notification settings

DACC4/tldenum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Domain Enumerator and Reporter

A Python-based project to enumerate and validate domain registrations across various TLDs (Top-Level Domains). The project uses whois and DNS TXT record lookups to determine if a domain is registered and provides detailed reports on the results.


Features

  • Enumerates Domains Across TLDs:

    • Automatically fetches the list of all TLDs from IANA's TLD database.
    • Generates domain combinations for a given base name and checks their registration status.
  • Multi-Source Validation:

    • Uses whois to check domain registration and retrieve detailed information (registrar, creation/expiration dates, etc.).
    • Fallback to DNS TXT record lookups to detect active domains.
  • Multithreaded for Speed:

    • Leverages multithreading to process multiple domains concurrently, improving performance.
  • Detailed Reports:

    • Outputs results in YAML format, including detection method and relevant details for each registered domain.
    • Provides a formatted console report for quick insights.
  • Robust Error Handling:

    • Handles None or missing data gracefully.
    • Filters out incomplete or invalid entries for a cleaner output.

Requirements

  • Python 3.8 or later
  • Dependencies:
    • python-whois
    • dnspython
    • tqdm
    • pyyaml

Installation

  1. Clone the Repository:

    git clone https://github.com/yourusername/domain-enumerator.git
    cd domain-enumerator
  2. Install Dependencies:

    pip install -r requirements.txt

Usage

1. Domain Enumeration

The enumerate_tlds.py script generates a list of domains for a given base name and checks their registration status.

Example Command:

python enumerate_tlds.py example --threads 20

Options:

  • company_name (required): The base name to use for domain generation (e.g., example).
  • --threads (optional): Number of threads to use for multithreaded processing (default: 10).

Output:

  • Results are saved to output.yaml by default.
  • Found domains are logged in real time to the console:
    FOUND REGISTERED: example.com (method: whois)
    

2. Report Generation

The report.py script parses the YAML file and generates a console-friendly report of all registered domains.

Example Command:

python report.py output.yaml

Features:

  • Filters out incomplete or invalid entries (e.g., domains with no meaningful whois or DNS data).
  • Displays a detailed table of registered domains, including the detection method and relevant details.

Sample Output:

Domain                          Method     Registrar                      Registrant                     Creation Date       Expiration Date      TXT Records
============================================================================================================================================================
example.com                     whois      Example Registrar              John Doe                      2000-01-01 00:00:00 2025-01-01 00:00:00 
example.net                     txt_dns    N/A                            N/A                           N/A                 N/A                 v=spf1 include:_spf.google.com ~all

File Structure

domain-enumerator/
├── enumerate_tlds.py  # Main script for domain enumeration
├── report.py          # Script for generating reports
├── requirements.txt   # Dependencies
├── README.md          # Project documentation
└── output.yaml        # Sample output file (generated after running `enumerate_tlds.py`)

Example Workflow

  1. Run Domain Enumeration:

    python enumerate_tlds.py example

    Output is saved to output.yaml.

  2. Generate and View Report:

    python report.py output.yaml
  3. Sample YAML File:

    example.com:
      registered: true
      details:
        method: whois
        registrar: Example Registrar
        registrant: John Doe
        creation_date: '2000-01-01 00:00:00'
        expiration_date: '2025-01-01 00:00:00'
    example.net:
      registered: true
      details:
        method: txt_dns
        txt_records:
        - "v=spf1 include:_spf.google.com ~all"
    example.xyz:
      registered: false

Contributing

Contributions are welcome! Feel free to submit issues or pull requests to enhance the project.

  1. Fork the repository.
  2. Create a new branch for your feature or bugfix.
  3. Commit your changes and submit a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Acknowledgments

About

A Python-based tool to enumerate and validate domain registrations across TLDs using whois and DNS TXT records, with detailed reporting and multithreading for fast and robust analysis.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages