高级脚本恢复Uniswap钱包密码教程 — практическое руководство по восстановлению доступа к Ethereum-кошельку, который вы используете для Uniswap. Сразу уточним: Uniswap не хранит пароли и не является кастодиальным сервисом. Пароль защищает локальный keystore или vault в MetaMask, Trust Wallet, MyEtherWallet, Coinbase Wallet и других кошельках. Если вы забыли пароль, но у вас есть файл хранилища или seed-фраза, шанс на восстановление остаётся. На сайте Восстановление криптокошельков вы найдёте проверенные офлайн-методики, а ниже — расширенный сценарий со скриптами.
Почему Uniswap не восстанавливает пароль
- Uniswap — децентрализованный протокол обмена, он не имеет доступа к вашему кошельку.
- Пароль шифрует приватный ключ на вашем устройстве.
- Без keystore/vault или seed-фразы восстановление невозможно.
- Все действия выполняйте только для собственного кошелька и только офлайн.
Подготовка
Вам понадобятся:
- копия keystore JSON, vault-файла или данных расширения MetaMask;
- отдельный офлайн-компьютер или загрузочная Linux-флешка;
- GPU/CPU для Hashcat, btcrecover, John the Ripper;
- словари: rockyou.txt, weakpass, списки русских паролей, крипто-терминов;
- предположения о пароле: длина, даты, имена, старые привычки.
Где искать данные
- MetaMask: папка расширения в Chrome/Brave/Firefox, LevelDB, файлы .ldb/.log, ключ
vault. - MyEtherWallet/MyCrypto: скачанный keystore JSON.
- Trust Wallet: резервная копия, если экспортировали.
- Аппаратные кошельки: seed-фраза, а не пароль приложения.
Этап 1. Извлечение хеша
Для keystore Ethereum используйте eth-keyfile или ethers.js. Для MetaMask vault можно применить metamask-vault-decryptor или собственный Node.js-скрипт. Важно получить структуру с параметрами crypto, kdf, ciphertext, salt, iv.
Пример на Python для проверки словаря по keystore:
import json
from eth_keyfile import decode_keyfile_json
with open('keystore.json', 'r', encoding='utf-8') as f:

keystore = json.load(f)
with open('passwords.txt', 'r', encoding='utf-8', errors='ignore') as f:
for line in f:
password = line.rstrip()
try:
private_key = decode_keyfile_json(keystore, password.encode('utf-8'))
print('Пароль найден:', password)
print('Приватный ключ:', private_key.hex())
break
except Exception:
pass
Для MetaMask vault на Node.js:
const { Wallet } = require('ethers');
const fs = require('fs');
const vault = JSON.parse(fs.readFileSync('vault.json', 'utf8'));
const passwords = fs.readFileSync('passwords.txt', 'utf8').trim().split(String.fromCharCode(10));
(async () => {
for (const p of passwords) {
try {
const w = await Wallet.fromEncryptedJson(JSON.stringify(vault), p.trim());
console.log('OK', p, w.address);
break;
} catch (e) {}
}
})();

Этап 2. Hashcat и btcrecover
Когда известен формат, преобразуйте хранилище в хеш для GPU-восстановления. Для Ethereum Wallet в Hashcat используйте актуальный режим для scrypt/PBKDF2 (например, 15700/15600 — проверьте по версии). Команда может выглядеть так:
hashcat -m 15700 hash.txt wordlist.txt -r rules/best64.rule -O -w 3
Для btcrecover:
python btcrecover.py --wallet keystore.json --passwordlist passwords.txt --typos 2 --threads 8
Дополнительно:
- маска:
?u?l?l?l?l?l?d?d; - гибрид: словарь + цифры;
- combinator: два словаря;
- rule-based: замена букв, года, символы.
Этап 3. Продвинутые скрипты
Если стандартные атаки не помогают, создайте кастомный перебор:
- проверяйте только реальные кандидаты;
- используйте multiprocessing;
- останавливайтесь после расшифровки;
- не пишите пароль на диск без шифрования.
Пример многопоточного Python-скрипта:
from concurrent.futures import ProcessPoolExecutor
import json
from eth_keyfile import decode_keyfile_json

def check(keystore, password):
try:
decode_keyfile_json(keystore, password.encode())
return password
except Exception:
return None
if __name__ == '__main__':
keystore = json.load(open('keystore.json', encoding='utf-8'))
candidates = [line.strip() for line in open('passwords.txt', encoding='utf-8')]
with ProcessPoolExecutor(max_workers=8) as ex:
for result in ex.map(lambda p: check(keystore, p), candidates, chunksize=100):
if result:
print('Найдено:', result)
break
Ошибки и ограничения
- Не используйте онлайн-сервисы: риск кражи seed/keystore.
- Не пытайтесь восстановить чужой кошелёк — это незаконно.
- Если пароль длинный и случайный, brute force может занять годы.
- Без seed-фразы и keystore восстановление невозможно.
Профилактика
- Запишите seed-фразу на металле и бумаге, храните в двух местах.
- Используйте менеджер паролей и сложный, но запоминаемый пароль.
- Регулярно проверяйте восстановление на тестовом кошельке.
- Делайте резервные копии keystore и vault.
Если самостоятельные попытки не дали результата, на сайте Восстановление криптокошельков можно получить консультацию по сложным случаям: анализ vault, подбор словарей, настройка Hashcat и безопасный офлайн-аудит. Помните: главная ценность — не пароль, а приватный ключ и seed-фраза. Берегите их.
