Данный эксперимент проделан исключительно в формате развлечения выходного дня. Всё, что вы здесь увидите — результат чистого любопытства и желания покопаться в больших данных. Никакие приватные ключи не публикуются, только публичная информация об адресах.

Что такое brain wallet?

Для тех, кто не в курсе: brain wallet (мозговой кошелек) — это способ хранения криптовалюты, где приватный ключ генерируется из пароля или фразы, которую пользователь держит в голове. Никаких файлов, никаких бумажек — просто запомнил фразу и пользуешься.

Звучит удобно? Да. Безопасно? А вот это большой вопрос.

Суть в том, что злоумышленник может перебирать популярные фразы, вычислять из них адреса и проверять, есть ли на них средства. Именно это мы и решили проверить в наш уикенд.

Подробнее можно почитать в классической статье: https://xakep.ru/2016/02/18/brain-wallets/

Выбор словаря

Очевидным выбором стал легендарный Rockyou — сборник паролей, утекший много лет назад с одноименного сайта. Это классика жанра, настоящий "золотой фонд" самых популярных паролей.

Но была одна важная оговорка...

Подготовка данных: адский файл на 155 ГБ

Скачанный ZIP-архив весил 45 ГБ. В распакованном виде нас ждал текстовый файл размером 155 ГБ.

$ ls -lh rockyou.txt
-rw-r--r-- 155G rockyou.txt

При попытке открыть его через less я получил уведомление, что файл "выглядит как бинарный". И действительно — внутри оказалось приличное количество мусора: бинарные символы, нечитаемые последовательности, явно битые строки.

Первая чистка

Запустил простую фильтрацию, убирающую всё, что не является печатными символами:

cat rockyou.txt | strings > rockyou_clean.txt

Это сократило размер до 144 ГБ. Уже лучше, но внутри всё ещё полно мусора: строки с пробелами, совсем короткие обрывки, явно не похожие на пароли.

Вторая чистка

Решил оставить только строки без пробелов длиной от 8 до 40 символов — именно такие чаще всего используются как пароли:

cat rockyou_clean.txt | grep -P '^[^\s]{8,40}$' > rockyou_filtered.txt

И вот тут случилась магия: 25 ГБ.

25 гигабайт приемлемого вордлиста! 🔥

Финальная статистика

Посчитаем количество строк:

$ wc -l rockyou_filtered.txt
1 710 971 198 rockyou_filtered.txt

1.7 МИЛЛИАРДА потенциальных паролей.

Для понимания масштаба: если выписывать их в столбик без остановки, со скоростью 1 строка в секунду, понадобится 54 года.

От паролей к приватным ключам

Теперь самое интересное. Brain wallet работает так:

Пароль -> SHA256 -> Приватный ключ -> Публичный ключ -> Bitcoin-адрес

SHA256 от пароля — это и есть приватный ключ (если он попадает в допустимый диапазон эллиптической кривой secp256k1). Из приватного ключа мы получаем публичный ключ, а из него — адрес кошелька.

Причём для Bitcoin существует несколько форматов адресов:

Тип

Префикс

Описание

P2PKH uncompressed

1...

Классический адрес, несжатый публичный ключ

P2PKH compressed

1...

Классический адрес, сжатый публичный ключ

P2SH

3...

Адрес для мультисиг и SegWit

Bech32

bc1...

Современный SegWit-адрес

Мы решили генерировать все 4 типа для каждого пароля. Почему? Потому что неизвестно, в каком формате создавал кошелёк пользователь. Кроме того, один и тот же приватный ключ может использоваться для разных типов адресов.

Инфраструктура: RTX 4090 + Yandex Cloud

Для генерации адресов использовали связку:

  • RTX 4090 — для расчётов на GPU

  • Yandex Cloud Object Storage — для хранения промежуточных и финальных данных

Процесс разбили на чанки по 1 миллиону SHA256-хешей. Всего получилось 1711 чанков.

Производительность

Скорость генерации на RTX 4090 впечатляет: более 50 000 SHA256 → адресов в секунду. Весь словарь в 1.7 млрд паролей был обработан за ~10 часов.

Параллельная загрузка в S3 позволила не хранить все данные локально — каждый чанк сразу отправлялся в облако.

Формат хранения

Для каждого чанка создавался CSV-файл с колонками:

SHA256,UNCOMPRESSED_P2PKH,COMPRESSED_P2PKH,P2SH,BECH32
8b2f3c...,1Address1...,1Address2...,3Address...,bc1address...
d4e5a1...,1Address3...,1Address4...,3Address2...,bc1address2...

Общий объём сгенерированных адресов: 203 ГБ.

База для сверки: живые кошельки с Loyce

Дальше начинается самое интересное. Мы взяли базу всех Bitcoin-адресов, на которых прямо сейчас есть средства — актуальный дамп с сайта loyce.club. Огромное спасибо сообществу за поддержание таких данных в актуальном состоянии!

Это не просто исторические данные — это "живые" кошельки с реальным балансом на момент дампа.

  • Размер файла: 2.14 ГБ

  • Количество адресов: 55 756 988 (ровно столько загрузилось в память)

  • Формат: простой текстовый файл, один адрес на строку

Процесс сверки

Теперь самое интересное: нужно проверить каждый сгенерированный адрес (а их получилось 1.7 млрд × 4 = ~6.8 млрд адресов) на наличие в базе живых кошельков.

Два подхода к сверке

Вариант 1: Множество в RAM

  • Загружаем все ~55 млн адресов в set() Python

  • Скорость проверки: O(1), десятки миллионов проверок в секунду

  • Требуется RAM: ~2.6 ГБ (оказалось даже меньше, чем ожидалось!)

Вариант 2: Бинарный поиск

  • Сортируем список адресов

  • Используем bisect для бинарного поиска

  • Скорость: O(log n), миллионы проверок в секунду

  • Требуется RAM: ~1 ГБ

Мы использовали первый вариант как самый быстрый.

Реальный процесс поиска:

🔍 Проверяем уже обработанные чанки...
✅ Уже обработано: 0 чанков
📊 Осталось обработать: 1000 чанков

🤔 Выберите метод поиска:
  1. Множество в RAM (очень быстро, нужно ~15-20 ГБ RAM)
  2. Бинарный поиск (медленнее, но память эффективно)
Ваш выбор (1 или 2): 1

📚 Загружаю funded адреса в память...
   Размер файла: 2.14 ГБ
   Загружено 10,000,000 адресов за 6.8 сек...
   Загружено 20,000,000 адресов за 15.3 сек...
   Загружено 30,000,000 адресов за 23.7 сек...
   Загружено 40,000,000 адресов за 32.0 сек...
   Загружено 50,000,000 адресов за 41.0 сек...
✅ Загружено 55,756,988 уникальных адресов за 45.8 сек
   Примерно 2.60 ГБ RAM

🎯 Результаты

Итак, барабанная дробь...

После обработки 1000 чанков (это 1 миллиард SHA256 хешей, или 4 миллиарда проверенных адресов) мы получили:

🎉 ПОИСК ЗАВЕРШЕН!
================================================================================
Всего обработано чанков: 1000
Всего найдено совпадений: 0
Время выполнения: 2ч 31м

Ноль совпадений.

Ни одного brain wallet'а среди миллиарда самых популярных паролей не нашлось в базе живых кошельков.

Анализ р��зультатов

Почему так вышло? Давайте разбираться.

1. Brain wallets — это нишевая история

Технология brain wallet была популярна в самом начале Bitcoin (2011-2013), но быстро сошла на нет после первых взломов. Уже в 2014-2015 годах все крипто-сообщества трубили: НИКОГДА не используйте brain wallet. Вероятно, большинство таких кошельков либо уже опустошены, либо их владельцы перевели средства в более безопасные места.

2. Популярные пароли — не значит "используемые для крипты"

Люди, которые разбираются в криптовалютах достаточно, чтобы создать кошелёк, скорее всего:

  • Используют генераторы случайных чисел

  • Записывают seed-фразы на бумагу

  • Покупают аппаратные кошельки

Они не будут использовать password123 для хранения денег.

3. Rockyou — слишком старый

Утечка Rockyou произошла в 2009 году. Даже если кто-то использовал brain wallet в 2011-2012, он вряд ли брал пароль из этого списка — скорее что-то более оригинальное.

4. Масштаб всё ещё мал

Хотя 1 миллиард паролей звучит внушительно, пространство возможных паролей бесконечно. Даже популярные пароли распределены по степенному закону: топ-100 покрывают ~40%, топ-1000 — ~60%, а дальше хвост становится очень длинным.

🔮 Перспективы поиска: что можно попробовать дальше?

Нулевой результат — тоже результат. Он показывает, что прямой перебор популярных паролей из Rockyou уже не работает. Но это не значит, что brain wallets не существуют. Просто нужно менять стратегию.

1. Модификация словаря: Leetspeak и символы

Люди любят "усложнять" пароли заменой букв на похожие символы:

password → p@ssw0rd
iloveyou → 1l0v3y0u
qwerty → qw3rty

Можно автоматически генерировать такие вариации для каждого пароля из Rockyou. Это увеличит словарь в 10-100 раз, но может дать результат.

2. Комбинирование слов

Многие используют комбинации из двух простых слов:

love + bitcoin = lovebitcoin
password + 123 = password123 (уже есть)
angel + devil = angeldevil

3. Фразы из нескольких слов

Классические brain wallet'ы часто используют фразы:

correct horse battery staple
bitcoin to the moon
satoshi nakamoto

тут нужны словари фраз а не отдельных слов

4. Комбинированный подход: правильные мутации

Самый перспективный путь — взять существующий словарь и применить к нему правила мутаций, которые используют хакеры:

  • Добавление цифр в конце (1, 12, 123, 1234, 12345)

  • Добавление года (2020, 2021, 2022, 2023, 2024)

  • Capitalization (Password, PASSWORD)

  • Замена букв на символы (a→@, s→$, o→0)

  • Перестановки

  • Комбинации двух слов

  • Добавление спецсимволов (!, @, #, $, %)

Популярные программы для мутаций:

  • Hashcat — умеет генерировать правильные мутации на GPU

  • John the Ripper — классика жанра

  • Crunch — генерация по маске

5. Целевой подход: ищем иголку в стоге сена

Вместо тотального перебора можно сузить поиск:

  • Только адреса с балансом > 1 BTC — их намного меньше

  • Только старые адреса (2011-2013) — когда brain wallet были популярны

  • Только адреса определённого формата — например, только uncompressed (старые кошельки)

6. Технические улучшения

На RTX 4090 можно достичь скорости 500 млн ключей в секунду при правильной оптимизации на CUDA. Это позволяет перебирать ~40 млрд ключей в день. Уже интереснее.

Оценка перспектив

Стратегия

Размер словаря

Шанс успеха

Время на RTX 4090

Rockyou оригинал

1.7 млрд

0% (проверено)

~10 часов

Rockyou + leetspeak

~50 млрд

Низкий

~10 дней

BIP39 комбинации

2048^3 = 8.6 млрд

Средний

~2 дня

Целевые адреса (>1 BTC)

~1 млн адресов

Выше

~1 час

Заключение

Наш эксперимент показал, что прямой перебор популярных паролей из Rockyou не находит живых brain wallet'ов в 2026 году. Те, кто использовал такие пароли, либо потеряли свои монеты, либо уже давно перевели их в безопасные места.

Однако это не значит, что brain wallets мертвы. Просто они стали сложнее. Люди придумывают более хитрые фразы, используют комбинации слов, добавляют символы. И именно эти мутации — следующая цель для поиска.

Мы выложили все сгенерированные данные в открытый доступ, чтобы сообщество могло продолжать эксперименты. Возможно, именно вы найдёте ту самую комбинацию, которая приведёт к успеху.

P.S. Если вы всё ещё используете brain wallet — даже самый хитрый пароль — срочно переводите средства. Ваш пароль может быть не в Rockyou, но он может быть в следующем словаре. 😉

Если будут дел��ные мысли или нужна будет дата пишите на почту bitcoin@base58.ru