{"adoption": {"forks": 141, "observed_at": "2026-08-28T04:04:04.145640+00:00", "stars": 1230}, "canonical_url": "https://ross.abutalabs.com/products/bpftools", "card": {"archived": false, "artifact_type": "cli-tool", "description": "BPF Tools - packet analyst toolkit", "domain": ["networking", "security", "developer-tools"], "enriched": true, "function": ["security", "networking", "parser", "developer-tools"], "health_score": 67, "homepage": null, "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["cloudflare/bpftools"], "name": "cloudflare/bpftools", "platform": ["python", "cli"], "pushed_at": "2026-04-24T00:36:22+00:00", "repo": "cloudflare/bpftools", "stars": 1230, "tags": ["bpf", "pcap", "iptables", "packet-analysis", "ddos-mitigation", "dns-filtering", "command-line", "linux"], "topics": [], "urls": [], "use_cases": ["generate BPF bytecode to match malicious traffic", "create iptables rules to drop packets to a domain", "analyze pcap traffic dumps", "convert between pcap files and hex", "parse DNS packets from captures", "write BPF filters matching DNS queries or domain suffixes"], "what_it_is": "A toolkit of Python scripts and Linux binaries for analyzing pcap traffic dumps and generating BPF bytecode. Its core purpose is crafting BPF and iptables rules that match and drop malicious traffic, such as packets targeting specific DNS domains.", "when_to_avoid": ["you need a general-purpose packet capture tool like tcpdump", "you work on non-Linux platforms", "you need eBPF program development rather than classic BPF filtering"], "when_to_choose": ["you need to drop DDoS or malicious traffic with iptables BPF rules", "you want to generate BPF bytecode matching DNS domain patterns", "you analyze packet captures on Linux"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bpftools", "repo": "cloudflare/bpftools", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "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:04.145640+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:04.145640+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:13:54.308471+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c51f0532b9f15ba599ab515cb6e3e95e7bcb6a3020ac1c4dedb9a43fef68fd7c", "fetched_at": "2026-08-28T04:04:04.145640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cloudflare/bpftools"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 78, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4501, "days_push": 132, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}