{"adoption": {"forks": 289, "observed_at": "2026-08-28T04:06:32.538515+00:00", "stars": 2265}, "canonical_url": "https://ross.abutalabs.com/products/badblood", "card": {"archived": false, "artifact_type": "cli-tool", "description": "BadBlood by @davidprowe, Secframe.com, fills a Microsoft Active Directory Domain with a structure and thousands of objects. The output of the tool is a domain similar to a domain in the real world.  After BadBlood is ran on a domain, security analysts and engineers can practice using tools to gain an understanding and prescribe to securing Active Directory. Each time this tool runs, it produces different results.  The domain, users, groups, computers and permissions are different. Every. Single. Time.", "domain": ["security", "penetration-testing", "developer-tools"], "enriched": true, "function": ["security", "data-generation", "developer-tools"], "health_score": 20, "homepage": "https://www.secframe.com/badblood", "language": "PowerShell", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["davidprowe/BadBlood"], "name": "davidprowe/BadBlood", "platform": ["windows", "cli"], "pushed_at": "2023-06-07T17:14:17+00:00", "repo": "davidprowe/BadBlood", "stars": 2265, "tags": ["active-directory", "lab-environment", "powershell", "security-training", "bloodhound"], "topics": [], "urls": [], "use_cases": ["populate a lab active directory domain with realistic objects", "practice active directory attack and defense techniques", "generate test data for bloodhound analysis", "create a realistic domain for security training", "test ad security tools against varied permissions", "build a cyber range environment for red team practice"], "what_it_is": "BadBlood is a PowerShell tool that populates a Microsoft Active Directory domain with thousands of randomized users, groups, computers, and permissions to mimic a realistic production domain. It is designed for security analysts and engineers to practice attack and defense techniques against Active Directory, producing different results on every run.", "when_to_avoid": ["you need a controlled, deterministic test dataset", "you cannot dedicate a disposable lab domain - it requires domain admin and schema admin rights", "you want a maintained tool with frequent updates"], "when_to_choose": ["you need a realistic active directory lab with thousands of varied objects", "you want unique domain structures on each run for repeated training", "you are practicing with tools like bloodhound against a populated domain"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/badblood", "repo": "davidprowe/BadBlood", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "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:32.538515+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:32.538515+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:42:24.297903+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "23af26a85304dc52682804faaa79a4cf3a987a5fb4c2968c2de0444fb1bacba2", "fetched_at": "2026-08-28T04:06:32.538515+00:00", "kind": "readme", "missing": false, "url": "https://github.com/davidprowe/BadBlood"}, {"content_hash": "0d48a205584b0b97e822f06bcb1ccfcdbcda684d187c8884acb9951d507b2a43", "fetched_at": "2026-08-29T10:22:38.382181+00:00", "kind": "homepage", "missing": false, "url": "https://www.secframe.com/badblood"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2421, "days_push": 1183, "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}}