Volcar claves privadas de wallet.dat desde la línea de comando (alternativas de pywallet.py)

Tengo en algún lugar de mis discos duros algunas copias de billeteras antiguas que necesito analizar.

Mi idea era importarlos a blockchain.info, pero para hacer eso aparentemente necesitas descargarlos con pywallet.py, que es una de las peores piezas de software que he tenido en mis manos recientemente.

¿Hay alguna alternativa?

Es decir, un software que proporcione (a través de la línea de comandos) la ruta completa del archivo , volcará algo que blockchain.info puede importar, o algo que al menos le dé una billetera (nuevamente, la ruta completa a través de la línea de comandos) volcará todo el privado llaves.

PD: esto también tiene que funcionar para billeteras encriptadas, solicitando la contraseña en tiempo de ejecución (sería mejor) o en la línea de comando.

Lo siento, no puedo responder, pero también estoy interesado en saber qué otras opciones están disponibles para la gestión de carteras. Podría sugerir cambiar el título de la pregunta a otra cosa, ya que pensé que se trataría de cómo encontrar el archivo wallet.dat en su computadora. Tal vez "¿Opciones de administración de software de billetera/dirección?" o algo así. Me habría editado a mí mismo, pero no estaba seguro de qué cambiarlo.

Respuestas (7)

Esta es una vieja pregunta, pero solo para decir que el comando dumpwallet se ha agregado al núcleo de bitcoin. Esto le dará todas las claves privadas en formato de texto.

  1. "Como pensé, no funciona de esa manera. Quiere un directorio completo con las bases de datos, un solo wallet.dat no es suficiente. – Lohoris ayer" Para nada... Wallet.dat es el único archivo que pywallet lee
  2. Si nota un error, es bastante bueno informarlo al desarrollador en lugar de criticarlo.
  3. Lo mismo para las nuevas banderas que desee: pídalas en lugar de quejarse de su ausencia

https://bitcointalk.org/index.php?topic=34028.180 También puedo proporcionar una dirección de correo electrónico si no tiene una cuenta de bitcointalk

Oh, lo siento, supuse que no tenía mantenimiento. Informaré adecuadamente en github más tarde, entonces.

Odio ser ese tipo, pero realmente deberías echar otro vistazo a pywallet. Sus problemas pueden ser específicos del pywallet de Joric, que no ha sido actualizado por un tiempo. Hay una bifurcación de pywallet mejor mantenida por JackJack.
Si esta era la versión que ya experimentaste, siempre puedes probar la interfaz web ejecutando: ./pywallet.py --weby luego navegando a localhost:8989/ en un navegador web.
Sin embargo, solicitó una forma de línea de comandos para hacerlo, que con el pywallet de jackjack se vería así:
./pywallet.py --dumpwallet --datadir=DATADIR --wallet=WALLETFILE --passphrase=PASSPHRASE
la --passphraseopción puede haber sido el problema que encontró con pywallet, ya que es necesario para manejar billeteras encriptadas, pero no está en el archivo Léame(No estoy muy seguro de por qué es eso).
De todos modos, pywallet realmente parece ser su mejor opción para lo que está tratando de hacer. Si tiene problemas para usarlo, no dude en incluir información sobre estos problemas.

--wallety --datadirno funcionan: esperan que proporcione un directorio de datos completo, mientras que solo tengo el archivo wallet.dat. (y sí, estoy usando la versión de JackJack)
Solo pude volcar un archivo wallet.dat usando ./pywallet.py --dumpwallet --datadir=/mywalletfilefolderdonde mywallerfilefolder tenía un wallet.dat. ¿Es posiblemente el cifrado el problema? ¿Qué resultado obtienes cuando lo intentas?
Aparentemente, asumí que pywallet por alguna razón requería un directorio de datos completo. En cambio, es tan tonto requerir dos parámetros diferentes para el directorio y para el nombre de la billetera.
Como pensaba, no funciona de esa manera. Quiere un directorio completo con las bases de datos, uno solo wallet.datno es suficiente.
eh. No necesité ningún otro archivo para hacerlo.
Me encanta esa interfaz web. También tuve una muy mala experiencia con pywallet antes, pero parece que esto se ha vuelto mucho más maduro. Sin embargo, todavía no sé cómo obtener las claves privadas. Tengo la clave privada cifrada y el "secreto" en mi salida, pero ¿dónde diablos está la clave privada sin cifrar?

Además de eso, no entiendo su problema con PyWaller, como sugiere Eyal, también puede usar el software estándar de Bitcoin para esto, aunque este método llevará un poco más de tiempo.

Sugiero hacer lo siguiente para cada wallet.datarchivo que tenga:

  1. Copia de seguridad de su wallet.datarchivo actual.
  2. Copie el antiguo wallet.daten su directorio de Bitcoin.
  3. Abra una terminal y ejecute el demonio bitcoind:

    bitcoind -daemon

  4. Recupere una lista de todas las direcciones en la billetera:

    bitcoind listaddressgroupings

  5. Para cada dirección de la que desee la clave privada, descárguela:

    bitcoind dumpprivkey <bitcoinaddress>

  6. Detenga el demonio antes de cambiar el archivo wallet.dat:

    bitcoind stop

Esto debería darle todas las claves privadas que necesita y puede importarlas a cualquier billetera que desee.

Esto es terriblemente lento, eso es exactamente lo que estoy tratando de no hacer.
¿Cuántos archivos de billetera tienes entonces? Si quieres ahorrar tiempo, siempre puedes usar PyWallet...
No, porque pywallet no toma una ruta completa como entrada, es decir, tendría que moverla de wallet.dattodos modos, que es lo que estoy tratando de evitar en primer lugar. Tenga en cuenta que finge poder dar una ruta, pero en realidad no funciona: él quiere una ruta para un .bitcoinddirectorio completo, mientras que yo solo tengo el archivo wallet.dat.
Con un pequeño cambio en el código podrías haber cambiado eso...
Lo intenté, es un completo desastre, nunca había visto algo así.
Algunas billeteras QT de altcoin usan una base de código antigua, por lo que dumpwallet ni siquiera funciona. Tuve que usar dumpprivkey, por lo que aprecio estos pasos como solución. dumpwallet es mi comando preferido, pero a veces no es una opción.

Como sugiere la otra respuesta. Puedes usar pywallet muy bien. Dado que necesita descargar muchas billeteras y le gustaría una solución CLI, entonces un simple script bash + pywallet funcionará bien.

Esto no está probado de ninguna manera (es decir, haga una copia de seguridad de todas las billeteras involucradas), pero debería funcionar bien:

Intento

#!/bin/bash

echo "Enter directory with all the wallet *.dat files live:"
read walletdir
echo "Enter passphrases for all the encrypted wallets in directory:"
read passphrase

for i in $walletdir/*.dat; do
    pywallet.py --dumpwallet --datadir=$walletdir --wallet=$i --passphrase=$passphrase
done

Lote (no es mi lado fuerte)

@echo off
set /p walletdir=Wallet directory?:
set /p passphrase=Passphrase?:

for /r %%i in (*) do pywallet.py --dumpwallet --datadir=%walletdir% --wallet=%%i --passphrase=%passphrase%

Además, si desea aislar cualquier información dentro del volcado JSON, seguramente también puede hacerlo. No estoy exactamente seguro de la salida anticipada, --dumpwalletya que no soy un usuario de pywallet, pero creo que puede editar el código pywallet.py para cambiar

print json.dumps(json_db, sort_keys=True, indent=4)

a

print "\n".join(private_keys)

En conclusión, hacer esas 2 cosas imprimirá una larga lista de todas las claves privadas de todas las direcciones de todos los archivos de la billetera.

Descargo de responsabilidad: una vez más, no he probado nada de esto

Vea mi respuesta a 7anner: pywallet es estúpido y no puede procesar un wallet.datarchivo si no está ubicado en un directorio con la base de datos de bitcoin.
  1. Ejecute el pywallet.py de JackJack:

    $ python2.7 pywallet.py --dumpwallet --datadir=/tmp | \
    grep addr | sort | uniq | awk -F'"' '{print $4}' > \
    ~/tmp/wallet_dump.txt
    
  2. Obtenga saldos de informes para cada dirección usando un script de web-scraping:

    $ python3 addrep.py ~/tmp/wallet_dump.txt
    

resultados de ejemplo:

121a2C6kbqaPDrRDsbfZFNafcLBDZMum3p: 0 BTC
129oeaukHtXR8xiPqV8Mnb7p6hs9Ev3VwX: 0 BTC
12F9DRQRw2wmGrFUiZRQFk9cG2NtEBxYDv: 0 BTC
137wgZG4TSNw7Zqt4WrEHS7w2bgfeqXkkZ: 0 BTC
13PNjSy4b372f2jMVrHHLZnXXqgAArhwD8: 0 BTC

referencias:

https://github.com/jackjack-jj/pywallet/blob/master/pywallet.py https://github.com/joshuaburkhart/pywallet/blob/master/addrep.py

Si son menos de 10 monederos, simplemente cópielos en el directorio de configuración de bitcoin-qt uno a la vez y transfiera todos los bitcoins a un nuevo monedero. Tardarías unos 10 minutos en hacerlo.

Esto no es útil en absoluto: obviamente podría hacerlo a mano, el objetivo de esta pregunta es evitar hacer eso.