{"adoption": {"forks": 283, "observed_at": "2026-08-28T04:05:07.141451+00:00", "stars": 1582}, "canonical_url": "https://ross.abutalabs.com/products/firmware-analysis-toolkit", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Toolkit to emulate firmware and analyse it for security vulnerabilities ", "domain": ["iot", "security", "reverse-engineering", "embedded-systems", "penetration-testing"], "enriched": true, "function": ["security", "vulnerability-scanning", "reverse-engineering", "simulation", "developer-tools"], "health_score": 20, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["attify/firmware-analysis-toolkit"], "name": "attify/firmware-analysis-toolkit", "platform": ["python", "cli"], "pushed_at": "2024-09-16T17:58:06+00:00", "repo": "attify/firmware-analysis-toolkit", "stars": 1582, "tags": ["firmware-analysis", "firmware-emulation", "firmadyne", "iot-security", "embedded-devices", "binary-analysis", "linux"], "topics": ["binary-analysis", "firmware", "firmware-analysis", "firmware-security", "firmware-tools", "iot", "iot-security", "iot-security-tools", "reverse-engineering", "security", "vulnerability-scanner"], "urls": [], "use_cases": ["emulate router firmware images for security research", "analyze IoT device firmware for vulnerabilities without hardware", "boot embedded firmware in QEMU to access its web interface", "automate firmadyne-based firmware emulation", "reverse engineer firmware binaries from IoT devices", "set up an IoT firmware analysis lab environment"], "what_it_is": "Firmware Analysis Toolkit (FAT) is a Python-based automation wrapper around Firmadyne that emulates IoT and embedded device firmware images. It lets security researchers boot firmware in an emulated environment to analyze it for vulnerabilities without needing physical hardware.", "when_to_avoid": ["you need fine-grained control over the emulation pipeline (use Firmadyne directly)", "you need analysis of non-Linux-based firmware that Firmadyne cannot emulate", "you want a maintained tool without Python 2 dependencies", "you need production-grade or scalable firmware analysis infrastructure"], "when_to_choose": ["you need to emulate and boot IoT/embedded firmware images quickly", "you want an automated, scriptable wrapper around Firmadyne", "you are doing offensive IoT security research or training", "you prefer a simpler setup that skips Firmadyne's PostgreSQL dependency"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/firmware-analysis-toolkit", "repo": "attify/firmware-analysis-toolkit", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "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:07.141451+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.141451+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:56:09.170200+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ceef971817297f1b7b26a9b4e52dee43a9af856a1ab57aefcf8e69068a5f5942", "fetched_at": "2026-08-28T04:05:07.141451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/attify/firmware-analysis-toolkit"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 3600, "days_push": 716, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}