Данный эксперимент проделан исключительно в формате развлечения выходного дня. Всё, что вы здесь увидите — результат чистого любопытства и желания покопаться в больших данных. Никакие приватные ключи не публикуются, только публичная информация об адресах.
Что такое 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 |
| Классический адрес, несжатый публичный ключ |
P2PKH compressed |
| Классический адрес, сжатый публичный ключ |
P2SH |
| Адрес для мультисиг и SegWit |
Bech32 |
| Современный 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