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.
-
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.
- Uses
-
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.
- Handles
- Python 3.8 or later
- Dependencies:
python-whois
dnspython
tqdm
pyyaml
-
Clone the Repository:
git clone https://github.com/yourusername/domain-enumerator.git cd domain-enumerator
-
Install Dependencies:
pip install -r requirements.txt
The enumerate_tlds.py
script generates a list of domains for a given base name and checks their registration status.
python enumerate_tlds.py example --threads 20
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).
- Results are saved to
output.yaml
by default. - Found domains are logged in real time to the console:
FOUND REGISTERED: example.com (method: whois)
The report.py
script parses the YAML file and generates a console-friendly report of all registered domains.
python report.py output.yaml
- 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.
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
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`)
-
Run Domain Enumeration:
python enumerate_tlds.py example
Output is saved to
output.yaml
. -
Generate and View Report:
python report.py output.yaml
-
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
Contributions are welcome! Feel free to submit issues or pull requests to enhance the project.
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Commit your changes and submit a pull request.
This project is licensed under the MIT License. See the LICENSE
file for details.
- IANA TLD List
- Python libraries:
whois
,dnspython
,tqdm
,pyyaml