Updated Jul 14, 2026

Recon

Expand known subdomains into live DNS hits

Permute known subdomains, then resolve what lives.

Agent

overview

What dmut does

dmut reads known subdomains on stdin and a mutation dictionary via -d, generates permutations and alterations, then resolves each candidate. Output is the live names only, optionally with --show-ip.

Run it after passive discovery like subfinder when hosts follow naming patterns: a known dev host often implies dev1, dev2, or dev-staging that certificate logs never returned.

dnsgen and gotator stop at generation, so you pipe into a separate resolver. dmut generates and validates DNS in one pass with --workers, --dns-retries, and --dnsServers or -s. Hand resolved hosts to httpx next.

source github.com/bp0lr/dmut

use cases

Where dmut fits

Expand a known subdomain set

Feed dmut the output of passive discovery and a mutation dictionary to generate and resolve permutations that certificate logs and DNS aggregators never returned.

Brute-force generated names in one pass

Use the built-in worker pool and resolver list to resolve every generated candidate directly, so permutation and DNS validation happen inside a single node.

Keep resolution accurate at scale

Tune --workers, --dns-retries, --dns-timeout, and --dns-errorLimit, and refresh the public resolver list, so a large job stays accurate instead of drowning in failed queries.

Feed live hosts to a probing pipeline

Pass dmut's resolved names to httpx to learn which mutated hosts respond over HTTP, then carry the live surface into the rest of the workflow.

reference

dmut inputs and flags

13 inputs
NameTypeFlagDescription
subdomainsFILE·Subdomains to generate permutations for (piped in on stdin).
dictionaryFILE-dDictionary file containing the mutation list.
dns-servers-fileFILE-sResolve using DNS servers from this file.
dns-servers-listSTRING--dnsServersResolve using DNS servers from a comma-separated list.
workersSTRING--workersNumber of concurrent workers (default 25).
dns-retriesSTRING--dns-retriesMax retries for failed DNS queries (default 3).
update-dns-listBOOLEAN--update-dnslistDownload a fresh list of validated public DNS resolvers.
show-ipBOOLEAN--show-ipDisplay the resolved IP for valid results.

Showing key inputs. dmut exposes 13 inputs in total.

Full flag reference (13 inputs)
NameTypeFlagDescription
show-ipBOOLEAN--show-ipDisplay extra info, including the resolved IP, for valid results.
verboseBOOLEAN--verboseAdd verbosity to the process.
workersSTRING--workersNumber of concurrent workers (default 25).
dictionaryFILE-dDictionary file containing the mutation list.
show-statsBOOLEAN--show-statsDisplay stats about the current job.
subdomainsFILE·Subdomains to generate permutations for, read on stdin.
target-urlSTRING--urlSingle target to generate permutations for.
dns-retriesSTRING--dns-retriesMax retries for failed DNS queries (default 3).
dns-timeoutSTRING--dns-timeoutDNS server timeout in milliseconds (default 500).
dns-error-limitSTRING--dns-errorLimitNumber of errors before a DNS server is disabled (default 25).
update-dns-listBOOLEAN--update-dnslistDownload a list of periodically validated public DNS resolvers.
dns-servers-fileFILE-sUse DNS servers from this file.
dns-servers-listSTRING--dnsServersUse DNS servers from a comma-separated list.

example

Run dmut

dmut · command
# mutate a known subdomain list and resolve the live candidatescat known-subdomains.txt | dmut -d mutations.txt --workers 100 --dns-retries 5 --show-ip --update-dnslist -o resolved.txt
sample output
dev2.example.com [198.51.100.24]dev-staging.example.com [198.51.100.25]api-uat.example.com [198.51.100.61]api-dev.example.com [203.0.113.12]admin-staging.example.com [203.0.113.48]vpn2.example.com [198.51.100.90]grafana-dev.example.com [203.0.113.77]…  (41 of 9,120 permutations resolved in the run behind this page)

guidance

Choosing dmut

Use dmut after passive discovery to mutate known subdomains and resolve the permutations in one step. For generating permutations without resolving them, use dnsgen or gotator and pass the candidates to a resolver. dmut finds names; follow it with httpx to see which respond over HTTP.

dnsgen

Generates permutations only. dmut also resolves the candidates in the same run.

gotator

Permutation generator with flexible rules. Pair it with a resolver; dmut bundles resolution.

goaltdns

Another alteration-based generator. dmut combines mutation and brute-force validation.

faq

dmut questions

It takes hostnames you already found and generates variations such as dev to dev1, dev2, and dev-staging. dmut reads a subdomain list on stdin, applies mutation words from your -d dictionary, and produces candidates built from the target's own naming patterns.

Run dmut yourself

A known subdomain list and a mutation dictionary feed dmut, which generates permutations, resolves them, and writes the live names as output.

Facts on this page come from the live Trickest tool library.