Cartera de bitcoin antigua dañada. !!!archivo desconocido tiene LSN!

Tengo una billetera de bitcoin NO CIFRADA corrupta de 2013.

lo que he intentado hasta ahora con ambas billeteras:

1, con la versión antigua y nueva del cliente bitcoin, la billetera simplemente crea un archivo .bak y no muestra ningún monto/transacción.

2, también pruebo bitcoin-qt.exe -salvagewallet - que está creando un tiempo de bak + epoch. y el db.log diciendo

archivo desconocido tiene LSN 91/5547280, pasado el final del registro en 1/1042 Comúnmente causado al mover una base de datos de un entorno de base de datos a otro sin borrar los LSN de la base de datos, o al eliminar todos los archivos de registro de un entorno de base de datos wallet.dat. 1608587747.bak: DB_VERIFY_BAD: Falló la verificación de la base de datos

3, pywallet se instaló correctamente y funciona bien en ubuntu para mí con diferentes billeteras que no están dañadas (descargando todos los datos bien) pero cuando trato de descargar el corrupto una vez python2 pywallet.py --dumpwallet --datadir=./ estoy obteniendo el "ERROR:root:No se pudo abrir wallet.dat/main. Intente salir de Bitcoin y ejecutar esto nuevamente".

4, probé python2 dbdump.py --wallet --wallet-tx --datadir=./ (obteniendo "ERROR:root:Couldn't open wallet.dat/main. Intente salir de Bitcoin y ejecutar esto nuevamente". )

Me quedé sin cosas ahora, ¿cómo profundizo más en esto para obtener esas claves y direcciones privadas?

Si alguno de ustedes puede ayudarme con éxito, se emitirá una recompensa con seguridad.

Sin ver el archivo de la billetera, realmente no hay forma de saber cuál es el problema y cómo salvarlo. Francamente, cualquier solución de recuperación automática no será suficiente porque hay muchas cosas posibles que podrían haber salido mal para corromper el archivo de la billetera.
bueno, esta es la cosa, estoy pidiendo consejo sobre cómo averiguar qué tiene de malo. Cualquier herramienta o recomendación de technik. Creo que entiendes que enviar una billetera sin cifrar no es una opción.

Respuestas (2)

Una técnica con la que he tenido éxito en el pasado:

db5.3_dump corrupted_wallet.dat | db5.3_cargar fresh_wallet.dat

(obviamente, reemplazando corrupted_wallet.datcon el nombre de archivo real y haciendo una copia de seguridad primero).

y luego tratando de cargar fresh_wallet.daten un Bitcoin Core moderno

Estas herramientas están en el paquete de Ubuntu db5.3-util.

Nota: necesitará un Bitcoin Core compilado contra libdb5.3++-dev para abrir este archivo (ya que usará BDB 5.3, mientras que las compilaciones de lanzamiento usan BDB 4.8). Puede hacer el equivalente y simplemente usar las herramientas BDB 4.8 en todas partes, pero son más difíciles de encontrar.

¿Cómo profundizo más en esto para obtener esas claves y direcciones privadas?

Bueno, el proceso básico con el que comenzaría sería

  • No use la computadora que contiene el archivo dañado
  • Use un USB de arranque para hacer una copia del archivo en un medio externo
  • Bloquee la computadora hasta que haya reparado el archivo o extraído las claves en una computadora nueva
  • haga copias del archivo dañado y trabaje solo en esas copias.
  • guarde algunas copias inalteradas en algunos lugares seguros.
  • hacer un volcado hexadecimal del archivo wallet.dat
  • estudiar el formato de archivo definido utilizado por el núcleo de Bitcoin en 2013
    • tal vez buscando documentación del formato de archivo.
    • tal vez estudiando la fuente de PyWallet.
    • tal vez obteniendo un conjunto de 2013 del código fuente de Bitcoin-core de GitHub.
  • compare el formato de archivo definido con un volcado hexadecimal de una billetera en funcionamiento.dat de 2013
  • realice pequeños cambios en un wallet.dat de 2013 que funcione, realice nuevos volcados hexadecimales y estudie las diferencias.
  • compare el formato de archivo definido con un volcado hexadecimal de su wallet.dat dañado
  • intentar reparar
  • realizar algún proceso de recuperación forense de todos los datos en el espacio no asignado en una copia bit a bit de los discos duros de la computadora original o equivalentes. Repita el proceso en los datos para tratar de identificar fragmentos de datos de wallet.dat.

Esto sería un trabajo lento y difícil. Encontrará diferencias que no tienen sentido y es posible que deba inventar nuevos contenidos para insertar y también decidir qué partes eliminar. Es posible que necesite encontrar herramientas, o crear herramientas, que le permitan realizar los cambios en una copia de wallet.dat para repararlo. O puede identificar las claves privadas en el volcado hexadecimal y simplemente extraerlas.

Si la billetera contiene una pequeña cantidad, no me molestaría. Si contiene una cantidad equivalente al salario de un año, digamos, entonces, en su lugar, probablemente pasaría algo de tiempo en esto.


No hay forma segura de que alguien más trabaje en esto. Es fácil para un extraño decir que no encontró nada y marcharse con el dinero de su billetera. Es fácil para los estafadores ganarse lentamente su confianza hasta que les pague varios honorarios por trabajar en esto para usted.

El archivo Wallet.dat siempre ha sido BDB (LevelDB solo se usa para la base de datos de bloque/chainstate). Bitcoin Core 0.21.0 agrega una opción experimental para archivos de billetera SQLite, pero sigue siendo compatible con todos los archivos wallet.dat basados ​​en BDB hasta donde sabemos.
@Pieter, gracias, actualizado en consecuencia (se eliminó la mención de LevelDB)