Cada semana recibimos consultas de gente que encontró un disco duro viejo con un archivo
wallet.dat de hace 10 años. La mitad de las veces, el archivo tiene fondos. La mitad
de esas, los fondos son recuperables. Esta guía explica honestamente qué hace nuestro motor sobre
un wallet.dat, por qué la mayoría de servicios fallan con wallets antiguos, y qué necesitás para
saber si tu caso es viable.
Anatomía de un archivo wallet.dat
wallet.dat NO es un archivo de texto cifrado. Es una base de datos
BerkeleyDB (formato BDB 4.8 en versiones legacy, SQLite en Bitcoin Core 0.21+).
Dentro de ese DB hay tres tipos de registros relevantes:
name_*: pares dirección ↔ etiqueta (texto plano, no cifrado)tx_*: transacciones del wallet (parcialmente cifradas — los outputs sí, los inputs públicos no)ckey_*: claves privadas cifradas con AES-256-CBC usando una clave maestra derivada del passwordmkey_*: master key con metadata de derivación (n_iterations, salt, etc) — este es el que atacamos
El truco es que las direcciones públicas son extraíbles sin password. Podés correr
bitcoin-cli dumpwallet contra el archivo (después de copiar a una instancia limpia de
Bitcoin Core) y obtener todas las direcciones, lo que te permite consultar balance en
blockstream.info antes de invertir un dólar en recuperación.
En UnlockFile esto es parte del Diagnóstico USD 35: te decimos si tu wallet tiene fondos antes de cobrarte por el AI Scan completo. Si la wallet está vacía (caso ~30% de los archivos viejos que recibimos), te devolvemos USD 35 menos costo operativo y no perdiste el AI Scan de USD 2.000.
El cifrado: AES-256-CBC + derivación SHA-512
El password que ingresás cuando ponés encryptwallet "miclave" NO se usa directamente
para cifrar. Bitcoin Core hace lo siguiente:
1. Genera salt aleatorio de 8 bytes (almacenado en mkey_)
2. Deriva la clave maestra: SHA-512(password || salt) iterado N veces
- N depende de la versión del software al momento de cifrar
- Bitcoin Core 0.4 - 0.9: N = 25,000 iteraciones (2011-2013)
- Bitcoin Core 0.10 - 0.12: N = 25,000 - 50,000 (2014-2015)
- Bitcoin Core 0.13+: N = 50,000 - 200,000+ (2016+)
- Calibración: cada release calibra N para que tarde ~100ms en
hardware típico de la época
3. Toma los primeros 32 bytes del output como AES-256 key
4. Toma bytes 32-48 como IV
5. Cifra cada private key con AES-256-CBC + esa key/IV
6. Almacena ckey_ = AES-256-CBC(privkey, derived_key, IV)
Esta es la razón por la que cuanto más viejo el wallet, más fácil el brute force: 25.000 iteraciones de SHA-512 son un costo computacional pequeño en una RTX 3090 moderna. Un wallet de 2013 con password razonable podemos atacarlo a millones de intentos por segundo. Un wallet de 2024 con la misma password está en el orden de cientos de miles por segundo — 100x más lento.
Por qué la mayoría de servicios falla con wallets pre-2017
Hay tres categorías de servicios de wallet recovery en el mercado:
1. Servicios "$0 upfront + 20-25%": usan hashcat genérico en cloud GPU
Hashcat tiene módulo -m 11300 para Bitcoin Core wallet.dat. Es un servicio
"best-effort" — corren una RTX 4090 alquilada en RunPod o Vast.ai por unas horas, prueban un
diccionario común + maybe rules, y si no encontraron, abandonan. El cliente no se entera
que abandonaron hasta que pasa un mes sin novedad.
El problema técnico: hashcat genérico no aprovecha pistas no-estándar (year-of-creation, language fingerprints, themes). Y al ser hardware alquilado, cada hora cuesta dinero — el incentivo es abandonar casos difíciles rápido.
2. Servicios "$2k+ upfront": usan custom GPU pipeline
Acá entran KeychainX, ReWallet, Crypto Asset Recovery y nosotros. Tenemos hardware dedicado (no alquilado), kernels CUDA propios optimizados para BTC ECDSA + SHA-512 batch, y los 40 horas que dedicamos al caso son compute real, no quemar tiempo de oficina. La diferencia de throughput vs hashcat: nuestro motor procesa 100M intentos/segundo de SHA-512 en una sola RTX 3090. Hashcat genérico hace 10-15M.
3. "Servicios" que son scams
Te piden que mandes el wallet.dat "para evaluar". Después te chantajean con la
información de tus direcciones, o directamente te roban si lograron crackear y vos no tenés copia
para mover los fondos antes. NUNCA mandes wallet.dat en plain text por email a nadie.
Los servicios serios trabajan con archivo cifrado adicional, NDA digital, y vos movés los fondos
primero antes de cobrar el success fee.
El factor "tamaño del archivo"
Una heurística poco conocida pero útil:
| Tamaño wallet.dat | Probable contenido |
|---|---|
| ~20 KB | Wallet recién creado, sin transacciones |
| 200 KB - 1 MB | Wallet con 5-50 transacciones, posible balance |
| 1 - 5 MB | Wallet con 100+ transacciones, alta probabilidad de balance |
| 5 - 20 MB | Wallet activo durante años, casi certeza de balance significativo |
| 20+ MB | Wallet de exchange viejo o miner, cripto de 5+ figuras probables |
Si tu wallet pesa más de 8 MB y la fecha del archivo es pre-2017, vale 100% pagar el Diagnóstico USD 35. La probabilidad de que tenga fondos es alta y el cifrado es atacable.
Los hints que marcan la diferencia
Sin hints, atacar un password de 10 caracteres alfanuméricos es matemáticamente inviable (10^17 combinaciones a 100M/s = 30 años). Con hints razonables, el espacio se reduce dramáticamente:
- Longitud aproximada: si sabés que era 8-10 chars, eliminás 99% del espacio
- Charset: sólo lowercase + números reduce a 36 chars vs 95 (printable ASCII)
- Idioma: passwords español usan patrones distintos (palabras + año + signo)
- Año de creación: passwords de 2013 raramente incluyen símbolos o uppercase
- Tema: nombre de mascota, fecha de cumpleaños, palabra significativa
- Variantes conocidas: si usabas el mismo pattern para otras passwords
Cuando hacés el AI Scan con nosotros, el LSTM model que tenemos genera variantes plausibles a
partir de tu hint inicial. Por ejemplo, si recordás "algo con bitcoin y mi cumpleaños 1985", el
motor genera: bitcoin1985, Bitcoin1985!, btc85,
1985btc, Btc1985!, etc. Reduce el espacio de búsqueda 100-1000x vs
brute force ciego.
Cuándo NO podemos recuperar (siendo honestos)
- No recordás absolutamente nada de la password: si tu hint es "creo que era español, pero no sé el tema", el espacio es demasiado grande incluso para nuestro cluster
- Password generado por password manager con 24+ chars random: matemáticamente fuera de alcance
- Wallet.dat con encriptación múltiple (alguien lo cifró 2 o 3 veces con passwords distintas)
- Archivo corrupto: BerkeleyDB roto que no podemos parsear (raro, pero pasa con discos viejos)
- Wallet sin password que originalmente NO tenía cifrado pero ahora pide uno: probablemente no es el archivo original
Si tu caso entra en alguna de esas categorías, te lo decimos en el reporte de viabilidad antes de cobrarte el AI Scan completo. El Diagnóstico USD 35 es el filtro.
Comparativa numérica honesta
| Caso | Sin nosotros (DIY) | UnlockFile USD 2.000 |
|---|---|---|
| Wallet 2013, hint razonable, 8 chars | Posible con hashcat + 1 RTX, ~30 días | 3-7 días |
| Wallet 2017, hint vago, 10 chars | Casi imposible sin GPU pro | 10-21 días, 60-70% éxito |
| Wallet 2020, sin hint, 12+ chars | Imposible en lifetime | NO viable, te lo decimos en reporte |
| Wallet 2014, password de password manager | Imposible | NO viable |
| Wallet 2015, hint "nombre de novia + año" | 1-2 meses con hashcat + dictionary | 1-3 días con LSTM variants |
El proceso paso a paso si nos contratás
- Pagás Diagnóstico USD 35: te confirmamos en 24h si la wallet tiene fondos y si es atacable. Si NO es viable, te explicamos por qué.
- Si decidís avanzar, pagás AI Scan USD 2.000: corremos 40h de cluster GPU dedicado con tus hints. Te entregamos reporte técnico detallado.
- Si encontramos password, te la enviamos cifrada: vos abrís el wallet en una instancia limpia de Bitcoin Core, transferís los fondos a una nueva wallet tuya.
- Una vez confirmás recepción de fondos, facturamos success fee 30-40%: sale de los fondos recuperados, no de tu bolsillo previo.
Si querés empezar, empezá por la página principal de Wallet Recovery o iniciá directo con el Diagnóstico de USD 35 (te lo descontamos del AI Scan si avanzás).