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

Мануал/Книга BITCOIN PUZZLES

brumsy

RAID-массив
Пользователь
Регистрация
12.05.2023
Сообщения
81
Решения
1
Реакции
33
Может кому нибудь будет интересно!
Биткоин пазл в основном разгадывают с помощью пулов по типу этого сайта!
Я решил может кому то пригодиться код для самостоятельного поиска.
Переменные менять можно на свое усмотрение.
Для примера я взял диопазон хешей от 0000000000000000000000000000000000000000000000349b84b6431a6c4ef1 и
до 0000000000000000000000000000000000000000000004c5ce114686a1336e07,
а так же указал возможные адреса этого диопазона (их можно добавить любое количество).
Есть возможность перебора на gpu и cpu. Обязательно обновите С++ и установите torch.

И так:

### Установка необходимых модулей

1. Установите необходимые модули с помощью `pip`. Откройте командную строку или терминал и выполните следующую команду:


Код:
pip install bitcoin torch


### Установка драйверов GPU

1. Если вы планируете использовать GPU для вычислений, убедитесь, что у вас установлены драйверы для вашей графической карты. Вы можете загрузить и установить драйверы с официального веб-сайта производителя вашей графической карты (например, NVIDIA, AMD).

### Установка CUDA Toolkit (для NVIDIA GPU)

Если вы планируете использовать NVIDIA GPU, установите CUDA Toolkit. CUDA Toolkit является набором инструментов и библиотек для разработки программ, использующих возможности NVIDIA GPU.

Посетите официальный веб-сайт NVIDIA CUDA и следуйте инструкциям для загрузки и установки CUDA Toolkit, соответствующей вашей операционной системе и графической карте.

## Код программы
Python:
import hashlib
import binascii
from bitcoin import *
import time
import torch

output_file = "matches.txt"  # Имя файла для сохранения пар адреса и приватного ключа

# Функция для генерации случайного хеша в заданном диапазоне
def generate_hash(start_hash, end_hash):
    current_hash = start_hash
    while current_hash != end_hash:
        sha256_hash = hashlib.sha256(current_hash.encode()).digest()
        yield binascii.hexlify(sha256_hash).decode()
        current_hash = hashlib.sha256(current_hash.encode()).hexdigest()

# Функция для получения приватного ключа из хеша
def get_private_key(hash_str):
    return sha256(hash_str)

# Функция для получения адреса биткоин из приватного ключа
def get_bitcoin_address(private_key):
    return privkey_to_address(private_key)

# Основная функция для генерации и проверки хешей
def generate_and_check_hashes(start_hash, end_hash, target_addresses, device):
    num_hashes = 0
    matches = []

    if device.type == "cuda":
        print("Using GPU for computation.")
        torch.cuda.set_device(device)
    else:
        print("Using CPU for computation.")

    start_time = time.time()  # Запоминаем начальное время

    for hash_str in generate_hash(start_hash, end_hash):
        private_key = get_private_key(hash_str)
        bitcoin_address = get_bitcoin_address(private_key)

        num_hashes += 1
        if bitcoin_address in target_addresses:
            matches.append((bitcoin_address, private_key))
            print(f"Match found! Address: {bitcoin_address}, Private Key: {private_key}")

            with open(output_file, "w") as file:
                for match in matches:
                    file.write(f"Address: {match[0]}, Private Key: {match[1]}\n")

        elapsed_time = time.time() - start_time  # Вычисляем прошедшее время

        if elapsed_time > 0:
            hash_rate = num_hashes / elapsed_time  # Вычисляем скорость хеширования
            print(f"\rChecked Hashes: {num_hashes} | Matches: {len(matches)} | Hash Rate: {hash_rate:.2f} hashes/sec", end="")

        time.sleep(0.1)  # Пауза между генерацией хешей для контроля скорости

# Запрос выбора вычислительного устройства (GPU или CPU)
device_type = input("Select computation device (GPU or CPU): ").lower()
if device_type == "gpu" and torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")

# Задайте начальный и конечный хеши для перебора
start_hash = "0000000000000000000000000000000000000000000000349b84b6431a6c4ef1"
end_hash = "0000000000000000000000000000000000000000000004c5ce114686a1336e07"

# Задайте несколько адресов в target_address
target_addresses = [
    "1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU",
    "1JTK7s9YVYywfm5XUH7RNhHJH1LshCaRFR",
    "1FWGcVDK3JGzCC3WtkYetULPszMaK2Jksv",
    "12VVRNPi4SJqUTsp6FmqDqY5sGosDtysn4"
]

# Запуск генерации и проверки хешей с указанными параметрами
generate_and_check_hashes(start_hash, end_hash, target_addresses, device)


## Использование

1. Откройте командную строку или терминал.

2. Перейдите в каталог, содержащий файл `pz.py`. Вы можете использовать команду `cd` для перехода в нужный каталог. Например:

Код:
cd C:\путь\к\каталогу


3. Запустите программу, введя следующую команду:

Код:
python pz.py


4. Программа запросит выбор вычислительного устройства (GPU или CPU). Введите `gpu` или `cpu` в зависимости от вашего выбора и нажмите Enter.

5. Программа начнет генерацию и проверку хешей. Она будет отображать информацию о проверенных хешах, количестве совпадений и скорости проверки в одной строке. Если найдено совпадение, программа выведет соответствующую информацию и сохранит результаты в файл `matches.txt`.

6. Для остановки программы нажмите `Ctrl + C` в командной строке или терминале.


Вы можете вносить свои изменения и усовершенствовать данный код! Надеюсь кому то будет полезным.
 
Можно дополню тему) скрипт простой, но главное работает и даже время потраченное на тесты, окупились)
Может кто захочет поиграться.
 

Вложения

  • PvkRanger.zip
    1.4 КБ · Просмотры: 42
Может кто захочет поиграться.
Уже! Тока я его под базу перешил и с пазлов множество диапазонов установил)
 
16 окон.
Хмм

А я дурак сижу с одним окном, жду что-то))
Что-то я затупил.

Надо все свои старые ноутбуки в работу пустит. А то без дела сидят.
И в каждом ноутбуке 10-16 окон открыть.
Спасибо за код!
 
16 окон.
Хмм

А я дурак сижу с одним окном, жду что-то))
Что-то я затупил.

Надо все свои старые ноутбуки в работу пустит. А то без дела сидят.
И в каждом ноутбуке 10-16 окон открыть.
Спасибо за код!
Главное не забывать разделять диапазоны и ставить шаг 1. И не забывать что в десятичном формате старт и финиш) не за что)
 
16 окон.
Хмм

А я дурак сижу с одним окном, жду что-то))
Что-то я затупил.

Надо все свои старые ноутбуки в работу пустит. А то без дела сидят.
И в каждом ноутбуке 10-16 окон открыть.
Спасибо за код!
В 1 окно 17й пазл за 11 секунд)))
 
Не хотелось бы занудничать, но честно говоря, это пустая трата ресурсов ПК и времени. В том "паззле", где 6.6 бтц, 20 квадриллионов вариантов ключей. Не знаю, насколько быстро работает софт, но предположим, что на хорошей видеокарте может генерировать 10 миллионов пар ключей в секунду.
Посчитаем:
10кк/сек = 600кк/мин = 36 млрд/час.
20 квадриллионов/36 миллиардов ≈ 555 555 часов ≈ 24148 суток ≈ 63 года. Именно столько потребуется чтобы перечекать весь диапазон при 10кк/сек. Если вы - бог рандома, может повезет в первый же час, но я бы не строил особых надежд. А так - удачи!)
 
Я уже писал не так давно за пазл, пустая трата времени и ресурсов пк , сам пазл и ветку на биткоинталке надо рассматривать как хороший сборник примеров и просто обучающие чтиво, не более
 
Не хотелось бы занудничать, но честно говоря, это пустая трата ресурсов ПК и времени. В том "паззле", где 6.6 бтц, 20 квадриллионов вариантов ключей. Не знаю, насколько быстро работает софт, но предположим, что на хорошей видеокарте может генерировать 10 миллионов пар ключей в секунду.
Посчитаем:
10кк/сек = 600кк/мин = 36 млрд/час.
20 квадриллионов/36 миллиардов ≈ 555 555 часов ≈ 24148 суток ≈ 63 года. Именно столько потребуется чтобы перечекать весь диапазон при 10кк/сек. Если вы - бог рандома, может повезет в первый же час, но я бы не строил особых надежд. А так - удачи!)
Я уже писал не так давно за пазл, пустая трата времени и ресурсов пк , сам пазл и ветку на биткоинталке надо рассматривать как хороший сборник примеров и просто обучающие чтиво, не более
Поддержу комментаторов выше, на среднестатистическом компе это брутить нереально долго, было бы это так просто, этих битков давно уже не стало на адресах. Что бы ускорить решение, нужен хороший риг из 100-200 видеокарт, и самописный софт нативный на CUDA с продуманными оптимизациями по скорости, а все эти игры с питоновскими скриптами - всего лишь игры и трата времени.
Но имея в наличии такой риг карточек, эти самые 6 битков можно заработать другими путями и с гораздо меньшим затратами по времени.
Можно конечно понадеяться на удачу и если имеется ненужный дедик, запустить там это дело и пусть крутится круглый год, круглые сутки, но шансы найти что-то близятся к нулю.
 
Но имея в наличии такой риг карточек, эти самые 6 битков можно заработать другими путями и с гораздо меньшим затратами по времени.
Как например ?
 
Как например ?
1) Брут сидок собранных с логов, одна и та же сидка может быть использована во многих кошельках, у некоторых из них отличаются алгоритмы генерации ключей и адресов, их нужно перебирать, не всегда получив сидку ее можно вставить в кошель и сразу получить бабки.
2) Брут файлов кошельков добытых с логов, в них уже есть приватники, если сбрутишь - получишь полный доступ к монетам, если там не мультисиг.
...
перечислять можно много, была бы смекалка, и это все имеет гораздо больше прибыльности, чем сидеть собирать пазлы.
 
Окей, а если есть часть seed phrase.
Это же ускорит поиск ?
Или не очень ?

Видел в интернете фотку.
У челла кусок порванный бумаги а там от его кошелька seed phrase
У него ещё почерк был такой что сам хрен понял что за буква . Просил помощи у людей распознать буквы

Помоему отсутствовал только последнее слово от seed phrase.
Если не пол слова
Я ещё проверил сколько денег там и охренел.
Деньги ещё лежали, значит он не восстановил ещё его
 
Окей, а если есть часть seed phrase.
Это же ускорит поиск ?
Или не очень ?

Видел в интернете фотку.
У челла кусок порванный бумаги а там от его кошелька seed phrase
У него ещё почерк был такой что сам хрен понял что за буква .

Помоему отсутствовал только последнее слово от seed phrase.
Если не пол слова
Я ещё проверил сколько денег там и охренел.
Деньги ещё лежали, значит он не восстановил ещё его
Есть отдельные софтины для восстановления seed. Но там хорошие мощности нужны. 1-2 слова не сложно, больше хуже.
 
Окей, а если есть часть seed phrase.
Это же ускорит поиск ?
Или не очень ?

Видел в интернете фотку.
У челла кусок порванный бумаги а там от его кошелька seed phrase
У него ещё почерк был такой что сам хрен понял что за буква . Просил помощи у людей распознать буквы

Помоему отсутствовал только последнее слово от seed phrase.
Если не пол слова
Я ещё проверил сколько денег там и охренел.
Деньги ещё лежали, значит он не восстановил ещё его
Если всего одно слово утеряно, то для bip-39 это всего лишь 2048 комбинаций, это можно подобрать за считанные секунды, поэтому могу предположить, что там далеко не одно слово утеряно, если прошло много времени, а доступ он так и не восстановил. По поводу непонятных букв в словах, стандарт bip-39 имеет строго заданный набор из 2048 слов, поэтому для восстановления буквы в слове, по поводу которой есть сомнения, так же не много работы, находятся все слова в словаре такой же длины, начинающиеся на нужную букву/буквы и заканчивающиеся нужными буквами, не так много комбинаций будет. С другими стандартами отличными от bip-39 ситуация схожая.
 
Ну мне надо найти этот кусок.
Фотку имею ввиду.
Я скачал его. Надо посмотреть.
Ну это не быстро, у меня архив большой.

Время будет то поищу, может и в интернете сохранилась

Ну в то время небыло не AI, ничего.
И в Питоне это никто не умел перебирать. Даже не думали про это.
 
Если всего одно слово утеряно, то для bip-39 это всего лишь 2048 комбинаций,
Даже больше скажу, если утеряно только последнее слово, то это контрольная сумма сид и их всего 128. Если где то в середине, то да 2048. В целом 2 слова можно без проблем восстановить, 3 сложнее. А вот 4 это уже серьезная задача. Есть скрипты по восстановлению
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Можно дополню тему) скрипт простой, но главное работает и даже время потраченное на тесты, окупились)
Может кто захочет поиграться.
Можно вопрос, как правильно это заполнить

b=int(input("Start (Range in Dec): "))
c=int(input("Stop (Range in Dec): "))
d=int(input("Spread value(lower value very slow but more successful) : "))
 


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