{"adoption": {"forks": 209, "observed_at": "2026-08-28T04:08:02.633894+00:00", "stars": 3397}, "canonical_url": "https://ross.abutalabs.com/products/collisions", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Hash collisions and exploitations", "domain": ["security", "developer-tools"], "enriched": true, "function": ["security", "cryptography", "developer-tools"], "health_score": 25, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["corkami/collisions"], "name": "corkami/collisions", "platform": ["python", "cross-platform"], "pushed_at": "2025-02-20T08:06:40+00:00", "repo": "corkami/collisions", "stars": 3397, "tags": ["hash-collisions", "md5", "sha1", "cryptography-attacks", "educational", "file-formats", "cryptography"], "topics": ["collisions", "hash", "md5", "sha1", "exploitation", "scripts"], "urls": [], "use_cases": ["generate two different files with the same MD5 hash", "create colliding PDF or JPG files for a security demo", "learn how chosen-prefix hash collision attacks work", "test whether a file format tolerates appended collision data", "demonstrate weaknesses of MD5-based file integrity checks", "study real-world hash collision exploitation examples"], "what_it_is": "A collection of hash collision tools, scripts, and examples by Ange Albertini and Marc Stevens, demonstrating MD5 and SHA1 collision attacks and how they can be exploited in common file formats like PDF, JPG, and PE. It includes format-specific Python scripts to generate instant colliding file pairs and documentation of attack techniques.", "when_to_avoid": ["you need to forge a file matching an arbitrary given hash - that is not possible", "you need practical SHA1 collision generation on consumer hardware", "you need a production hashing library rather than attack tooling"], "when_to_choose": ["you need to generate or demonstrate MD5 or SHA1 collisions in common file formats", "you are researching or teaching cryptographic hash weaknesses", "you want to test systems relying on MD5/SHA1 for file identity"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/collisions", "repo": "corkami/collisions", "role": "main", "score": 35}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "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:08:02.633894+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:02.633894+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:38:48.058461+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b8e7dde7ba337407d3c3dedb74ef6b4a01cb76241d7cf22f7b010089b9a8f0aa", "fetched_at": "2026-08-28T04:08:02.633894+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corkami/collisions"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 7, "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": 2774, "days_push": 559, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 35, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}