Averiguamos una contraseña de Bitcoin wallet.dat en 2 minutos - Keychainx - Recuperamos criptoactivos perdidos
15.05.2021
KeychainX

Averiguamos una contraseña de Bitcoin wallet.dat en 2 minutos

 

Un famoso director de cine me dijo una vez: “Rodar una película es sólo el 10% del trabajo, el otro 90% es la preparación”. Eso me vino a la mente hace poco.

Miércoles. 8.55 pm

Recibí una solicitud para averiguar la contraseña de una cartera de Bitcoin Core. Le respondí inmediatamente que estaría encantado de ayudarle. No obtuve respuesta hasta el día siguiente.

Jueves por la tarde. 2.04 pm

Estaba en nuestra casa de verano con mi gato, volviendo a la ciudad después de un breve descanso cuando su respuesta llegó a mi bandeja de entrada. Como siempre, respondí con cortesía los pasos necesarios, etc. incluyendo en el email la petición de enviarme el importe y/o la dirección pública antes de empezar, para asegurarnos de que la cartera no era robada o falsa (últimamente es algo que ocurre mucho)

Jueves por la tarde 3.44 pm

El señor de Nueva York me envió la información que le pedí. Mientras conducía el coche con la lluvia cayendo a cántaros y con mi gato visiblemente incómodo por los rayos, el correo electrónico que me mandó decía “¿puedes llamarme ahora?”.

Paré el coche en medio de la nada, inicié sesión en Skype e hice la llamada.

El comerciante neoyorquino tenía una pequeña fortuna de Bitcoin guardada desde 2017 en un monedero de Bitcoin Core. Su primera pregunta fue si no bloquearía su número una vez que abriera su cartera.

“Claro que lo haré”, pensé sonriendo, pero luego me recompuse y le contesté: “No, no lo haría, somos una entidad constituida con sede en Estados Unidos, no un servicio anónimo de dudosa fiabilidad”. Le expliqué que, aunque otros servicios de recuperación de contraseñas lleven más tiempo funcionando, son anónimos o simplemente una operación de garaje. Nosotros, a diferencia de ellos, estamos constituidos en Delaware, EE.UU., y contamos con destacados inversores, aparte de tener una patente pendiente en la USPTO.

Dicho esto, me preguntó si le enviaríamos un contrato, y me dijo que le gustaría que firmara y acordara los términos antes de empezar. Le expliqué que todavía estaba en el coche, así que tendríamos que seguir con esta conversación en unas horas. Me las arreglé para enviarle el contrato desde mi móvil para que pudiera revisarlo mientras yo conducía.

Jueves noche 10.50pm

Llegué tarde a casa, y todavía no había oído nada más de él, así que pensé, “Oh, bueno, habrá cambiado de opinión” y me fui a dormir. Una hora más tarde (en Nueva York son 6 horas menos que aquí) sonó mi teléfono. Recibí un correo electrónico con el contrato firmado y pidiéndome que le llamara. Me pedía que extrajera la cartera de su ordenador, ya que no sabía cómo localizarla. (Bitcoin Core utiliza una carpeta oculta donde se almacena la cartera encriptada)

Nos conectamos a través de Teamviewer y al cabo de un minuto ya habíamos localizado su cartera.

Jueves por la noche 11:15pm

Para el paso final, le pedí las pistas. Me dio una lista de palabras, de la cual no sabía cual era el orden, y algunas de ellas estaban mal escritas. También me sugirió que podría haber espacios entre las palabras y o letras minúsculas / mayúsculas.

Jueves por la noche 11:35pm. Comenzamos con la recuperación de la contraseña.

Al tener esas pistas creé rápidamente un pequeño script en python que fusionaba las pistas en todo tipo de combinaciones diferentes en mi portátil. Sus pistas eran una combinación de 6-8 palabras seguidas que usó como frase de contraseña de la cartera. Normalmente me conectaba a los servidores de la empresa a través de una VPN segura, pero decidí probar suerte con un portátil reforzado con NVIDIA. (Una NVIDIA es una GPU que te permite descifrar contraseñas miles o incluso millones de veces más rápido que usando la CPU en circunstancias específicas, como con carteras de Bitcoin).


Un chip NVIDIA RTX 2080

Jueves por la noche 11:36pm.

El primer intento (el algoritmo junto con las pistas) creó demasiadas combinaciones, ya que había muchas variaciones, incluyendo las palabras mal escritas. Tardaría días en hacerlo. Entonces, en un arrebato de intuición, minimicé las variaciones y pulsé enter.

Jueves por la noche 11:37pm. CONTRASEÑA ENCONTRADA.

¡BOOM! Mi script encontró la frase de acceso a la cartera de Bitcoin Core a los dos minutos de empezar a codificar mi primer script.

Como de costumbre, le envié un correo electrónico diciendo que habíamos encontrado la frase de contraseña y le pregunté dónde quería que transfiriera su parte de los fondos. Lo que hago habitualmente es, una vez abierto el monedero, muevo mi % del valor de la cartera y luego el resto a la dirección de la cartera que nos dé el cliente. Recibí una dirección en cuestión de minutos y saqué el resto de los fondos de la cartera.

Después de recibir la confirmación de que la cartera se había vaciado, me llamó por teléfono nuestro cliente preguntando si podía retractarse de la transacción. Le dije que “NO”, ya que no hay posibilidad de revertir transacciones en blockchain.

Me explicó que creía haberme enviado la dirección equivocada, ya que su cuenta de Coinbase mostraba una dirección diferente a la última vez que lo comprobó. Intenté calmarle, explicándole que lo más probable es que se tratara de una cartera HD que creaba una nueva dirección cada vez que se solicitaban fondos. Eso es común en muchas carteras o servicios como opción de seguridad.

Le dije que se tranquilizara y esperara, que probablemente necesitara más de una confirmación en la cadena de bloques.

Pareció calmarse un poco y esperamos juntos a que la Red Bitcoin confirmara la transacción y finalmente los fondos aparecieron en su cuenta de Coinbase.

Mientras que nos llevó más de un día discutir nuestra línea de acción a la hora de recuperar la contraseña, la aproximación final para encontrarla nos llevó apenas 2 minutos, tal y como predijo mi amigo el director de cine…

LECCIÓN APRENDIDA

Preparar un algoritmo con buenas pistas es el trabajo más importante. No te asustes si la dirección de tu cartera cambia usando un servicio como Coinbase. Simplemente crean nuevas direcciones cada vez que solicitas fondos.