{"adoption": {"forks": 369, "observed_at": "2026-08-28T04:05:03.360491+00:00", "stars": 1557}, "canonical_url": "https://ross.abutalabs.com/products/chipwhisperer", "card": {"archived": false, "artifact_type": "library", "description": "ChipWhisperer - the complete open-source toolchain for side-channel power analysis and glitching attacks", "domain": ["security", "hardware", "embedded-systems", "penetration-testing", "reverse-engineering"], "enriched": true, "function": ["security", "penetration-testing", "machine-learning", "data-science", "developer-tools"], "health_score": 92, "homepage": "http://chipwhisperer.com", "language": "C", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["newaetech/chipwhisperer"], "name": "newaetech/chipwhisperer", "platform": ["python", "cross-platform", "cli"], "pushed_at": "2026-08-25T19:21:04+00:00", "repo": "newaetech/chipwhisperer", "stars": 1557, "tags": ["side-channel-analysis", "power-analysis", "glitching", "hardware-security", "fpga", "embedded-security", "fault-injection"], "topics": ["security", "side-channel", "chipwhisperer"], "urls": [], "use_cases": ["perform side-channel power analysis attacks on embedded devices", "run glitching and fault injection attacks against microcontrollers", "capture and analyze power traces to extract AES keys", "research hardware security vulnerabilities on custom target boards", "learn hardware hacking with jupyter notebook tutorials", "reverse engineer firmware behavior via power consumption"], "what_it_is": "ChipWhisperer is an open-source toolchain for hardware security research, providing capture hardware designs, FPGA/USB firmware, and a Python API for side-channel power analysis and glitching attacks. It includes both capture tooling for talking to the hardware and analyzer tooling for processing power traces.", "when_to_avoid": ["you only need pure software penetration testing without hardware capture", "you require a turnkey commercial solution with vendor support and no hardware assembly", "your target is not accessible for power measurement or clock glitching"], "when_to_choose": ["you need an open-source toolchain for side-channel analysis or fault injection", "you want schematics, firmware, and software all freely available for hardware security research", "you are teaching or learning embedded hardware security with a Python API"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/chipwhisperer", "repo": "newaetech/chipwhisperer", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "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:03.360491+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.360491+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:29:57.704953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "efca3cfd75be8c26bc98c236ff3971165d51b5832f0cd554b2416adf95634c2a", "fetched_at": "2026-08-28T04:05:03.360491+00:00", "kind": "readme", "missing": false, "url": "https://github.com/newaetech/chipwhisperer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4385, "days_push": 8, "days_rel": 525, "gap_med": 0, "n_releases_24m": 26}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}