Найти в Дзене

Bitcoin core: как восстановить доступ, если забыт пароль к кошельку wallet.dat

Частый вопрос, который вижу в комментариях к видео-роликам про Биткоин: как восстановить доступ к кошельку Bitcoin Core. Решил написать небольшую, но довольно подробную инструкцию, чтобы было понятно, как выглядит процесс восстановления доступа. Начнем с того, что кошек Bitcoin Core это файл wallet.dat, который создается в ОС Windows по умолчанию в каталоге: C:\Users\<имя пользователя>\AppData\Roaming\Bitcoin\<имя_кошелька>\wallet.dat Файл может храниться также в любом месте. Если вы хоть раз делали его бэкап, то найти его можно простым поиском файлов: wallet.dat Как правило, многие из тех кто не пользовался криптовалютой постоянно, сталкиваются рано или поздно с тем, что не могут вспомнить пароль для отправки биткоинов с кошелька (пароль требуется только на отправку биткоинов). Это очень распространенное явление. В Интернете бытует даже поговорка: "Забыл пароль - потерял биткоины". Она отчасти верна, но если вы хотя бы приблизительно знаете, какие пароли вы использовали в тот период,

Частый вопрос, который вижу в комментариях к видео-роликам про Биткоин: как восстановить доступ к кошельку Bitcoin Core. Решил написать небольшую, но довольно подробную инструкцию, чтобы было понятно, как выглядит процесс восстановления доступа.

Начнем с того, что кошек Bitcoin Core это файл wallet.dat, который создается в ОС Windows по умолчанию в каталоге: C:\Users\<имя пользователя>\AppData\Roaming\Bitcoin\<имя_кошелька>\wallet.dat

Файл может храниться также в любом месте. Если вы хоть раз делали его бэкап, то найти его можно простым поиском файлов: wallet.dat

Сделано в MidJorney bot
Сделано в MidJorney bot

Как правило, многие из тех кто не пользовался криптовалютой постоянно, сталкиваются рано или поздно с тем, что не могут вспомнить пароль для отправки биткоинов с кошелька (пароль требуется только на отправку биткоинов). Это очень распространенное явление. В Интернете бытует даже поговорка: "Забыл пароль - потерял биткоины". Она отчасти верна, но если вы хотя бы приблизительно знаете, какие пароли вы использовали в тот период, то шанс на восстановление доступа все таки есть. Особенно полезна информация о максимальной длине пароля, наличии специальных символов, а также, о раскладке клавиатуры Ru, En.

Пароль не храниться в файле кошелька, но в нем есть его "отпечаток" или хэш, вычисленная последовательность для проверки верно ли вводиться пароль. Иными словами, в кошельке есть информация о том, как проверить верно ли вы вводите пароль. При вводе пароля Bitcoin Core вычисляет хэш, введенного пароля и сравнивает его с тем хэшем, который храниться в файле wallet.dat. Если хэш идентичный, то будет осуществлена транзакция отправки.

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

Для извлечения хэша из файла wallet.dat часто используют утилиту join ripper.

"https://github.com/openwall/john"

Есть как графическая версия, так и базовая консольная (bitcoin2john.py). Я использовал только консольную, потому что она максимально проста и не содержит каких либо настроек. Процесс извлечения хэша осуществляется одной стройкой из командной строки Windows.

Утилит bitcoin2john.py является исполняемым файлом написанным на языке программирования Python. Поэтому перед её использование необходимо установить Python 2.7

"https://www.python.org/download/releases/2.7/"

После распаковки и установки Python, запускаете командную строку Windows cmd и командой cd перемещаемся в папку с установленным Python 2.7, например:

cd C:\Users\MyName\Python27

Второй строкой запускаем утилиту join ripper подставляя путь где лежит её файл и путь к файлу wallet.dat, также указываем имя текстового файла куда будет записан хэш кошелька:

python bitcoin2john.py "C:\Users\MyName\wallet_285.dat" > "C:\Users\MyName\hash-wallet.txt"

Теперь у нас есть текстовый файл с сохраненным хэшем, если его открыть то мы увидим, что-то вроде:

$bitcoin$64$617c4b22fabd578e0f4d030245a0cbebd9da426fbee49c2feb885fa190b65096$16$dff2b89e4d885c28$35714$96$e3c9c21b829bddbb8f194fcdcbc84bc458e16a120ab8ee4c44f9f3e0abd43fea89441c7b88f2b644fe0c8c467efa6e14$130$04fc18da237cc9ad2b568950a8bcd59b342bc84749f632e3616a4dc6a23aeb9c73fd12cabcdbb09ce1c91f2d05f37344565bb8d5647f8670e068ad8752422489a3

Это есть ваш хэш.

Далее мы скачиваем ещё одну утилиту, которая позволяет преобразовать любой текст в хэш, или генерировать его прямо по маске. Это утилита hashcat.

"https://github.com/hashcat/hashcat"

Тут необходимо сказать, что данная утилита предназначена для генерерации хэшей всех типов, а их очень много. Фактически каждый протокол шифрования создает хэш по своим правилам. Нас же интересует протокол хэширования Bitcoin. Для его использования утилита запускается с ключом -m 11300. Далее выбирается способ подбора хэшей (ключ -a), их всего четыре: по маске, по словарю, с использованием правил и смешанный. Приведу пример первых двух режимов, так как обычно используются именно они:

1) Подбор хэша по маске: hashcat -m 11300 -a 3 -i --increment-min=3 --increment-max=6 "C:\Users\MyName\hash-wallet.txt" ?u?u?u?u?u?u

Здесь мы перебираем все возможные комбинации заглавных латинских букв идущих в подряд, начиная с длины слова 3 и закачивая 6 символами. Указываем расположение нашего файла с хэшем.

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

hashcat -m 11300 -a 3 -i --increment-min=3 --increment-max=6 -1 ?l?d "C:\Users\MyName\hash-wallet.txt" ?1?1?1?1?1?1

Такой хэш будет вычисляться очень долго, несколько недель на обычно компьютере со средненькой видео-картой. С игровой картой чуть быстрее, на несколько дней.

При использовании данного метода нужно учесть, что если у вас случайный пароль с цифрами, буквами и еще и спец. символами, например, то длину более 6 символов врят ли удастся подобрать, так как 7 символьный пароль, например, будет иметь 7.5 трлн. комбинаций (несколько лет вычислений). В домашних условия имеет смысл заниматься подбором лишь длины до 6 символов. В иных случая нужно обращаться к тем, кто работает с сервера и большими вычислительными мощностями (если нужна такая помощь то обращайтесь).

2) hashcat --status -m 11300 -a 0 "C:\Users\MyName\hash-wallet.txt" Slovar.txt

Тут у нас гораздо меньше параметров. Также указываем файл с нашим хэшем, и еще указываем файл с перебираемыми вариантами слов. Это обычный текстовый файл, каждая строка которого является вариантом пароля. Например, файл может содержать три строки:

moyparol

Parol123!!!

MASHA1978

В данном режиме очень важно составить максимально большой словарь, содержащий все возможные варианты написания слов-кандидатов:

Parol123 Parol1234 Parol123! Parol1234! parol123 parol123!4 Parol123!4

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

Надеюсь вам будет полезна данная статья.

П. с. Если вам нужна помощь в подбор пароля к wallet.dat, то вы можете самостоятельно cгенерировать хэш от файла кошелька, как описано в статье и передать его для подбора пароля, без передачи самого файла wallet.dat. Это позволит сохранить ваши биткоины в безопасности, без риска их перевода третьими лицами, так как для перевода нужен именно сам кошелек, а не только пароль.