Как запустить Биткоин кошелек из командной строки

В начале 2012 года я впервые услышал о крипто валюте Bitcon. Сразу было решено — майнингу быть. Зарегистрировался на mining.bitcoin.cz и начал майнить. Везде где читал про Bitcoin авторы настойчиво рекомендовали шифровать кошелек. Хакеры, спецслужбы, вирусы и т.д. все норовят стянуть ваш wallet.dat. Вот и я поддался и решил зашифровать свой. Процесс шифрования происходил поздно вечером, спустя пару дней после начала майнинга и в состоянии небольшого алкогольного опьянения. Итак прошло 3 месяца до того момента когда я решил первый раз воспользоваться намайненым и каково же было мое удивления когда ни один из паролей которыми я пользовался не подошел. Срочно был создан новый wallet.dat без пароля а этот отложен до лучших времен. Я надеялся что с течением распространения Bitcoin найдутся «добрые» люди который напишут взломщик кошелька и я восстановлю свой пароль. Но время шло и такого решения все не было хотя в Интернете было множество постов на форумах с призывами о помощи восстановления забытых паролей, когда человек знал свой пароль но мог ошибиться в нескольких символах в нескольких местах.

Было принято решение писать подборщик паролей самому. В одном из сообщений на форуме bitcointalk.org/index.php?topic=85495.0;all я наткнулся на ruby скрипт который перебирает пароли для открытия кошелька. Разобравшись в коде выяснилось что алгоритм очень прост.

Далее я буду описывать что и как делал я, но поняв суть процесса написать свой подборщик паролей сможет любой программист.
Итак у меня есть старый wallet.dat за март 2012, есть клиент того времени bitcoin-0.5.2-win32-setup.exe. Для простоты было решено поставить Windows XP на виртуальную машину и все эксперименты проводить в ней. После установки Windows и клиента Bitcoin в ней был выключен сетевой адаптер виртуальной машины и первый раз запущен c:\Program Files\Bitcoin\bitcoin-qt.exe. Зачем выключать сетевой адаптер? При старте клиента кошелька он лезет в Интернет и скачивает всю цепочку транзакций, а это на текущий момент 14Gb — процесс долгий и не нужный в данном случае. В c:\Documents and Settings\Администратор\Application Data\Bitcoin\ появился новый wallet.dat. Далее закрываем bitcoin-qt.exe. Заменяем только что созданный wallet.dat на свой старый с забытым паролем. Теперь нужно положить в c:\Documents and Settings\Администратор\Application Data\Bitcoin\ рядом с wallet.dat файл bitcoin.conf со следующим содержимым:

rcpuse=zeta
rpcpassword=somerandomcrap
daemon=1

Далее идем в c:\Program Files\Bitcoin\daemon\ там находится файл bitcoind.exe. Он то нам и нужен. Замечу что клиент bitcoin-qt.exe должен быть выключен. Итак создаем bat файл со следующим содержимым:

Читайте также:  Как создать свой хайп Биткоинов

Запускаем его. Клиент запустился в режиме демона причем консольное окно не должно исчезнуть а как бы зависнуть. Сворачиваем его.
Теперь немного теории. Процесс подбора состоит в запуске еще одного экземпляра bitcoind.exe с параметрами командной строки:

bitcoind.exe walletpassphrase some_pass 20

где some_pass это новый пароль который пытается открыть кошелек. Процесс возвращает код в зависимости от результата. 0 если пароль подошел, во всех остальных случаях число будет отлично от 0. Например если bitcoind.exe сейчас не работает как демон будет выдано сообщение в консоль:

error: couldn’t connect to server

если bitcoind.exe работает как демон то мы увидим:

Зная это, дело остается за малым — написать программу генерирующую новые пароли, запускающую bitcoind.exe с параметром walletpassphrase далее через пробел новый пароль потом пробел и число 20. Смотрим вернувший код и либо генерируем новый пароль либо сообщаем что пароль найден.

Свою реализацию я писал на с++. Вот часть кода запуска:

STARTUPINFOW si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

std::string sFull= » walletpassphrase «+sPass+» 20″;

// Get the exit code.
GetExitCodeProcess(pi.hProcess, &exitCode);

if (exitCode==0)
resTry=pswSuccess;
else
<
if (exitCode==87)
resTry=pswTryAgain;
>

Поскольку обычно я использую несколько вариантов паролей отличающихся в конце был составлен список возможных вариантов начал, список символов которые могут быть в конце и суть перебора была брать начало фразы и брутфорсить конец фразы. Было создано несколько копий виртуальных машин с разными началами и процесс пошел. Поскольку сколько бы занял процесс перебора не известно — было решено написать клиент-сервер приложение где сервер генерит пароли и шлет клиентам клиенты пробуют и либо просят новую порцию паролей либо сообщают что пароль найден. К слову сказать как раз когда я заканчивал писать это приложение и тестировал его — мой пароль был найден. И все же я закончил его и вот результаты нескольких компов:

intel i7 2600K — 1900 паролей в минуту
intel i5 2500K — 920 паролей в минуту
amd a8-3870@3.4Gh — 900 паролей в минуту
intel q9650 — 520 паролей в минуту

Надеюсь мой опыт поможет кому то еще восстановить свой пароль. Удачи.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Недавно в комментариях к статье Bitcoin долгая синхронизация кошелька у меня спросили как быть, если жесткий диск маленького размера и весь блокчейн биткоина, а он уже больше 110Гб, не помещается?

Читайте также:  Что такое Биткоин простыми словами для чего он нужен

Тут я вспомнил, что недавно вышла новая версия Bitcoin Core 0.14.0, которая содержит ряд улучшений.

В Bitcoin Core 0.14.0

Улучшена производительность IBD

Одним из главных нововведений релиза стало улучшение производительности начальной загрузки блоков (IBD). Узел, запущенный в первый раз, теперь может проверять все блоки гораздо быстрее. Подобное нововведение было необходимо из-за постоянно возрастающего размера блокчейна. Теперь пользователи могут не хранить весь блокчейн, который сейчас имеет размер более 110 Гб – достаточно иметь его урезанную версию с минимальным размером в 550 Мб.

В предыдущих версиях была предусмотрена обрезка блокчейна до 2 Гб и хранением блоков примерно за две недели. Теперь даже полные узлы могут только обрабатывать блоки, но не хранить их, записывая изменение балансов адресов в таблицу UTXO (неистраченных выходов). Несмотря на некоторые уступки в плане безопасности, такой механизм значительно ускоряет работу кошелька и снижает требования к аппаратным ресурсам.

Ускоренная проверка новых блоков

Это нововведение особенно порадует майнеров. Для многоядерных процессов был обновлен кэш подписей – тест, проведенный на системе с 16 ядрами показал 40% увеличение скорости обработки нового блока. Внедрение функции BIP152 Compact Blocks позволит передавать некоторые блоки еще до того, как они были полностью подтверждены, позволяя этим блокам быстрее чем раньше распространяться по сети peer-to-peer (P2P).

Код для обмена данными в сети P2P также был реорганизован, чтобы позволить нескольким действиям выполняться одновременно, а также увеличить пропускную способность, устраняя потенциальные задержки в обработке новых блоков. Помимо этого, неподтверждённые транзакции в памяти узла (mempool) теперь могут быть сохранены и восстановлены с диска при перезапуске Bitcoin Core.

Обновленный расчет комиссий

Кошелек Bitcoin Core теперь позволяет пользователям при желании отправлять транзакции при помощи функции replace-by-fee (RBF). Это значит, что пользователь может увеличить комиссию за транзакцию даже после того, как была отправлена в сеть более ранняя версия транзакции. Данная функция не включена по умолчанию. Разработчики надеются, что это нововведение побудит майнеров к более быстрой обработке новых версий транзакций.

Помимо перечисленных основных изменений, существуют также и другие нововведения — возможность включения и выключения сетевой активности, новый эффективный метод импорта множественных ключей или адресов watch only, а также новые предупреждения и сообщения, информирующие пользователей о правильном использовании продукта.

Разработчики Bitcoin Core позаботились о людях, которых хотят использовать оригинальный кошелек для биткоинов, однако при этом не имеют большого быстрого диска.

Читайте также:  Как хранить Биткоины и эфириум на флешке

Уменьшаем необходимое место на диске для клиента Bitcoin

Для того чтобы использовать усеченный блокчейн нужно использовать опцию -prune=600

Указывать опцию пруне необходимо при старте bitcoin-qt.exe, для этого можно создать ярлык для запуска кошелька и в строке Объект в свойствах ярлыка дописать опцию.

Выглядеть это будет примерно так

C:\Data\bitcoin-0.14.0\bin\bitcoin-qt.exe -datadir=store -prune=600

В данном случае я использую две опции при запуске Bitcoin wallet:

-datadir=store эта опция говорит кошельку, что блокчейн и wallet.dat находится в подкаталоге store каталога программы, вы можете не указывать эту опцию, и каталог с базой данных транзакций и файлом кошелька будет размещаться по-умолчанию в C:\Users\[имя вашего пользователя в Windows]\AppData\Roaming\Bitcoin

-prune=600 — Уменьшить размер хранилища за счёт обрезания (удаления) старых блоков. Будет разрешён вызов RPC метода pruneblockchain для удаления определённых блоков и разрешено автоматическое обрезание старых блоков, если указан целевой размер в Мб. Этот режим несовместим с -txindex и -rescan. Внимание: переключение этой опции обратно потребует полной загрузки цепи блоков. (по умолчанию: 0 = отключить обрезание блоков, 1 = разрешить ручное обрезание через RPC, >550 = автоматически обрезать файлы блоков, чтобы они были меньше указанного размера в Мб)

Смотрим help по командам, запускаем bitcoin-qt.exe /help

Получаем список опций командой строки Bitcoin Core
Из справки становится понятно, что можно указывать минимальное значение prune=551.

Создаем ярлык для запуска Bitcoin Core c опциями datadir и prune и их значениями.

I want to run a Bitcoin client on a command-line-only system (Amazon EC2). Is there some specific command-line parameters I should use in order to run the main client without the GUI, or will it run properly without any parameters? How do I later check the status of the client (check number of connections, balance, etc)?

Создан 15 ноя. 11 2011-11-15 11:42:28 ThePiachu

To run it as a daemon type:

You can then use the API calls to do whatever you want:

Создан 15 ноя. 11 2011-11-15 13:32:19 nmat

When I run that, I get «error: incorrect rpcuser or rpcpassword (authorization failed)». Do I need to pass those values on the command line? – posit labs 14 май. 14 2014-05-14 04:00:58

Читайте далее:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock detector