Corrupted Encrypted Wallet.dat: 100 BTC Recovery Attempt via Pywallet
IndeterminateWallet passphrase was unavailable — whether access was ultimately recovered is not known.
A user identified as chunglam posted on BitcoinTalk seeking assistance recovering approximately 100 BTC stored in a corrupted wallet.dat file protected by Bitcoin Core's native encryption. The wallet used AES-256-CBC encryption with SHA512-based key derivation, making direct access impossible once corruption occurred. The user offered a 40 BTC bounty to anyone who could restore access to the funds, indicating genuine financial loss rather than theoretical discussion.
The corruption likely resulted from file system damage, incomplete backups, or database corruption within the Berkeley DB format that Bitcoin Core employed for wallet storage at that time. The encrypted state of the wallet prevented casual file repair attempts, as any successful recovery would require both decryption and database reconstruction.
Community response included meaningful technical engagement. Etotheipi, a recognized wallet security expert known for discovering unencrypted key vulnerabilities in early Bitcoin Core versions, volunteered assistance and indicated possession of Python scripts capable of extracting public keys from wallet.dat files and applying AES-256-CBC decryption with proper key derivation. Joric contributed code examples demonstrating encryption and decryption techniques, including key derivation using SHA512 with configurable iteration counts (exemplified at 47,135 rounds) and salt values.
The incident reflects the technical and operational fragility of early Bitcoin self-custody infrastructure, where file corruption combined with encryption could render substantial holdings permanently inaccessible without specialized recovery expertise. The bounty offer underscores the severity: the user was willing to surrender 40% of the trapped value for restoration of the remaining 60 BTC. Resolution status remains undocumented in the available record; a separate detailed thread was referenced but not accessible.
| Stress condition | Passphrase unavailable |
| Custody system | Software wallet |
| Outcome | Indeterminate |
| Documentation | Partial |
Why passphrases fail years after they are set
The failure mode documented consistently across observed cases is temporal: the passphrase is set with confidence, not used for an extended period, and then cannot be reproduced exactly when needed. A single character difference — different capitalization, an added space, a slightly different special character — produces a different wallet with a zero balance. The holder may be certain they remember the passphrase while being unable to produce the exact string that was originally set.
What makes this particularly difficult is that there is no signal at the moment of failure. A wrong passphrase does not produce an error message. It opens an empty wallet. The holder sees a zero balance and typically concludes the passphrase was wrong — but without knowing which part was wrong, or by how much.
Professional passphrase recovery services can attempt permutations when the holder has partial information: they remember the general structure, typical patterns they use for passwords, the approximate length, or that it included a specific word. Recovery from total non-recollection is not feasible.
The preventive action is to store a passphrase record — not with the seed phrase, which would defeat its security purpose, but in a separate secure location accessible to the holder and potentially a designated recovery person. A passphrase that exists only in memory has a time horizon: it will eventually be forgotten, and the timing is unpredictable.
Translate