Recuperación de los últimos dígitos de una clave privada de Litecoin

¿Es posible recuperar los últimos dígitos perdidos (10) de la clave privada de mi billetera Litecoin? ¿Existen herramientas de recuperación disponibles? ¿O tendré que intentar rodar el mío? Crucialmente, ¿contra qué función criptográfica estaré trabajando?

Entiendo que un espacio de claves de 10 caracteres alfanuméricos superior/inferior es efectivamente imposible de descifrar, pero esta clave estaba en formato de importación de billetera, que entiendo que incorpora cierta redundancia/detección de errores a la verificación del número de tarjeta de crédito MOD10. Me pregunto si 10 caracteres de la clave privada perdida se pueden recuperar en un período de tiempo razonable.

Historia previa: cuando 'guardé' apresuradamente mi par de claves liteaddress.org como un PDF usando Chrome, se recortaron 10 caracteres de la clave privada. En realidad, parecía que faltaban unos 15 caracteres que se recortaron, pero una herramienta de recuperación de PDF reveló algunos de los caracteres ocultos. No me di cuenta de esto en ese momento, y pagué en la billetera.

Mi billetera perdida contiene las ganancias de la mayor parte de mi minería hasta la fecha. No es una gran cantidad de dinero, pero sería una pena desperdiciarlo.

Soy consciente de que todo esto suena extremadamente dudoso. Como testimonio del hecho de que busco recuperar mi propia clave y no la de otra persona, estoy feliz de usar mi nombre real/perfil principal de Stack Exchange para hacer esta pregunta.

Acabo de pasar una hora y media tratando de recuperar la clave privada de una dirección recortada... Me rendí frustrado. Si logra recuperar su clave, explique los pasos que siguió para hacerlo. Estos podrían ayudar: LiteAddress , wiki WIF (anteponga 0xB0 en lugar de 0x80 para Litecoin), wiki de codificación Base58Check, codificador Base58Check , convertidor de números

Respuestas (1)

En primer lugar: no conozco ninguna herramienta de recuperación (pero tampoco las busqué en Google). Lo que explicaré es la dificultad para adivinar la dirección correcta.

El formato de importación de billetera tiene 4 bytes de datos de suma de verificación. Son 8 caracteres. Por lo tanto, perder los últimos 4 bytes o parte de ellos solo pierde/disminuye su capacidad para verificar errores de escritura en la parte importante de la instancia de formato de importación de billetera.

8 caracteres en base58 (que es lo que usa el formato de importación de la billetera) es log_2(58^8) bit = 46.86 bit. Reste los 4 bytes de datos redundantes de esto y sabrá que tiene que adivinar 14,86 bits (idealizado (no funcionará)). Entonces, después de 2^14.86 = 29'738 intentos, lo tienes seguro y estocásticamente, la expectativa es de 14.869 intentos. Eso es completamente factible (incluso no idealizado).

Todo lo que tienes después de adivinar es la llamada clave extendida. Eso es suficiente para derivar su clave privada (que es lo que necesita para enviar dinero) (solo suelte el primer byte).

Si lo necesita en formato de importación de billetera, después de adivinar, debe codificar la clave extendida usando sha256, tomar los primeros 4 bytes (8 caracteres en notación hexadecimal, nuevamente) y agregarlos a la clave extendida.

Pero hay clases que te dan la clave pública si ingresas la clave privada. Y casi lo consigues. Probablemente también obtuviste la clave pública correspondiente. Por lo tanto, necesita escribir una secuencia de comandos que pruebe todas las claves privadas posibles, calcule las claves públicas para ellas y las verifique con la clave pública que ingresa en la secuencia de comandos. Probablemente sea mucho más rápido que averiguar si hay fondos en la billetera.