loading
loading
Recon
A fast domain resolver and subdomain bruteforcing tool that filters out wildcards and poisoned entries.
overview
puredns wraps massdns to resolve or brute-force enormous lists of subdomains at speed, then does the part that makes the results trustworthy: it strips wildcard responses and DNS-poisoned entries. Wildcard DNS makes every random name resolve, which floods a naive brute-force with junk, so puredns detects the wildcards and confirms real hits against trusted resolvers. What survives is signal, not noise.
Two modes cover the work. Bruteforce mode takes a domain and a wordlist and tests every generated name; resolve mode takes an existing list of names and confirms which ones answer. A pool of public resolvers carries the throughput under a --rate-limit you set, while a smaller --resolvers-trusted set validates the survivors so false positives and load-balanced records never leak through. Tune --wildcard-tests and --threads when a target's DNS fights back.
In a Trickest workflow, puredns is the resolution backbone of a subdomain pipeline. Feed it names from subfinder or a wordlist, and it writes a file and a folder of clean, resolved subdomains for httpx and the stages past it. Schedule the workflow and every run re-resolves the surface, so dead names drop off and new ones surface on their own.
source github.com/d3mondev/puredns
use cases
Run bruteforce mode with a wordlist against a domain and let wildcard filtering strip the false positives so only real subdomains survive.
Feed subdomains gathered from passive sources into resolve mode to confirm which actually resolve before spending probe time on them.
Use a public resolver pool for throughput and a trusted set for validation so DNS poisoning and load balancing do not corrupt the results.
reference
| Name | Type | Flag | Description |
|---|---|---|---|
| mode | STRING | · | Operating mode: bruteforce or resolve. |
| domain | STRING | · | Domain to brute-force (bruteforce mode only). |
| wordlist | FILE | · | Wordlist for bruteforce mode, or the list of names to resolve. |
| resolvers | FILE | --resolvers | File of public resolvers to query for throughput. |
| resolvers-trusted | FILE | --resolvers-trusted | File of trusted resolvers used to validate hits. |
| rate-limit | STRING | --rate-limit | Queries-per-second cap for public resolvers (0 = unlimited). |
| wildcard-tests | STRING | --wildcard-tests | Probes run to detect DNS load balancing (default 3). |
| skip-wildcard-filter | BOOLEAN | --skip-wildcard-filter | Turn off wildcard detection and filtering. |
Showing key inputs. puredns exposes 16 inputs in total.
| Name | Type | Flag | Description |
|---|---|---|---|
| mode | STRING | · | Available modes: bruteforce, resolve |
| quiet | BOOLEAN | --quiet | quiet mode |
| domain | STRING | · | Domain name (available in 'bruteforce' mode only) |
| domains | FILE | --domains | text file containing domains to bruteforce |
| threads | STRING | --threads | number of threads to use while filtering wildcards (default 100) |
| wordlist | FILE | · | Wordlist used for bruteforcing in 'bruteforce' mode or list of domains in 'resolve' mode |
| resolvers | FILE | --resolvers | text file containing public resolvers |
| rate-limit | STRING | --rate-limit | limit total queries per second for public resolvers (0 = unlimited) (default unlimited) |
| trusted-only | BOOLEAN | --trusted-only | use only trusted resolvers (implies --skip-validation) |
| skip-sanitize | BOOLEAN | --skip-sanitize | do not sanitize the list of domains to test |
| wildcard-batch | STRING | --wildcard-batch | number of subdomains to test for wildcards in a single batch (0 = unlimited) (default unlimited) |
| wildcard-tests | STRING | --wildcard-tests | number of tests to perform to detect DNS load balancing (default 3) |
| skip-validation | BOOLEAN | --skip-validation | do not validate results with trusted resolvers |
| resolvers-trusted | FILE | --resolvers-trusted | text file containing trusted resolvers |
| rate-limit-trusted | STRING | --rate-limit-trusted | limit total queries per second for trusted resolvers (0 = unlimited) (default 500) |
| skip-wildcard-filter | BOOLEAN | --skip-wildcard-filter | do not perform wildcard detection and filtering |
example
# brute-force example.com against a wordlist, wildcards filtered outpuredns bruteforce wordlist.txt example.com \ --resolvers resolvers.txt --resolvers-trusted trusted.txt \ --wildcard-tests 5 --rate-limit 1500www.example.comapi.example.commail.example.comdev.example.comstaging.example.comvpn.example.comblog.example.comadmin.example.comcdn.example.comguidance
Use puredns when you need accurate, high-volume DNS resolution or subdomain bruteforcing with wildcards filtered out. Pair it with subfinder for passive discovery, then resolve those names here, and follow it with httpx to find which resolve live.
The raw resolver puredns wraps. Use massdns directly when you do not need wildcard filtering and validation.
Another massdns wrapper with wildcard handling. puredns is a common drop-in for the same job.
Passive subdomain discovery. It finds names; resolve them with puredns afterward.
faq
related
Asynchronous DNS brute-force tool for fast subdomain enumeration.
OWASP Amass: network mapping and external asset discovery.
OWASP Amass intel: find an organization's root domains and ranges.
OWASP Amass enumeration that produces structured JSON output.
Find related domains and subdomains via shared Google Analytics IDs.
Find domains and subdomains potentially related to a given domain.
A domain and a wordlist feed puredns, which brute-forces and resolves names, filters out wildcards, and writes the clean resolved subdomains as output.
Facts on this page come from the live Trickest tool library.