Dnstwist
20250130Domain name permutation engine for detecting homograph phishing attacks, typo squatting, and brand impersonation.
- Verified 24 Sept 2026
- pip 20250130
- Apache-2.0
- 5.7k stars
Install and run
otlite install dnstwistInstalls
dnstwist==20250130into its own virtualenv, withdnstwist[full]==20250130. otlite lists what it will install and asks before it starts.otlite run dnstwist -- d:example.comType your own value to rewrite the commands. It stays in this page: nothing is sent or saved.
dnstwistreceivesdnstwist example.com
No otlite yet? Install it in one line
curl -fsSL https://get.otinstaller.com/otlite | shLinux and macOS, no Docker. It uses your Python and pipx when both are there, and otherwise brings its own Python. About otlite · otlite docs
What it takes
Typed inputs after -- become Dnstwist's own arguments. Anything else after -- passes through unchanged, so every option of the tool still works.
| Input | With otlite | dnstwist receives |
|---|---|---|
Domaind: | otlite run dnstwist -- d:example.com | dnstwist example.com |
What a run leaves
Every run is saved under results/ where you run otlite (or --output, or OTLITE_RESULTS_DIR): what the tool printed, a sidecar with how it ran, and an envelope.
results/dnstwist/example.com/<time>_dnstwist_example.com_<run id>.txtresults/dnstwist/example.com/<time>_dnstwist_example.com_<run id>.meta.jsonresults/dnstwist/example.com/<time>_dnstwist_example.com_<run id>.envelope.json
{
"envelope": 1,
"tool": "dnstwist@20250130",
"runtime": "otlite",
"input": { "target": "example.com" },
"case": null,
"started_at": "…", "ended_at": "…", "duration_ms": …,
"exit_code": 0,
"status": "complete",
"entities": [{ "type": "url", "value": "…" }, …],
"warnings": [],
"output": { "path": "results/dnstwist/example.com/<time>_dnstwist_example.com_<run id>.txt", "sha256": "…", "bytes": … }
}otlite results --tool dnstwistotlite extract dnstwistotlite diff dnstwist example.comList the saved runs, pull out every indicator, or compare the two latest runs against the same target.
With other tools
These run it with every other installed tool that takes the same input, a few at a time, and save each run:
otlite run --all d:example.comotlite auto example.comIt is in the domain-recon playbook:
otlite playbook domain-recon example.comAlso on the OTInstaller registry
Prefer a sandbox? osintverse-community/dnstwist runs Dnstwist with ot: pinned and scanned, in a locked-down container with no access to your files and no network unless it needs one. Linux, macOS and Windows, with Docker or Podman.
ot install osintverse-community/dnstwist