Данный эксперимент проделан исключительно в формате развлечения выходного дня. Всё, что вы здесь увидите — результат чистого любопытства и желания покопаться в больших данных. Никакие приватные ключи не публикуются, только публичная информация об адресах.
Звучит удобно? Да. Безопасно? А вот это большой вопрос.
Суть в том, что злоумышленник может перебирать популярные фразы, вычислять из них адреса и проверять, есть ли на них средства. Именно это мы и решили проверить в наш уикенд.
Подробнее можно почитать в классической статье:
Но была одна важная оговорка...
При попытке открыть его через less я получил уведомление, что файл "выглядит как бинарный". И действительно — внутри оказалось приличное количество мусора: бинарные символы, нечитаемые последовательности, явно битые строки.
Это сократило размер до 144 ГБ. Уже лучше, но внутри всё ещё полно мусора: строки с пробелами, совсем короткие обрывки, явно не похожие на пароли.
И вот тут случилась магия: 25 ГБ.
25 гигабайт приемлемого вордлиста!
1.7 МИЛЛИАРДА потенциальных паролей.
Для понимания масштаба: если выписывать их в столбик без остановки, со скоростью 1 строка в секунду, понадобится 54 года.
SHA256 от пароля — это и есть приватный ключ (если он попадает в допустимый диапазон эллиптической кривой secp256k1). Из приватного ключа мы получаем публичный ключ, а из него — адрес кошелька.
Причём для Bitcoin существует несколько форматов адресов:
Мы решили генерировать все 4 типа для каждого пароля. Почему? Потому что неизвестно, в каком формате создавал кошелёк пользователь. Кроме того, один и тот же приватный ключ может использоваться для разных типов адресов.
Параллельная загрузка в S3 позволила не хранить все данные локально — каждый чанк сразу отправлялся в облако.
Общий объём сгенерированных адресов: 203 ГБ.
Это не просто исторические данные — это "живые" кошельки с реальным балансом на момент дампа.
Итак, барабанная дробь...
После обработки 1000 чанков (это 1 миллиард SHA256 хешей, или 4 миллиарда проверенных адресов) мы получили:
Ноль совпадений.
Ни одного brain wallet'а среди миллиарда самых популярных паролей не нашлось в базе живых кошельков.
Нулевой результат — тоже результат. Он показывает, что прямой перебор популярных паролей из Rockyou уже не работает. Но это не значит, что brain wallets не существуют. Просто нужно менять стратегию.
Можно автоматически генерировать такие вариации для каждого пароля из Rockyou. Это увеличит словарь в 10-100 раз, но может дать результат.
тут нужны словари фраз а не отдельных слов
Однако это не значит, что brain wallets мертвы. Просто они стали сложнее. Люди придумывают более хитрые фразы, используют комбинации слов, добавляют символы. И именно эти мутации — следующая цель для поиска.
Мы выложили все сгенерированные данные в открытый доступ, чтобы сообщество могло продолжать эксперименты. Возможно, именно вы найдёте ту самую комбинацию, которая приведёт к успеху.
P.S. Если вы всё ещё используете brain wallet — даже самый хитрый пароль — срочно переводите средства. Ваш пароль может быть не в Rockyou, но он может быть в следующем словаре.
Что такое brain wallet?
Для тех, кто не в курсе: brain wallet (мозговой кошелек) — это способ хранения криптовалюты, где приватный ключ генерируется из пароля или фразы, которую пользователь держит в голове. Никаких файлов, никаких бумажек — просто запомнил фразу и пользуешься.Звучит удобно? Да. Безопасно? А вот это большой вопрос.
Суть в том, что злоумышленник может перебирать популярные фразы, вычислять из них адреса и проверять, есть ли на них средства. Именно это мы и решили проверить в наш уикенд.
Подробнее можно почитать в классической статье:
Please,
Вход
or
Регистрация
to view URLs content!
Выбор словаря
Очевидным выбором стал легендарный Rockyou — сборник паролей, утекший много лет назад с одноименного сайта. Это классика жанра, настоящий "золотой фонд" самых популярных паролей.Но была одна важная оговорка...
Подготовка данных: адский файл на 155 ГБ
Скачанный ZIP-архив весил 45 ГБ. В распакованном виде нас ждал текстовый файл размером 155 ГБ.
Код:
Please,
Вход
or
Регистрация to view codes content!
При попытке открыть его через less я получил уведомление, что файл "выглядит как бинарный". И действительно — внутри оказалось приличное количество мусора: бинарные символы, нечитаемые последовательности, явно битые строки.
Первая чистка
Запустил простую фильтрацию, убирающую всё, что не является печатными символами:
Код:
Please,
Вход
or
Регистрация to view codes content!
Это сократило размер до 144 ГБ. Уже лучше, но внутри всё ещё полно мусора: строки с пробелами, совсем короткие обрывки, явно не похожие на пароли.
Вторая чистка
Решил оставить только строки без пробелов длиной от 8 до 40 символов — именно такие чаще всего используются как пароли:
Код:
Please,
Вход
or
Регистрация to view codes content!
И вот тут случилась магия: 25 ГБ.
25 гигабайт приемлемого вордлиста!
Финальная статистика
Посчитаем количество строк:
Код:
Please,
Вход
or
Регистрация to view codes content!
1.7 МИЛЛИАРДА потенциальных паролей.
Для понимания масштаба: если выписывать их в столбик без остановки, со скоростью 1 строка в секунду, понадобится 54 года.
От паролей к приватным ключам
Теперь самое интересное. Brain wallet работает так:
Код:
Please,
Вход
or
Регистрация to view codes content!
SHA256 от пароля — это и есть приватный ключ (если он попадает в допустимый диапазон эллиптической кривой secp256k1). Из приватного ключа мы получаем публичный ключ, а из него — адрес кошелька.
Причём для Bitcoin существует несколько форматов адресов:
Мы решили генерировать все 4 типа для каждого пароля. Почему? Потому что неизвестно, в каком формате создавал кошелёк пользователь. Кроме того, один и тот же приватный ключ может использоваться для разных типов адресов.
Инфраструктура: RTX 4090 + Yandex Cloud
Для генерации адресов использовали связку:- RTX 4090 — для расчётов на GPU
- Yandex Cloud Object Storage — для хранения промежуточных и финальных данных
Производительность
Скорость генерации на RTX 4090 впечатляет: более 50 000 SHA256 → адресов в секунду. Весь словарь в 1.7 млрд паролей был обработан за ~10 часов.Параллельная загрузка в S3 позволила не хранить все данные локально — каждый чанк сразу отправлялся в облако.
Формат хранения
Для каждого чанка создавался CSV-файл с колонками:
Код:
Please,
Вход
or
Регистрация to view codes content!
Общий объём сгенерированных адресов: 203 ГБ.
База для сверки: живые кошельки с Loyce
Дальше начинается самое интересное. Мы взяли базу всех Bitcoin-адресов, на которых прямо сейчас есть средства — актуальный дамп с сайтаPlease,
Вход
or
Регистрация
to view URLs content!
. Огромное спасибо сообществу за поддержание таких данных в актуальном состоянии!Это не просто исторические данные — это "живые" кошельки с реальным балансом на момент дампа.
- Размер файла: 2.14 ГБ
- Количество адресов: 55 756 988 (ровно столько загрузилось в память)
- Формат: простой текстовый файл, один адрес на строку
Процесс сверки
Теперь самое интересное: нужно проверить каждый сгенерированный адрес (а их получилось 1.7 млрд × 4 = ~6.8 млрд адресов) на наличие в базе живых кошельков.Два подхода к сверке
Вариант 1: Множество в RAM- Загружаем все ~55 млн адресов в set() Python
- Скорость проверки: O(1), десятки миллионов проверок в секунду
- Требуется RAM: ~2.6 ГБ (оказалось даже меньше, чем ожидалось!)
- Сортируем список адресов
- Используем bisect для бинарного поиска
- Скорость: O(log n), миллионы проверок в секунду
- Требуется RAM: ~1 ГБ
Реальный процесс поиска:
Результаты
Итак, барабанная дробь...После обработки 1000 чанков (это 1 миллиард SHA256 хешей, или 4 миллиарда проверенных адресов) мы получили:
Ноль совпадений.
Ни одного brain wallet'а среди миллиарда самых популярных паролей не нашлось в базе живых кошельков.
Анализ результатов
Почему так вышло? Давайте разбираться.1. Brain wallets — это нишевая история
Технология brain wallet была популярна в самом начале Bitcoin (2011-2013), но быстро сошла на нет после первых взломов. Уже в 2014-2015 годах все крипто-сообщества трубили: НИКОГДА не используйте brain wallet. Вероятно, большинство таких кошельков либо уже опустошены, либо их владельцы перевели средства в более безопасные места.2. Популярные пароли — не значит "используемые для крипты"
Люди, которые разбираются в криптовалютах достаточно, чтобы создать кошелёк, скорее всего:- Используют генераторы случайных чисел
- Записывают seed-фразы на бумагу
- Покупают аппаратные кошельки
3. Rockyou — слишком старый
Утечка Rockyou произошла в 2009 году. Даже если кто-то использовал brain wallet в 2011-2012, он вряд ли брал пароль из этого списка — скорее что-то более оригинальное.4. Масштаб всё ещё мал
Хотя 1 миллиард паролей звучит внушительно, пространство возможных паролей бесконечно. Даже популярные пароли распределены по степенному закону: топ-100 покрывают ~40%, топ-1000 — ~60%, а дальше хвост становится очень длинным.
Перспективы поиска: что можно попробовать дальше?
Нулевой результат — тоже результат. Он показывает, что прямой перебор популярных паролей из Rockyou уже не работает. Но это не значит, что brain wallets не существуют. Просто нужно менять стратегию.1. Модификация словаря: Leetspeak и символы
Люди любят "усложнять" пароли заменой букв на похожие символы:
Код:
Please,
Вход
or
Регистрация to view codes content!
Можно автоматически генерировать такие вариации для каждого пароля из Rockyou. Это увеличит словарь в 10-100 раз, но может дать результат.
2. Комбинирование слов
Многие используют комбинации из двух простых слов:
Код:
Please,
Вход
or
Регистрация to view codes content!
3. Фразы из нескольких слов
Классические brain wallet'ы часто используют фразы:
Код:
Please,
Вход
or
Регистрация to view codes content!
тут нужны словари фраз а не отдельных слов
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 млрд ключей в день. Уже интереснее.Оценка перспектив
Заключение
Наш эксперимент показал, что прямой перебор популярных паролей из Rockyou не находит живых brain wallet'ов в 2026 году. Те, кто использовал такие пароли, либо потеряли свои монеты, либо уже давно перевели их в безопасные места.Однако это не значит, что brain wallets мертвы. Просто они стали сложнее. Люди придумывают более хитрые фразы, используют комбинации слов, добавляют символы. И именно эти мутации — следующая цель для поиска.
Мы выложили все сгенерированные данные в открытый доступ, чтобы сообщество могло продолжать эксперименты. Возможно, именно вы найдёте ту самую комбинацию, которая приведёт к успеху.
P.S. Если вы всё ещё используете brain wallet — даже самый хитрый пароль — срочно переводите средства. Ваш пароль может быть не в Rockyou, но он может быть в следующем словаре.
