{"adoption": {"forks": 367, "observed_at": "2026-08-28T04:06:13.721293+00:00", "stars": 2102}, "canonical_url": "https://ross.abutalabs.com/products/firmadyne", "card": {"archived": false, "artifact_type": "framework", "description": "Platform for emulation and dynamic analysis of Linux-based firmware", "domain": ["security", "iot", "embedded-systems", "penetration-testing", "developer-tools"], "enriched": true, "function": ["security", "vulnerability-scanning", "simulation", "testing", "reverse-engineering"], "health_score": 20, "homepage": null, "language": "Shell", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["firmadyne/firmadyne"], "name": "firmadyne/firmadyne", "platform": ["python"], "pushed_at": "2024-07-21T00:21:54+00:00", "repo": "firmadyne/firmadyne", "stars": 2102, "tags": ["firmware-emulation", "qemu", "embedded-firmware", "dynamic-analysis", "router-firmware", "ndss-paper", "mips", "arm", "nvram-emulation", "linux", "shell", "docker"], "topics": [], "urls": [], "use_cases": ["emulate router firmware in qemu", "dynamically analyze iot device firmware", "extract filesystem and kernel from firmware images", "test firmware for known cves", "scrape firmware from vendor websites", "debug embedded linux firmware without hardware"], "what_it_is": "FIRMADYNE is an automated, scalable platform for emulating and dynamically analyzing Linux-based embedded firmware using QEMU with instrumented kernels and an NVRAM emulation library. It includes firmware extraction, scraping from 40+ vendors, and scripted analyses such as web page enumeration, SNMP dumping, and known-vulnerability checks.", "when_to_avoid": ["the firmware is not linux-based", "you need emulation of non-MIPS/ARM architectures", "you need a maintained tool with frequent updates"], "when_to_choose": ["you need large-scale automated emulation of linux-based embedded firmware", "you want to run security analyses against router or iot firmware images", "you lack physical hardware for the target device"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/firmadyne", "repo": "firmadyne/firmadyne", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "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:13.721293+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.721293+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:54:16.474024+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49ced45c88f823cd2dac7f294de9796191e0ef43b0c2976cecd4063dc8130c92", "fetched_at": "2026-08-28T04:06:13.721293+00:00", "kind": "readme", "missing": false, "url": "https://github.com/firmadyne/firmadyne"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3852, "days_push": 774, "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}}