darkoperator/dnsrecon
darkoperator/dnsrecon has 3,088 GitHub stars and 576 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 18:48 UTC. Last push 2026-11-02.
DNS Enumeration Script
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalDNSRecon
DNSRecon is a Python port of a Ruby script that I wrote to learn the language and about DNS in early 2007. This time I wanted to learn about Python and extend the functionality of the original tool and in the process re-learn how DNS works and how could it be used in the process of a security assessment and network troubleshooting.
This script provides the ability to perform:
- Check all NS Records for Zone Transfers.
- Enumerate General DNS Records for a given Domain (MX, SOA, NS, A, AAAA, SPF and TXT).
- Perform common SRV Record Enumeration.
- Top Level Domain (TLD) Expansion.
- Check for Wildcard Resolution.
- Brute Force subdomain and host A and AAAA records given a domain and a wordlist.
- Perform a PTR Record lookup for a given IP Range or CIDR.
- Check a DNS Server Cached records for A, AAAA and CNAME Records provided a list of host records in a text file to check..
Installation
Requirements
DNSRecon requires Python 3.12 or higher.
Using uv (Recommended)
Install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | shClone the repository:
git clone https://github.com/darkoperator/dnsrecon.git cd dnsreconInstall dependencies and create virtual environment:
uv syncRun DNSRecon:
uv run dnsrecon
Development
To install development dependencies:
uv sync --extra dev
To run tests:
uv run pytest
To run linting and formatting:
uv run ruff check
uv run ruff format
Shodan Netblock Expansion
DNSRecon can use Shodan to expand netblocks discovered during standard enumeration from SPF (-s) and/or WHOIS (-w) data.
CLI examples
Passive Shodan enrichment (uses SPF + WHOIS netblocks):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-key "$SHODAN_API_KEY"
Active validation of Shodan results (re-resolves hosts and confirms they still match the queried netblock):
uv run dnsrecon -d example.com -t std -s -w --shodan --shodan-active --shodan-key "$SHODAN_API_KEY"
You can also set the API key via environment variable instead of --shodan-key:
export SHODAN_API_KEY="your-shodan-api-key"
uv run dnsrecon -d example.com -t std -s -w --shodan
REST API examples
Start the REST API:
uv run restdnsrecon
Call /general_enum with Shodan expansion enabled:
curl -s \
-H "X-Shodan-Api-Key: $SHODAN_API_KEY" \
"http://127.0.0.1:5000/general_enum?domain=example.com&do_spf=true&do_whois=true&do_shodan=true"
Enable active validation in the API:
curl -s \
-H "X-Shodan-Api-Key: $SHODAN_API_KEY" \
"http://127.0.0.1:5000/general_enum?domain=example.com&do_spf=true&do_whois=true&do_shodan=true&shodan_active=true"
REST API thread_num values are limited to 1..100. API wordlist parameters may reference bundled files in dnsrecon/data or files under directories listed in DNSRECON_WORDLIST_DIRS using the platform path separator. Configure only dedicated wordlist directories; do not point DNSRECON_WORDLIST_DIRS at broad paths such as /, a home directory, or other locations containing sensitive files.
export DNSRECON_WORDLIST_DIRS="/opt/dnsrecon-wordlists:/srv/shared-wordlists"
Packaging Versions
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,973 starspublic-apis/public-apis
A collective list of free APIs
497,232 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
442,848 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,187 stars