{"adoption": {"forks": 145, "observed_at": "2026-08-28T04:03:45.062602+00:00", "stars": 1144}, "canonical_url": "https://ross.abutalabs.com/products/zeratool", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Automatic Exploit Generation (AEG) and remote flag capture for exploitable CTF problems", "domain": ["security", "penetration-testing", "developer-tools"], "enriched": true, "function": ["penetration-testing", "security", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["ChrisTheCoolHut/Zeratool"], "name": "ChrisTheCoolHut/Zeratool", "platform": ["python", "cli"], "pushed_at": "2023-09-10T17:51:53+00:00", "repo": "ChrisTheCoolHut/Zeratool", "stars": 1144, "tags": ["aeg", "ctf", "exploitation", "binary-exploitation", "angr", "pwntools", "buffer-overflow", "format-string", "shellcode", "rop", "linux"], "topics": ["angr", "aeg", "shellcode", "buffer-overflow", "solver", "ctf"], "urls": [], "use_cases": ["automatically exploit buffer overflow CTF challenges", "generate format string exploits for binaries", "capture flags from remote CTF servers automatically", "leak remote libc addresses via puts/printf GOT entries", "generate ROP chains that execve /bin/sh", "find unconstrained paths in binaries with symbolic execution", "run ret2dlresolve attacks on 64-bit binaries"], "what_it_is": "Zeratool is an Automatic Exploit Generation (AEG) tool that uses angr to concolically analyze binaries for buffer overflow and format string vulnerabilities, then weaponizes them with pwntools for remote code execution. It can automatically submit generated payloads to remote CTF servers to capture flags, including libc leaking and ROP chain generation.", "when_to_avoid": ["exploiting modern hardened binaries with full mitigations", "production security testing requiring reliable, maintained tooling", "complex exploitation scenarios beyond buffer overflows and format strings", "Windows or macOS targets (tested on Ubuntu only)"], "when_to_choose": ["solving CTF pwn challenges with buffer overflows or format string bugs", "automating exploit generation for simple exploitable binaries", "capturing flags from remote CTF servers without manual exploit writing", "learning how AEG and binary exploitation techniques work"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/zeratool", "repo": "ChrisTheCoolHut/Zeratool", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "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:03:45.062602+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:45.062602+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:34:41.468708+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "73fa55b0e529c737f18a0048b4a7f5ed2cbb5123863ec61023a8e05ef44010f8", "fetched_at": "2026-08-28T04:03:45.062602+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChrisTheCoolHut/Zeratool"}, {"content_hash": "0709cd610c59f2feb8a35bf60188938cd429e9711a6d0b38b1a0a652c806061e", "fetched_at": "2026-08-29T12:39:46.725388+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/zeratool/json"}], "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": 2993, "days_push": 1088, "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}}