Вы всё ещё верите, что найти биткоин-кошелёк с реальными деньгами невозможно без квантового суперкомпьютера? Тогда приготовьтесь потерять эту уверенность. Потому что то, что я случайно обнаружил месяц назад, ломает все шаблоны криптобезопасности.
Поиск Bitcoin-адресов — это перебор 2²⁵⁶ комбинаций (больше, чем атомов во Вселенной). Даже софт на миллион адресов в минуту бесполезен, потому что проверить их на баланс в потоке нереально — нет таких мощностей. Поэтому любой «софт для поиска забытых кошельков» — пустая трата времени, надежда только на фантастическую удачу.
Но, месяц назад я изменил мнение о добыче кошельков: с развитием нейросетей люди заметили, что деньги со старых кошельков пропадают. Я проверил — это так. Значит, способ существует, и нейросети могут помочь его найти. Тема меня захватила.
После долгого «общения» с Gemin, изучения форумов и статей, выявилась деталь: всё упирается в человеческий фактор. На заре биткоина и во время бума появилось множество сервисов для быстрого создания кошельков — миксеры, майнинг-фермы и т.д. Скрипты для них писали вручную, используя бесплатные библиотеки вроде Random для Python. Сейчас уже используют продвинутые, но тогда библиотеки часто косячили: процессор глючил, и числа генерировались не случайно, а с закономерностями.
Вот пример на восьми битах: число «00011000» из-за глюка могло стать «00110000», «0110000» или «11000000». Либо генерировалось 256-битное число, где первые 200 бит — нули, остальные случайны. Так могли создаться тысячи кошельков, у которых 256-битное число отличалось всего на одно значение.
Идея: генерировать не полностью случайное число, а только его часть, остальное фиксировать. Вероятность найти пул из-за косячных библиотек выше. Так родилась версия «BitPuddle1.0».
На скриншоте: 256 бит разбиты на ячейки по 8 бит, можно задавать свои значения или фиксировать их. За неделю тестов нашёл около тысячи кошельков, через некоторые проходили крупные транзакции ($450 000!!!) последние транзакции в этом году.
Появились разные версии «BitPuddle», например с фиксацией всех 256 бит.
Но возникла новая проблема: проверка миллионов кошельков на баланс. Я отказался от проверки через интернет — спарсил все адреса, по которым была хотя бы одна транзакция. Получил txt на 50 ГБ и 1,5 млрд строк. Оставив только ключи Bip58 — 20 ГБ и 800 млн строк.
Лезть в txt каждый раз медленно, создал базу SQLite — почти 60 ГБ. Скорость на Intel i5-8350U: генерация и моментальная проверка — миллион в секунду. На более серьёзных железяках не тестил.
Суть: проверять не баланс, а существует ли кошелёк и были ли на нём транзакции. Итоговая программа сейчас выглядит так.
Вопреки утверждениям нейросетей, что сгенерировать существующий биткоин-адрес невозможно, в проекте это удалось: получены сотни реальных кошельков. Результат стал возможен благодаря учёту исторических уязвимостей и человеческого фактора (сбои библиотек и т.д.). Всего за неделю работы найден кошелек с транзакциями на $450 000. Могу поделиться исходным кодом в Telegram — @GDev1703.