{"adoption": {"forks": 232, "observed_at": "2026-08-28T04:05:28.583476+00:00", "stars": 1730}, "canonical_url": "https://ross.abutalabs.com/products/dnsteal", "card": {"archived": false, "artifact_type": "cli-tool", "description": "DNS Exfiltration tool for stealthily sending files over DNS requests.", "domain": ["security", "penetration-testing", "networking"], "enriched": true, "function": ["networking", "security", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["m57/dnsteal"], "name": "m57/dnsteal", "platform": ["python", "windows", "cross-platform"], "pushed_at": "2022-02-03T11:04:49+00:00", "repo": "m57/dnsteal", "stars": 1730, "tags": ["dns-exfiltration", "data-exfiltration", "fake-dns-server", "red-team", "penetration-testing-tools", "command-line", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["exfiltrate files from a compromised machine over DNS", "test data loss prevention (DLP) and egress filtering controls", "demonstrate DNS tunneling in security assessments", "simulate covert channel attacks in red team exercises", "transfer files out of networks that only allow DNS traffic"], "what_it_is": "dnsteal is a fake DNS server written in Python that enables stealthy exfiltration of files from a victim machine via DNS requests. It supports multiple file transfers, gzip compression, and customizable subdomain encoding parameters.", "when_to_avoid": ["you need a general-purpose DNS server or DNS tunneling client for legitimate remote access", "you require high-throughput or reliable file transfer over a controlled network", "you need a maintained tool with active development and modern features"], "when_to_choose": ["you need to demonstrate or test DNS-based data exfiltration during a penetration test", "you want a lightweight, single-file Python tool with no dependencies", "you need to validate whether a network's security controls detect DNS tunneling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dnsteal", "repo": "m57/dnsteal", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "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:05:28.583476+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.583476+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:31:45.402802+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbb41b42dca70f2d357cb108feeaa1e15dea4fc7e5fa84338cf8538d7e6b6222", "fetched_at": "2026-08-28T04:05:28.583476+00:00", "kind": "readme", "missing": false, "url": "https://github.com/m57/dnsteal"}], "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": 4040, "days_push": 1672, "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}}