{"adoption": {"forks": 179, "observed_at": "2026-08-28T04:06:50.892887+00:00", "stars": 2427}, "canonical_url": "https://ross.abutalabs.com/products/portspoof", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Portspoof", "domain": ["security", "networking", "penetration-testing"], "enriched": true, "function": ["security", "networking", "simulation"], "health_score": 97, "homepage": "http://drk1wi.github.io/portspoof/", "language": "C++", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["drk1wi/Portspoof"], "name": "drk1wi/Portspoof", "platform": ["cli"], "pushed_at": "2026-08-26T08:31:40+00:00", "repo": "drk1wi/Portspoof", "stars": 2427, "tags": ["port-scanning-defense", "honeypot", "deception", "service-emulation", "reconnaissance", "linux"], "topics": [], "urls": [], "use_cases": ["hide real services from nmap scans", "make port scanning slow and costly for attackers", "confuse service version detection with fake banners", "deceive attackers during reconnaissance", "protect a server's real attack surface from enumeration"], "what_it_is": "Portspoof is a lightweight C++ tool that emulates open TCP ports and convincing service signatures across all 65535 ports, making port scanning and service fingerprinting slow and unreliable for attackers. It runs in userland, binds to a single port, and can also act as an exploitation framework frontend against attacker scanning tools.", "when_to_avoid": ["you need a full honeypot with logging and attacker interaction analysis", "you require per-service emulation of real application protocols", "your environment cannot tolerate iptables rules or altered network responses"], "when_to_choose": ["you want to obscure which TCP ports actually host real services", "you need a lightweight, userland deception layer without root privileges", "you want to slow down or frustrate automated reconnaissance against a host"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/portspoof", "repo": "drk1wi/Portspoof", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "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:50.892887+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:50.892887+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:31:35.599061+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0661ed47f0984c8cb9f6613aef1d47039f64b3937a7f6ae3d57c3bab96775cd6", "fetched_at": "2026-08-28T04:06:50.892887+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Portspoof"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 58}, "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": 5150, "days_push": 7, "days_rel": 203, "gap_med": 58, "n_releases_24m": 2}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}