Сброс закрытых ключей из wallet.dat из командной строки (альтернативы pywallet.py)

У меня где-то на жестком диске есть несколько копий старых кошельков, которые мне нужно проанализировать.

Моя идея состояла в том, чтобы импортировать их в blockchain.info, но для этого, по-видимому, вам нужно сбросить их с помощью pywallet.py, который является одним из худших программ, с которыми я недавно сталкивался.

Есть ли альтернатива?

Т.е. либо одно программное обеспечение, которое задает (через командную строку) полный путь к файлу , будет выгружать что-то, что может импортировать blockchain.info, либо что-то, что, по крайней мере, с учетом кошелька (опять же, полный путь через командную строку), выгружает все приватные ключи.

PS: это должно работать и для зашифрованных кошельков, запрашивая пароль либо во время выполнения (было бы лучше), либо в командной строке.

Извините, я не могу ответить, но мне также интересно узнать, какие другие варианты доступны для управления кошельком. Я мог бы предложить изменить название вопроса на что-то другое, поскольку я думал, что речь пойдет о том, как найти файл wallet.dat на вашем компьютере. Может быть, «Варианты управления программным обеспечением кошелька/адреса?» или что-то вроде того. Я бы отредактировал сам, но не был уверен, на что это изменить.

Ответы (7)

Это старый вопрос, но просто для того, чтобы сказать, что команда dumpwallet была добавлена ​​​​в ядро ​​биткойнов. Это даст вам все закрытые ключи в текстовом формате.

  1. «Как я и думал, это так не работает. Он хочет полную директорию с базами данных, одного wallet.dat недостаточно. — Лохорис вчера» Вовсе нет... Wallet.dat — единственный файл, который читает
  2. Если вы заметили ошибку, лучше сообщить об этом разработчику, а не ругать его.
  3. То же самое с новыми флагами, которые вам могут понадобиться: спрашивайте их, а не жалуйтесь на их отсутствие.

https://bitcointalk.org/index.php?topic=34028.180 Я также могу предоставить адрес электронной почты, если у вас нет учетной записи bitcointalk.

Ой, извините, я предполагал, что это было незащищенным. Тогда я как следует отчитаюсь на github позже.

Ненавижу быть таким парнем, но вам стоит еще раз взглянуть на pywallet. Ваши проблемы могут быть связаны с pywallet Йорика, который давно не обновлялся. Существует улучшенный форк pywallet от JackJack.
Если вы уже сталкивались с этой версией, вы всегда можете попробовать веб-интерфейс, запустив: ./pywallet.py --webи затем перейдя на localhost:8989/ в веб-браузере.
Однако вы запросили способ командной строки сделать это, что с pywallet jackjack будет выглядеть так:
./pywallet.py --dumpwallet --datadir=DATADIR --wallet=WALLETFILE --passphrase=PASSPHRASE
Возможно --passphrase, этот вариант был проблемой, с которой вы столкнулись с pywallet, поскольку он необходим для работы с зашифрованными кошельками, но его нет в ридми _(не совсем уверен, почему это так).
В любом случае, pywallet действительно кажется вам лучшим выбором для того, что вы пытаетесь сделать. Если у вас возникли проблемы с его использованием, не стесняйтесь включать информацию об этих проблемах.

--walletи --datadirне работают: они ожидают, что вы предоставите полный каталог данных, а у меня есть только файл wallet.dat. (и да, я использую версию ДжекДжека)
Я просто смог сбросить файл wallet.dat, используя ./pywallet.py --dumpwallet --datadir=/mywalletfilefolderпапку mywallerfilefolder wallet.dat. Возможно, проблема в шифровании? Какой результат вы получите, когда попробуете?
По-видимому, я просто предположил, что pywallet по какой-то причине требует полного каталога данных. Вместо этого просто глупо требовать два разных параметра для каталога и для имени кошелька.
Как я и думал, это так не работает. Ему нужен полный каталог с базами данных, одного wallet.datнедостаточно.
хм. Мне не нужны были никакие другие файлы, чтобы сделать это.
Нравится этот --web интерфейс. Раньше у меня был очень плохой опыт работы с pywallet, но, похоже, он стал более зрелым. Однако я до сих пор не знаю, как получить закрытые ключи. У меня есть зашифрованный_приватный ключ и «секрет» в моем выводе, но где, черт возьми, незашифрованный закрытый ключ?

Кроме того, я не понимаю вашей проблемы с PyWaller, как предлагает Эяль, вы также можете использовать для этого стандартное программное обеспечение Биткойн, хотя этот метод займет немного больше времени.

Я предлагаю сделать следующее для каждого wallet.datфайла, который у вас есть:

  1. Сделайте резервную копию вашего текущего wallet.datфайла.
  2. Скопируйте старый wallet.datв свой каталог биткойнов.
  3. Откройте терминал и запустите демон bitcoind:

    bitcoind -daemon

  4. Получите список всех адресов в кошельке:

    bitcoind listaddressgroupings

  5. Для каждого адреса, с которого вы хотите получить закрытый ключ, выгрузите его:

    bitcoind dumpprivkey <bitcoinaddress>

  6. Перед изменением файла wallet.dat остановите демон:

    bitcoind stop

Это должно дать вам все необходимые закрытые ключи, и вы можете импортировать их в любой кошелек, какой захотите.

Это ужасно отнимает время, именно этого я и стараюсь не делать.
Сколько файлов кошелька у вас есть? Если вы хотите сэкономить время, вы всегда можете использовать PyWallet...
Нет, потому что pywallet не использует полный путь в качестве входных данных, т.е. мне все равно придется перемещать wallet.dat, чего я стараюсь избегать в первую очередь. Обратите внимание, что он делает вид , что может указать путь, но на самом деле это не работает: ему нужен путь для всего .bitcoindкаталога, а у меня просто есть файл wallet.dat.
С небольшим изменением кода вы могли бы изменить это...
Пробовал, полная лажа, никогда такого не видел.
некоторые кошельки альткойнов QT используют старую кодовую базу, поэтому дампвалет даже не работает. Мне пришлось использовать dumpprivkey, поэтому я ценю эти шаги как обходной путь. dumpwallet — моя предпочтительная команда, но иногда это не вариант.

Как было предложено другим ответом. Вы можете использовать pywallet просто отлично. Поскольку вам требуется дамп многих кошельков и вам нужно решение CLI, то простой скрипт bash + pywallet подойдет как нельзя лучше.

Это никоим образом не проверено (т.е. резервное копирование всех задействованных кошельков), но должно работать нормально:

Баш

#!/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

Пакет (не моя сильная сторона)

@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%

Кроме того, если вы хотите изолировать какую-либо информацию в самом дампе JSON, вы, безусловно, можете это сделать. Я не совсем уверен в ожидаемом результате, --dumpwalletпоскольку я не являюсь пользователем pywallet, но я считаю, что вы можете отредактировать код pywallet.py, чтобы изменить

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

к

print "\n".join(private_keys)

В заключение, выполнение этих двух действий приведет к выводу длинного списка всех закрытых ключей ко всем адресам ко всем файлам кошелька.

Отказ от ответственности - еще раз, я не тестировал ничего из этого

См. мой ответ 7anner: pywallet глуп и не может обработать wallet.datфайл, если он не находится в каталоге с базой данных биткойнов.
  1. Запустите pywallet.py ДжекДжека:

    $ python2.7 pywallet.py --dumpwallet --datadir=/tmp | \
    grep addr | sort | uniq | awk -F'"' '{print $4}' > \
    ~/tmp/wallet_dump.txt
    
  2. Получите балансы из отчетов по каждому адресу с помощью скрипта парсинга:

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

пример результатов:

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

ссылки:

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

Если кошельков меньше 10, просто скопируйте их в каталог конфигурации bitcoin-qt по одному и перенесите все биткойны в новый кошелек. Это займет у вас около 10 минут, чтобы сделать это.

Это совершенно бесполезно: очевидно , я мог бы сделать это вручную, весь смысл этого вопроса в том, чтобы этого не делать.