Hola.
Hace un par de días me encontré con esta web:
Take Bobby's Bitcoin.
Bobby Lee propone dos retos hacking con una recompensa de 1 BTC cada uno.
Los retos son sobre sus tarjetas con carteras en frio.
RETO #1Se trata de encontrar la contraseña de una cartera en frio cuya clave privada BIP38 es conocida.
La contraseña es de la siguiente forma: “XXXX-XXXX-XXXX-XXXX-XXXX”, siendo cada “X” un carácter que puede ser un número o una letra mayúscula del alfabeto inglés.
No se me ocurre otra forma de resolver el reto, que por fuerza fruta.
Son: 10 números + 26 letras = 36 posibilidades en cada “X”; como hay 20 “X”, en total son 36^20 posibles combinaciones. Un número demasiado grande, en mi opinión, para poder aspirar a tener éxito.
Por lo tanto, este primer reto queda descartado por mi parte.
RETO #2Se trata de encontrar la clave privada BIP38 de una segunda cartera, conocidas la contraseña y el código de confirmación.
El código de confirmación es un código que sirve para comprobar que la cartera en frío tiene la contraseña especificada.
Según especificaciones, mediante los códigos de confirmación no se pueden obtener las claves privadas.
Veamos...
La web para comprobar la contraseña con el código de confirmación es la siguiente:
https://www.balletcrypto.org/#/Tras introducir contraseña y código de confirmación, efectivamente, nos dice que es correcta.
Además de eso, nos da la clave pública y las direcciones Bitcoin de la cartera.
Yo me quedo con la duda, si internamente, esta página, no maneja alguna variable con el valor de “CLAVE PRIVADA” en alguno de sus formatos.
Según especificaciones, no debería.
Si se pueden obtener las claves púbicas desde los códigos de confirmación sin pasar por las claves privadas, estaremos perdiendo el tiempo, pero podemos probar suerte...
Lo primero que he hecho es descargar la página a mi ordenador. Es sólo un archivo y funciona perfectamente sin conexión a Internet.
Ahora, podré hacer todas las modificaciones que quiera en ese archivo para intentar encontrar la variable, si la hay, que almacena el valor de “Calve Privada”.
Lamentablemente el archivo está ofuscado; pero abriéndolo con el “Block de notas” de Windows, y con mucha imaginación, puede intuirse “algo”.
Lo primero es colocar la instrucción
“alert(nombredevariable)” en algún sitio que nos parezca apropiado para que, al cargar la página, nos aparezca la alerta con el valor de la variable “nombredevariable”.
Yo lo he puesto aquí: <...>currencies and deposit addresses are listed below."
,alert(nombredevariable)),In&&a.a.<...>, (con una coma delante).
Bien... Ahora tendremos que buscar las variables que puedan contener el valor de la clave privada y sustituir “nombredevariable” por el de la variable en cuestión.
Buscando, con el Block de notas, en el archivo, las cadenas de caracteres “privateKey” hay muuuuuchísimas.
Yo he estado probando estos dos días pero no he tenido suerte.
He encontrado que, por ejemplo, con la variable “y”, la alerta nos devuelve el valor de la clave pública.
![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fwww.edicionesma40.com%2Fdownloads%2Falertaclavepublica.jpg&t=665&c=sBf0FhOvEA1LdA)
Con la variable “l” (ele minúscula), nos devuelve el código de confirmación.
![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fwww.edicionesma40.com%2Fdownloads%2Falertacodigodeconfirmacion.jpg&t=665&c=hnSvaEdZSNHsNA)
Con la variable “r”, nos devuelve la contraseña.
![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fwww.edicionesma40.com%2Fdownloads%2Falertacontrasena.jpg&t=665&c=5iE4qkKU1fyv_g)
Con la variable “W”, nos devuelve la dirección Bitcoin. Con “K”, otra dirección Bitcoin, etc., etc., etc. Así un par de días hasta que me he rendido.
En fin... Si alguien quiere probar y continuar por este camino, ya tiene dados los primeros pasos.
Un saludo y suerte.