{"adoption": {"forks": 187, "observed_at": "2026-08-28T04:04:30.425605+00:00", "stars": 1363}, "canonical_url": "https://ross.abutalabs.com/products/katana", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Katana - Automatic CTF Challenge Solver in Python3", "domain": ["security", "penetration-testing", "developer-tools"], "enriched": true, "function": ["penetration-testing", "security", "developer-tools", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["JohnHammond/katana", "JohnHammond/ctf-katana"], "name": "Katana", "platform": ["windows", "cli", "python"], "pushed_at": "2024-03-07T15:39:51+00:00", "repo": "JohnHammond/katana", "stars": 1363, "tags": ["ctf", "capture-the-flag", "awesome-list", "reconnaissance", "enumeration", "steganography", "forensics", "cryptography", "reverse-engineering", "binary-exploitation", "command-line", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["automate common checks on a CTF challenge file", "find tools for solving SMB enumeration challenges", "look up commands for steganography or forensics challenges", "get started with capture the flag competitions", "quickly triage unknown CTF binaries or files", "find reverse shell and post-exploitation commands", "reference commands for HackTheBox or similar platforms"], "what_it_is": "Katana is a Python CLI tool by John Hammond that automates common low-hanging-fruit checks for CTF challenges, paired with ctf-katana, a curated living document of tools and commands for CTF categories like enumeration, forensics, crypto, web, and binary exploitation. Together they serve as both an automated helper and a reference guide for capture-the-flag players.", "when_to_avoid": ["you need a professional penetration testing suite for real engagements", "you need a maintained tool with active releases and a clear license", "you want a GUI or polished workflow rather than a script and reference list"], "when_to_choose": ["you play CTFs and want a curated cheat sheet of tools and commands", "you want to automate routine low-hanging-fruit checks on challenge files", "you are a beginner looking for guidance across many CTF categories"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/JohnHammond/katana", "repo": "JohnHammond/katana", "role": "main", "score": 32}, {"path": "/repos/JohnHammond/ctf-katana", "repo": "JohnHammond/ctf-katana", "role": "docs", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "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:04:30.425605+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:30.425605+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:33:14.698091+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee8444b6ee92bd1a935e0198a5780ed43f1696dcec41d56d1102c21b3ad19d24", "fetched_at": "2026-08-28T04:04:30.425605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JohnHammond/katana"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2381, "days_push": 909, "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}}