{"id":17342922,"url":"https://github.com/agourlay/zip-password-finder","last_synced_at":"2025-05-15T03:07:58.251Z","repository":{"id":62378378,"uuid":"527018285","full_name":"agourlay/zip-password-finder","owner":"agourlay","description":"Find the password of protected ZIP files.","archived":false,"fork":false,"pushed_at":"2025-05-12T16:48:48.000Z","size":716,"stargazers_count":378,"open_issues_count":2,"forks_count":47,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-12T17:57:38.274Z","etag":null,"topics":["archive","brute-force","password-cracker","zip"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agourlay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-20T19:15:18.000Z","updated_at":"2025-05-12T16:48:42.000Z","dependencies_parsed_at":"2024-02-09T18:25:23.255Z","dependency_job_id":"0d474054-584a-44fe-88f7-dbdd6c0a89e4","html_url":"https://github.com/agourlay/zip-password-finder","commit_stats":{"total_commits":298,"total_committers":6,"mean_commits":"49.666666666666664","dds":0.4093959731543624,"last_synced_commit":"32660208b578bceb129810e529a37e5e5d98f17f"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agourlay%2Fzip-password-finder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agourlay%2Fzip-password-finder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agourlay%2Fzip-password-finder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agourlay%2Fzip-password-finder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agourlay","download_url":"https://codeload.github.com/agourlay/zip-password-finder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264769,"owners_count":22041794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archive","brute-force","password-cracker","zip"],"created_at":"2024-10-15T16:07:31.643Z","updated_at":"2025-05-15T03:07:53.226Z","avatar_url":"https://github.com/agourlay.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# zip-password-finder\n[![Build](https://github.com/agourlay/zip-password-finder/actions/workflows/ci.yml/badge.svg)](https://github.com/agourlay/zip-password-finder/actions/workflows/ci.yml)\n[![Crates.io](https://img.shields.io/crates/v/zip-password-finder.svg)](https://crates.io/crates/zip-password-finder)\n\n`zip-password-finder` is a tool to find the password of protected zip files.\n\nThe design of this tool is described in details in the following blog articles:\n- [Brute forcing protected ZIP archives in Rust](https://agourlay.github.io/brute-forcing-protected-zip-rust/)\n- [Follow up on cracking ZIP archives in Rust](https://agourlay.github.io/follow-up-cracking-zip-rust/)\n\n## Features\n\n- Supports both ZipCrypto and AES encryption.\n- Leverages multiple threads to speed up the process\n- Dictionary attack to test passwords from a dictionary text file (one word per line)\n- Brute force to generate all passwords for a given charset and a password length range\n\nThe available charsets for the password generation are:\n\n```\n  l | abcdefghijklmnopqrstuvwxyz [a-z]\n  u | ABCDEFGHIJKLMNOPQRSTUVWXYZ [A-Z]\n  d | 0123456789                 [0-9]\n  h | 0123456789abcdef           [0-9a-f]\n  H | 0123456789ABCDEF           [0-9A-F]\n  s | «space»!\"#$%\u0026'()*+,-./:;\u003c=\u003e?@[\\]^_`{|}~\n```\n\nAlternatively, you can provide a custom charset file with the `--charsetFile` option.\n\nIt accepts a file path for a `txt` file containing a single line of characters to use for the password generation.\n\n## Installation\n\n### Releases\n\nUsing the provided binaries in https://github.com/agourlay/zip-password-finder/releases\n\n### Crates.io\n\nUsing Cargo via [crates.io](https://crates.io/crates/zip-password-finder).\n\n```bash\ncargo install zip-password-finder\n```\n\n### AUR\n\nYou can install [`zip-password-finder`](https://aur.archlinux.org/packages?O=0\u0026K=zip-password-finder) from the AUR using an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers). For example:\n\n```bash\nparu -S zip-password-finder\n```\n\n## Usage\n\n```bash\n./zip-password-finder -h\nFind the password of protected ZIP files\n\nUsage: zip-password-finder [OPTIONS] --inputFile \u003cinputFile\u003e\n\nOptions:\n  -i, --inputFile \u003cinputFile\u003e                    path to zip input file\n  -w, --workers \u003cworkers\u003e                        number of workers\n  -p, --passwordDictionary \u003cpasswordDictionary\u003e  path to a password dictionary file\n  -c, --charset \u003ccharset\u003e                        charset to use to generate password [default: lud]\n      --charsetFile \u003ccharsetFile\u003e                path to a charset file\n      --minPasswordLen \u003cminPasswordLen\u003e          minimum password length [default: 1]\n      --maxPasswordLen \u003cmaxPasswordLen\u003e          maximum password length [default: 10]\n      --fileNumber \u003cfileNumber\u003e                  file number in the zip archive [default: 0]\n  -h, --help                                     Print help\n  -V, --version                                  Print version\n```\n\n## Performance\n\nFor AES make sure to use a CPU with `SHA` instructions (Intel Sandy Bridge or newer, AMD Bulldozer or newer) to get the best performance.\n\nNative builds tend to perform better in general.\n\n```RUSTFLAGS=\"-C target-cpu=native\" cargo build --release```\n\nIn general this tool seems to suffer from contention as the number of workers increases which makes it impractical for non-trivial passwords.\n\nIt makes sense to use a number of workers equal to the number of physical cores.\n\nE.g. of scalability with an 8 core CPU with 16 threads as the number of workers increases:\n\n![scalability example](finder-8-16.jpg \"Scalability example\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagourlay%2Fzip-password-finder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagourlay%2Fzip-password-finder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagourlay%2Fzip-password-finder/lists"}