{"adoption": {"forks": 410, "observed_at": "2026-08-28T04:04:13.264330+00:00", "stars": 1277}, "canonical_url": "https://ross.abutalabs.com/products/dnscan", "card": {"archived": false, "artifact_type": "cli-tool", "description": null, "domain": ["security", "penetration-testing", "networking"], "enriched": true, "function": ["security", "networking", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["rbsec/dnscan"], "name": "rbsec/dnscan", "platform": ["python", "cli", "windows"], "pushed_at": "2024-12-17T15:29:50+00:00", "repo": "rbsec/dnscan", "stars": 1277, "tags": ["dns", "subdomain-enumeration", "reconnaissance", "zone-transfer", "wordlist", "osint", "command-line", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["enumerate subdomains of a target domain", "try a DNS zone transfer against nameservers", "find subdomains during a penetration test", "scan a domain across all TLDs", "discover IPv6 AAAA records for subdomains", "recursively scan subdomains with a wordlist"], "what_it_is": "dnscan is a Python command-line tool that performs DNS subdomain enumeration using wordlists, attempting zone transfers first and falling back to recursive subdomain scanning. It supports IPv6, TLD scanning, custom resolvers, and ships with wordlists derived from tens of thousands of zone files.", "when_to_avoid": ["you need a full web application security scanner rather than DNS enumeration", "you want a GUI or continuous monitoring solution", "you need passive subdomain discovery from certificate transparency logs"], "when_to_choose": ["you need a fast, scriptable CLI for DNS subdomain enumeration", "you want built-in wordlists ranked by real-world zone file popularity", "you need zone transfer attempts, TLD scanning, or IPv6 support in one tool"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dnscan", "repo": "rbsec/dnscan", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:13.264330+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:02:51.276845+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5c11f72ccc7b42c2e5963050390fae2161f632ca984648614e601e198843b65", "fetched_at": "2026-08-28T04:04:13.264330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rbsec/dnscan"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4921, "days_push": 624, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}