Кошелёк Parity (позднее OpenEthereum) долгое время оставался одним из самых популярных клиентов Ethereum. Многие пользователи до сих пор хранят средства на адресах, созданных в этом приложении, и периодически сталкиваются с классической проблемой: мнемоническая фраза и keystore-файл на месте, а вот пароль от аккаунта забыт. В такой ситуации на помощь приходит HashCat — самый известный в мире инструмент восстановления паролей, поддерживающий алгоритмы шифрования кошельков Ethereum.
Важно: данная статья носит исключительно образовательный характер и предназначена для восстановления доступа к собственным кошелькам. Попытка несанкционированного доступа к чужим средствам является уголовно наказуемым деянием.
Почему HashCat подходит для Parity
Parity хранит закрытые ключи в keystore-файлах формата JSON, зашифрованных паролем пользователя. В отличие от ранних версий Geth, где применялся алгоритм scrypt, Parity по умолчанию использует функцию PBKDF2-HMAC-SHA256 с 10240 итерациями. От этого напрямую зависит выбор режима атаки в HashCat:
- Режим 15600 — Ethereum Wallet, PBKDF2-HMAC-SHA256 (основной режим для keystore-файлов Parity);
- Режим 15700 — Ethereum Wallet, SCRYPT (если файл создан в Geth или MyEtherWallet);
- Режим 16300 — Ethereum Pre-Sale Wallet (для кошельков, созданных на пресейле Ethereum).
Таким образом, если вы помните мнемоническую фразу, но забыли пароль от конкретного аккаунта, либо у вас остался только keystore-файл, HashCat позволяет системно перебрать возможные варианты пароля и вернуть контроль над средствами.
Подготовка: что понадобится
- Компьютер с дискретной видеокартой (NVIDIA или AMD) — перебор на CPU будет мучительно медленным.
- Свежая версия HashCat с официального сайта hashcat.net.
- Keystore-файл (обычно имеет имя вида
UTC--дата--адрес). Стандартные пути:- Windows:
%APPDATA%\Parity\Ethereum\keys\ethereum - Linux:
~/.local/share/io.parity.ethereum/keys/ethereum - macOS:
~/Library/Application Support/io.parity.ethereum/keys/ethereum
- Windows:
- Словари паролей (например, rockyou.txt) и собственные списки вероятных вариантов.
- Желательно — изолированная офлайн-машина без доступа к интернету: keystore и пароли не должны покидать ваше устройство.
Шаг 1. Извлечение хеша из keystore-файла
HashCat не умеет читать JSON-файл напрямую — из него необходимо извлечь хеш в специальном формате. Проще всего воспользоваться скриптом ethereum2hashcat.py, который входит в набор инструментов HashCat и BTCRecover:

python ethereum2hashcat.py UTC--2020-01-01T00-00-00Z--адрес > parity.hash
Для режима 15600 результат выглядит примерно так:
$ethereum$p*10240*<соль>*<зашифрованный_ключ>*<mac>
Все значения берутся из секции crypto keystore-файла: параметры итераций из kdfparams, соль, зашифрованный закрытый ключ и контрольная сумма MAC. Проверьте, что хеш записан одной строкой без пробелов и переносов.
Шаг 2. Выбор режима атаки
HashCat предлагает несколько стратегий перебора, и правильный выбор экономит недели машинного времени:
- Словарная атака (
-a 0) — перебор по готовому списку паролей. Эффективна, если вы использовали типичные или ранее утёкшие пароли. - Атака по маске (
-a 3) — прямой перебор по шаблону, если вы помните структуру пароля (например, «слово + 4 цифры»). - Комбинаторная (
-a 1) — склейка слов из двух словарей. - Гибридные атаки (
-a 6,-a 7) — словарь плюс маска в конце или в начале. Идеальны для паролей вида «имя + год рождения». - Правила (
-r) — мутации словарных слов: замена букв на цифры, заглавные буквы, добавление символов.
Шаг 3. Практические примеры команд
Словарная атака с правилами мутации:
hashcat -m 15600 -a 0 parity.hash wordlists/rockyou.txt -r rules/best64.rule -w 3
Атака по маске (заглавная буква, 5 строчных, 2 цифры — типичный паттерн):

hashcat -m 15600 -a 3 parity.hash ?u?l?l?l?l?l?d?d -w 3
Гибридная атака (слово из вашего списка + 4 цифры в конце):
hashcat -m 15600 -a 6 parity.hash my_words.txt ?d?d?d?d -w 3
Работа с сессиями для длительного перебора с возможностью паузы:
hashcat -m 15600 -a 3 parity.hash ?a?a?a?a?a?a?a?a --session parity_restore -w 3
hashcat --session parity_restore --restore
Просмотр найденного пароля после завершения:
hashcat -m 15600 parity.hash --show
Обозначения масок: ?l — строчная буква, ?u — заглавная, ?d — цифра, ?s — спецсимвол, ?a — любой символ. Пользовательские наборы символов задаются параметрами -1, -2 и т. д.
Советы по составлению масок и словарей
Ключ к успеху — не мощность видеокарты, а точность гипотез. Вспомните свои привычки:
- Начинали ли вы пароль с заглавной буквы?
- Добавляли ли год, дату рождения или «!» в конце?

- Использовали ли замены вроде «a» → «@», «o» → «0»?
- Какой была примерная длина пароля?
Составьте персональный словарь из старых паролей, имён, кличек, важных дат и прогоните его с правилами best64.rule или dive.rule. Это покрывает огромное количество реальных человеческих паттернов за считанные часы.
Производительность и оптимизация
- Параметр
-w 3(или4) максимально загружает GPU. - Опция
-Oвключает оптимизированное ядро, но ограничивает максимальную длину пароля. - PBKDF2 с 10240 итерациями — относительно «медленный» алгоритм: в зависимости от видеокарты рассчитывайте на десятки–сотни тысяч проверок в секунду. Режим scrypt (15700) ещё тяжелее на порядок.
- Следите за температурой: длительный перебор требует хорошего охлаждения и актуальных драйверов.
- Никогда не задавайте маски шире реальной памяти о пароле: каждый лишний символ
?aувеличивает время перебора почти в 100 раз.
Если утеряна часть самой мнемоники
Важно понимать ограничение: HashCat перебирает пароли от keystore, а не слова seed-фразы BIP-39. Если вы потеряли 1–4 слова мнемоники, забыли их порядок или допустили опечатку, используйте связку с BTCRecover (модуль seedrecover.py) — он перебирает варианты словаря BIP-39 и проверяет полученные адреса. Связка «BTCRecover для фразы + HashCat для пароля» закрывает практически все сценарии восстановления Parity.
Что делать после успешного восстановления
- Импортируйте расшифрованный ключ в актуальный кошелёк (MetaMask, Rabby, MyEtherWallet).
- Немедленно переведите средства на новый адрес со свежей мнемонической фразой — старый ключ мог скомпрометироваться за годы хранения.
- Безвозвратно удалите временные файлы: хеши, словари с личными паролями, potfile HashCat.
Типичные ошибки новичков
- Неверный режим: выбор 15700 вместо 15600 приведёт к мгновенной ошибке или бессмысленному перебору. Всегда проверяйте поле
kdfв JSON. - Повреждённый keystore: неполное копирование файла ломает структуру хеша.
- Лишние символы: переносы строк и пробелы в файле с хешом вызывают ошибку парсинга.
- Завышенные ожидания: полный перебор пароля из 9–10 случайных символов нереален даже на ферме из GPU — делайте ставку на память и логику, а не на грубую силу.
Заключение
HashCat остаётся золотым стандартом восстановления паролей кошельков Parity: правильно извлечённый хеш, грамотно подобранный режим 15600 и продуманные маски превращают безнадёжную ситуацию в решаемую инженерную задачу. Действуйте методично, начинайте с самых вероятных гипотез, работайте офлайн — и помните, что восстановление собственного кошелька легально, а вот чужого — категорически нет.
