https://github.com/vulpritprooze/docx-password-breaker
Open old locked docx files rotting in the corner
https://github.com/vulpritprooze/docx-password-breaker
Last synced: about 1 month ago
JSON representation
Open old locked docx files rotting in the corner
- Host: GitHub
- URL: https://github.com/vulpritprooze/docx-password-breaker
- Owner: VulpritProoze
- Created: 2026-05-15T00:04:46.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-15T00:46:16.000Z (2 months ago)
- Last Synced: 2026-05-15T02:41:10.475Z (2 months ago)
- Language: JavaScript
- Size: 22.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
docunlock — unlock password-protected Office files
Quick start
1. Prerequisites: Node.js 18+ installed.
2. Install dependencies:
```bash
npm install
```
3. Create `input.json` in the project root. Minimal example:
```json
{
"jobs": [
{ "file": "./Security-Keys-II.docx", "passwords": ["TestPassword", "PizzaOrderBonanza", "OtherPasswords"] }
]
}
```
4. Dry run (validates config, prints jobs, writes nothing):
```bash
npm run unlock:dry
```
5. Run unlock (attempts decryption and writes outputs to `./output`):
```bash
npm run unlock
```
What to expect
- Unlocked files are written as `{stem}_unlocked{ext}` inside `./output`.
- The terminal prints a summary with masked passwords and OK/FAIL per file.
- Exit code: `0` = all jobs succeeded, `1` = at least one failed.
Security & notes
- Full passwords are never printed by default; logs show masked versions.
- `input.json` and `output/` are in `.gitignore` by default — do not commit them.
- If you need the exact plaintext that succeeded, request a temporary local change (not enabled by default) to write the password to a local file; remember to delete it afterwards.
Further reading
- `CLAUDE.md` — project purpose and conventions
- `docs/config-schema.md` — input.json schema and examples
- `docs/variation-engine.md` — how password variants are generated
Support
- If something fails, check file paths in `input.json`, rerun `npm run unlock:dry`, and share the printed summary.