Текущее местоположение: Главная / Резервные копии и безопасность после восстановления / Текст статьи

Программное восстановление мнемоники Uniswap: комбинации слов и поиск сид-фразы

Программное восстановление мнемоники Uniswap: комбинации слов и поиск сид-фразы

Uniswap — децентрализованная биржа, но доступ к ней открывается через Ethereum-кошелёк: MetaMask, Trust Wallet, Ledger, MyEtherWallet и другие. Если вы потеряли часть seed-фразы, но помните некоторые слова, их порядок или количество, можно попытаться восстановить мнемонику программно. Ниже — практическое руководство по BIP39/BIP32, комбинациям слов и деривации адресов для Uniswap. Важно: все действия выполняйте только со своим кошельком и в офлайн-среде. На сайте Восстановление криптокошельков собраны проверенные методы восстановления.

Почему Uniswap связан с мнемоникой

Uniswap не хранит seed-фразу и не имеет собственного аккаунта. Он работает с Ethereum-адресом, который выводится из BIP39-мнемоники по стандарту BIP32/BIP44. Поэтому задача сводится к поиску seed-фразы, из которой получается адрес, связанный с вашей активностью на Uniswap: свопы, approvals, LP-позиции Uniswap V2/V3, NFT-позиции.

BIP39/BIP32: минимум для программиста

  • Мнемоника BIP39 состоит из 12, 15, 18, 21 или 24 слов.
  • Слова берутся из фиксированного словаря на 2048 слов (обычно английского).
  • Последнее слово содержит checksum. Для 12 слов checksum — 4 бита, для 24 — 8 бит.
  • Из мнемоники через PBKDF2-HMAC-SHA512 получается seed.
  • Далее BIP32 создаёт дерево ключей. Для Ethereum чаще используется путь m/44'/60'/0'/0/i.
  • MetaMask, Trust Wallet и большинство EVM-кошельков используют похожие пути, но бывают исключения.

Стратегия восстановления по комбинациям

  1. Соберите всё, что помните: известные слова, их позиции, возможные варианты, язык словаря, количество слов.
  2. Отметьте неизвестные позиции. Если порядок неизвестен, разделите задачу на перестановки.
  3. Сузьте словарь: не все 2048 слов, а только вероятные по памяти, длине, первой букве, похожести.
  4. Генерируйте комбинации только для неизвестных позиций.
  5. Проверяйте checksum до деривации — это отсекает большинство неверных вариантов.
  6. Деривируйте Ethereum-адреса и сравнивайте с целевым адресом или ищите известные активы.
  7. Для Uniswap проверяйте не только ETH, но и токены, LP-токены, NFT-позиции V3 и историю транзакций.

Оценка сложности

| Пропущено слов | Число комбинаций | После checksum |
|---|---:|---:|
| 1 | 2 048 | ~128 для 12 слов |
| 2 | 4 194 304 | ~262 144 для 12 слов |
| 3 | 8 589 934 592 | ~536 870 912 для 12 слов |
| 4 | ~17,6 трлн | ~1,1 трлн для 12 слов |

Для 24 слов checksum отсекает больше вариантов, но общее число комбинаций растёт быстрее. При 4+ пропущенных словах нужны GPU, кластеры или специализированные инструменты.

восстановление сид-фразы Uniswap

Инструменты

  • Python: библиотеки mnemonic, eth-account, bip_utils, web3.
  • btcrecover и seedrecover.py — для частично известных seed-фраз и кошельков.
  • HashCat — для паролей к keystore/JSON, но не для прямого перебора BIP39 в большинстве сценариев.
  • Офлайн-словари и локальные базы адресов для проверки.

Пример программной реализации на Python

Это безопасный каркас для офлайн-поиска. Он не подключается к сети и не отправляет seed-фразу наружу.

from itertools import product
from mnemonic import Mnemonic
from bip_utils import Bip39SeedGenerator, Bip44, Bip44Coins, Bip44Changes

mnemo = Mnemonic('english')
WORDLIST = mnemo.wordlist

# Пример: известные слова, None — неизвестная позиция
known = ['word1', None, 'word3', None, 'word5', 'word6',
         'word7', 'word8', 'word9', 'word10', 'word11', 'word12']

unknown_positions = [i for i, w in enumerate(known) if w is None]
candidate_words = WORDLIST  # сузьте список для ускорения
target_address = '0xВАШ_АДРЕС'.lower()

def derive_addresses(seed_bytes, count=20):
    addresses = []
    bip44_mst = Bip44.FromSeed(seed_bytes, Bip44Coins.ETHEREUM)
    for i in range(count):
        addr = (
            bip44_mst
            .Purpose()

![BIP39 комбинации слов](/upload/upload/17/9ac5b6d2f0d97bdd8611b4f61ddc5d10_800_600.jpg)

            .Coin()
            .Account(0)
            .Change(Bip44Changes.CHAIN_EXT)
            .AddressIndex(i)
            .PublicKey()
            .ToAddress()
        )
        addresses.append(addr.lower())
    return addresses

for combo in product(candidate_words, repeat=len(unknown_positions)):
    words = known[:]
    for pos, word in zip(unknown_positions, combo):
        words[pos] = word
    phrase = ' '.join(words)
    if not mnemo.check(phrase):
        continue
    seed = Bip39SeedGenerator(phrase).Generate()
    for addr in derive_addresses(seed, 20):
        if addr == target_address:
            print('Найдено:', phrase)
            raise SystemExit

Если порядок известных слов неизвестен, используйте itertools.permutations. Но помните: 12! — это почти 479 млн перестановок, поэтому без известных позиций и checksum поиск может быть долгим.

Проверка адреса и активов Uniswap

Когда адрес найден, проверьте:

  • баланс ETH и ERC-20 токенов;
  • nonce и историю транзакций;
  • approvals к контрактам Uniswap;
  • LP-токены Uniswap V2;

seed-фраза MetaMask

  • NFT-позиции Uniswap V3;
  • тот же адрес в Arbitrum, Optimism, Polygon, Base и других EVM-сетях.
    Для проверки используйте локальный узел или публичный explorer. Никогда не вставляйте seed-фразу на сайты и не отправляйте её в чаты.

Оптимизация поиска

  • Начинайте с наиболее вероятных слов и позиций.
  • Используйте многопроцессорность и GPU.
  • Проверяйте checksum до дорогой деривации.
  • Заранее вычислите целевые адреса для нескольких путей и индексов.
  • Разделяйте диапазоны комбинаций между машинами.
  • Ведите журнал проверенных вариантов, чтобы не повторяться.

Безопасность прежде всего

  • Работайте на воздушном зазоре: отключите интернет, Wi-Fi и Bluetooth.
  • Используйте одноразовую ОС или изолированную виртуальную машину.
  • Не публикуйте seed-фразу, даже частично.
  • После восстановления сразу переведите активы на новый кошелёк.
  • Храните резервные копии в нескольких местах, например на металле и в сейфе.
  • Помните: восстановление допустимо только для собственных кошельков и в рамках закона.

Частые ошибки

  • Неверный язык словаря: английский, испанский, французский и т. д.
  • Неверный путь деривации или индекс адреса.
  • Игнорирование BIP39 passphrase.
  • Проверка только первого адреса.
  • Использование онлайн-генераторов и непроверенных скриптов.
  • Попытка перебрать слишком много слов без сужения словаря.

Когда нужен специалист

Если пропущено больше 4 слов, порядок полностью неизвестен, есть BIP39 passphrase или повреждённый keystore, ручной перебор может быть неэффективен. На сайте «Восстановление криптокошельков» можно найти пошаговые инструкции, инструменты и рекомендации по безопасному восстановлению MetaMask, MyEtherWallet, Electrum, Ledger и других кошельков.

Заключение

Программное восстановление мнемоники Uniswap — это задача о BIP39-комбинациях, checksum и деривации Ethereum-адресов. Если у вас есть частичная информация о seed-фразе, Python-скрипт и правильная стратегия могут помочь найти доступ к кошельку. Главное — действовать офлайн, не рисковать ключами и использовать только проверенные методы. Начните с базовой проверки известных слов, затем сузьте словарь и только после этого запускайте перебор.