{"adoption": {"forks": 349, "observed_at": "2026-08-28T04:06:14.142418+00:00", "stars": 2109}, "canonical_url": "https://ross.abutalabs.com/products/subjack", "card": {"archived": false, "artifact_type": "cli-tool", "description": "DNS Takeover tool written in Go", "domain": ["security", "penetration-testing", "networking", "developer-tools"], "enriched": true, "function": ["security", "networking", "cli", "developer-tools"], "health_score": 92, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["haccer/subjack"], "name": "haccer/subjack", "platform": ["windows", "cli", "go"], "pushed_at": "2026-07-03T16:34:48+00:00", "repo": "haccer/subjack", "stars": 2109, "tags": ["subdomain-takeover", "dns", "bug-bounty", "pentesting", "dns-takeover", "recon", "linux", "macos"], "topics": ["go", "golang", "hostile", "subdomain", "takeover", "subdomain-takeover", "bug-bounty", "pentesting", "infosec", "bugbounty", "security"], "urls": [], "use_cases": ["scan a list of subdomains for takeover vulnerabilities", "find dangling CNAME records pointing to unclaimed services", "check for expired nameserver and cloud DNS zone takeovers", "detect misconfigured zone transfers leaking DNS records", "identify SPF and MX records on expired domains for email spoofing", "mass-test domains during bug bounty reconnaissance"], "what_it_is": "Subjack is a DNS takeover scanner written in Go that concurrently scans lists of subdomains to identify ones vulnerable to hijacking. It detects dangling CNAMEs, NS delegations, stale A records, zone transfers, SPF/MX/SRV takeovers, and registrable NXDOMAINs.", "when_to_avoid": ["you need a GUI or managed continuous monitoring service rather than a CLI scanner", "you require guaranteed accuracy without manual verification, since results can include false positives", "you need non-DNS web application vulnerability scanning"], "when_to_choose": ["you need fast, concurrent mass-scanning of subdomain lists for DNS takeovers", "you want broad coverage including NS, A record, AXFR, SPF, MX, and SRV takeover checks", "you are doing bug bounty or penetration testing reconnaissance in Go"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/subjack", "repo": "haccer/subjack", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "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:06:14.142418+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:14.142418+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:53:50.968746+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1e57818a9e0100b6f9fd079040480f8c9ab237adc7051fec2a306caf454a0b8c", "fetched_at": "2026-08-28T04:06:14.142418+00:00", "kind": "readme", "missing": false, "url": "https://github.com/haccer/subjack"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 90, "longevity": 100, "rhythm": 75}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3249, "days_push": 61, "days_rel": 170, "gap_med": 0, "n_releases_24m": 2}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}