rbsec

dnscan: Scan Domains for DNS Subdomains

dnscan is a Python wordlist-based DNS subdomain scanner. It first attempts DNS zone transfers, then can discover names through recursive wordlist scans, with options for IPv6, alternate resolvers and TLD scanning.

InactivePythonGPL-3.0CLINetworkingSecurity Tools
Stars
1.3k
Forks
409
Last commit
1.9 years ago
Contributors
10
Releases, 12 months
0

Our take

Inactiveno commits in over a year

Health score

23/100

How it is scored
Activity
20
Community
31
Issues
21
Pull requests
21

dnscan is a focused command-line DNS enumeration tool, but its inactive maintenance status and highly concentrated contributions make long-term support uncertain.

Good fit if

  • You need a Python CLI for zone-transfer attempts and wordlist-based DNS subdomain discovery.
  • You can work with Python 3 and install the required netaddr and dnspython libraries.
  • GPL-3.0 fits your distribution and usage requirements.

Look elsewhere if

  • You need a project with recent commits, releases, or demonstrated recent issue and pull request handling.
  • Your team requires ongoing maintenance from a broadly shared contributor base.
  • Your workflow needs features beyond DNS enumeration, such as a documented service interface or web application.
All health signals
Last commit2024-12-17 (1.9 years ago)
Commits, last 90 days0
Releases, last 12 months0
Contributors10 (top contributor: 89% of commits)
Issues closed, last 90 days0
Pull requests merged, last 90 days0
Project age13 years

Checked on 2026-10-26 with the GitHub API.

Overview

dnscan is a Python wordlist-based DNS subdomain scanner for discovering DNS names associated with a target domain. It first attempts a zone transfer from the domain's nameservers; if that fails, it looks up TXT and MX records and scans using a supplied or included wordlist.

It is aimed at security practitioners and administrators who need a command-line way to enumerate subdomains or check domain presence across TLDs. Scans can target one domain or a newline-separated list, and discovered names can be written to files.

Key Features

  • Attempts zone transfers against each target domain's nameservers.
  • Scans subdomains using included or custom wordlists, with configurable threading.
  • Supports recursive scanning, depth limits, and optional wildcard recursion.
  • Offers alteration scans that add prefixes and suffixes to candidate names.
  • Can check IPv6 records and use a specified DNS resolver or resolver list.
  • Provides TLD scanning with included TLD and suffix lists.
  • Writes scan results and discovered IP addresses to separate output files.

Use Cases

  • Security practitioners can enumerate subdomains during an authorized assessment, using wordlists and recursion to expand discovery.
  • DNS administrators can check whether zone transfers are available and inspect the names exposed by them.
  • Teams maintaining multiple domains can run a batch scan from a newline-separated domain file.
  • Researchers can use the included TLD lists to check which TLDs contain a given base domain.

What you need

Detected in the repository

  • Python (from requirements.txt)
  • A Dockerfile, so it can run in a container

License in plain words

GPL-3.0strong copyleft

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the license notice
  • Share your changes: yes, the full source of anything you distribute that includes it, under the GPL
  • Includes an explicit patent grant from the contributors:

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

Install the dependencies, then run the script with a domain:

pip install -r requirements.txt
python3 dnscan.py -d example.org

See the README for options, wordlist details, and additional examples.

Alternatives

  • subwiz: subwiz predicts subdomains with a transformer and verifies them by DNS resolution, while dnscan discovers names through wordlist scans and attempts zone transfers.
  • CloakQuest3r: CloakQuest3r combines subdomain scanning with historical IP and certificate analysis to find exposed origins, while dnscan focuses on DNS enumeration.
ProjectLanguageLicenseStarsStatus
dnscanPythonGPL-3.01.3kInactive
subwizPythonMIT389Active
CloakQuest3rPythonMIT2.3kQuiet

Considerations

The repository is marked inactive, with no commits in over a year and no releases in the past year. Most of the code comes from one person, and there has been no recent issue closure or pull request merging, so adopters should plan for limited maintenance. The tool requires Python 3 plus netaddr and dnspython; alteration scans create many extra permutations and can be slow. GPL-3.0 terms may also affect how the software can be incorporated or redistributed.

Found this useful?

Share it with someone who would like dnscan.

Comparisons