Jump to content

Программы для вычисления приватного ключа


alevlaslo

Recommended Posts

1 час назад, Lenchik сказал:

@Viktor967  А вы скорость перебора меряли? То есть проверяли как это работает? Выложите сюда скорость перебора и на какой карте это считалось.

Непонятно зачем вы в WIF формат конвертируете ключ? Прямо из 256 битного ключа надо вычислять адрес. В WIF можно и не конвертировать совсем или конвертировать только при положительном результате. Еще, при случайном переборе сравнивать с единственным адресом это утопия. Нужно стравнивать со всеми адресами из блокчейна имеющими положительный баланс.

И все меня больше скорость интересует. Хотя бы к Hash Cat приблизились, не  говоря уже о моих программах.

Да можно подшаманить держите и так далее и увеличивать и увеличивать вероятности, до бесконечности. Я выложил первый код для того чтобы если кто-то хочет играть у себя дома в лотерею в фоновом режиме, а не стремиться заработать. 
 

import bit
from bit.crypto import ECPrivateKey
from Crypto.Hash import RIPEMD160, SHA256
import telegram
from telegram.ext import Updater, CommandHandler
import os
import multiprocessing
import pycuda.autoinit
import pycuda.driver as cuda
from pycuda.compiler import SourceModule
import numpy as np
from bit.network.services import NetworkAPI

# Замените на свой токен Telegram бота
TOKEN = 'ваш токен'

# Скомпилируем CUDA-ядро для генерации приватных ключей
cuda_code = """
__global__ void find_private_key(const unsigned char* wallet_addresses, int num_addresses, int start_index, int end_index, unsigned char* results) {
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    if (i >= start_index && i < end_index) {
        // Генерация 256-битного приватного ключа
        unsigned char private_key_bytes[32];
        for (int j = 0; j < 32; j++) {
            private_key_bytes[j] = rand() % 256;
        }
        
        // Получение публичного ключа и адреса Bitcoin
        bit::ECPrivateKey private_key(private_key_bytes, true);
        bit::PublicKey public_key = private_key.public_key();
        const unsigned char* address = get_bitcoin_address(public_key.to_hex().c_str());
        
        // Сравнение адреса с целевыми адресами
        for (int j = 0; j < num_addresses; j++) {
            if (memcmp(address, wallet_addresses + j * 25, 25) == 0) {
                // Приватный ключ найден, копируем его в результат
                memcpy(results + i * 32, private_key_bytes, 32);
                return;
            }
        }
    }
}
"""
mod = SourceModule(cuda_code)
find_private_key_kernel = mod.get_function("find_private_key")

def get_bitcoin_address(public_key_hex):
    public_key = bytes.fromhex(public_key_hex)
    sha256_hash = SHA256.new(public_key).digest()
    ripemd160_hash = RIPEMD160.new(sha256_hash).digest()
    address = b'\x00' + ripemd160_hash
    return address

def find_private_key(wallet_addresses, start_index, end_index):
    # Выделяем память на GPU для хранения результата
    result_size = (end_index - start_index) * 32
    result = cuda.mem_alloc(result_size)

    # Запускаем CUDA-ядро
    block_size = 256
    grid_size = (end_index - start_index + block_size - 1) // block_size
    find_private_key_kernel(cuda.In(wallet_addresses), np.int32(len(wallet_addresses)), np.int32(start_index), np.int32(end_index), result, block=(block_size,1,1), grid=(grid_size,1))

    # Копируем результат с GPU на CPU
    private_key_bytes = cuda.from_device_like(result, np.empty(result_size, dtype=np.byte))

    for i in range(start_index, end_index):
        private_key = bytes(private_key_bytes[i*32:(i+1)*32])
        private_key_wif = bit.PrivateKey(private_key).to_wif()
        
        # Проверяем баланс адреса
        address = get_bitcoin_address(bit.PrivateKey(private_key).public_key.hex())
        balance = NetworkAPI.get_balance(address)
        if balance > 0:
            print(f"Private key found: {private_key_wif}")
            
            # Отправка сообщения в Телеграм
            bot = telegram.Bot(token=TOKEN)
            chat_id = 'ваш id'
            bot.send_message(chat_id=chat_id, text=f"Private key found: {private_key_wif}")
            
            return private_key_wif

    print(f"Private key not found in range {start_index} - {end_index}.")
    return None

def main():
    # Получаем список адресов с положительным балансом
    wallet_addresses = [address for address, balance in NetworkAPI.get_balance_multi(['1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2', '1F5y5E5fHTVzezNHxXXXXXXXXXXXXXXXXXX']).items() if balance > 0]
    
    # Разделяем диапазон на количество доступных CUDA-устройств
    num_devices = cuda.Device.count()
    step = len(wallet_addresses) // num_devices
    
    processes = []
    for i in range(num_devices):
        start_index = i * step
        end_index = (i + 1) * step
        process = multiprocessing.Process(target=find_private_key, args=(bytearray(b''.join(wallet_addresses[start_index:end_index])), start_index, end_index))
        processes.append(process)
        process.start()
    
    for process in processes:
        process.join()

if __name__ == "__main__":
    main()

 

Edited by Viktor967
Link to comment
Share on other sites

@Viktor967  У меня WIF ключи на одной карте RTX2070 перебирает со скоростью полтора миллиарда в секунду. Примерно в 15 раз быстрее чем Hash Cat. 

Link to comment
Share on other sites

2 часа назад, Lenchik сказал:

@Viktor967  У меня WIF ключи на одной карте RTX2070 перебирает со скоростью полтора миллиарда в секунду. Примерно в 15 раз быстрее чем Hash Cat. 

Да хоть триллион ))) перебор приватки битка нереален. Все видюхи в мире соберите и то не переберете
Я же говорю смысл кода чтобы он не нагружал систему а спокойно подбирал(так сказать тестировал удачу), есть даже программы в апсторе которые продаются по 200 долларов за возможность подбирать ключи к валлет 967, и пользуются успехом 

Link to comment
Share on other sites

11 часов назад, Viktor967 сказал:

Да хоть триллион ))) 

Выше я выкладывал программу считающую со скоростью восемь секстиллионов в секунду. Но там в ключе отсутствовали символы в удачном месте.

 

Чем выше скорость, тем выше вероятность. На убогом скриптовом языке никто брутфорс не пишет. В этом нет никакого смысла. Он и грузить компьютер будет сильно по причине использования громоздких подпрограмм и производительность будет почти нулевая.  

Link to comment
Share on other sites

  • 2 weeks later...

Всем привет! У кого есть мод для Кенгуру чтобы 129 бит пазл копала?

Edited by alevlaslo
Link to comment
Share on other sites

@alevlaslo

Пока это всё только теории. Не видно чтот-о повального вскрытия кошельков. Есть вероятность что квантовые компьютеры в будущем смогут. Но пока квантовые компьютеры скорее наглядное пособие, чем рабочий инструмент.

Link to comment
Share on other sites

6 часов назад, alevlaslo сказал:

@Lenchik а зачем им кошельки, они сразу материалиацию налички умеют, вот она причина инфляции

 

Как ребенок, всему верите.  Инфляцию порождает неограниченная эмиссия денег. В 1972 валюту отвязали от золота, и понеслось. Сейчас даже не надо напрягаться, бумажные деньги печатать. Деньги электронные, то есть существуют только в виде цифр нв компьютерах банков. 

Link to comment
Share on other sites

В 15.08.2024 в 21:30, Viktor967 сказал:

Смысл в том что он не перебирает а пытается угадать приватку к кошелю с миллардами( 12ib7dapvfvg82txkycwbnpn8kfyian1dr(забытый кошель), тоесть играем в лотерею и с минимальными шансами но есть. Токен телеграм бота вписать и чат айди чтобы ну вдруг отгадается чтобы сервак или ваш пк уведомил вас

типа его ж вскрыли, со слов некоторых и видео есть, но все 31000 битка так и лежат на нем 🙂

Link to comment
Share on other sites

66 пазл отгадали. В ночь на пятницу 13. Паззл 66, пятница 13.. У Шпака магнитофон, у посла медальон. Совпадение ? Не думаю.

Link to comment
Share on other sites

Подскажите пожалуйста как установить модули для этой проги: Поиск 130 биткоин пазла » Crypto.ONI.SU - Lost Сoins Wallets

без них не запускается. Папку надо просто перетащить куда-то или что-то запустить?

Edited by alevlaslo
Link to comment
Share on other sites

@alevlaslo Пустое. Не трать время. Это даже на наглядное пособие не тянет. Написано на яве, значит скорость перебора близка к нолю. 

Link to comment
Share on other sites

  • 2 weeks later...

Скажите, а почему большинство программ брутят приватный ключ, а не брутят мнемоники? Ведь ключ это 256 бит что просто несопоставимо по сложности со 128.

Или же суть тут в охвате всей базы, а мнемоники появились когда?  2013?

Link to comment
Share on other sites

@NightB Сид фразу что ли имеешь ввиду? Так ключ не факт что создан по сид фразе. И вариантов у сид фразы длиной 12 слов 2048 в 12 степени. Не считал, но это по моему никак не меньше вариантов чем у ключа 256 бит. Полный перебор никто и не брутит. Это невозможно. Если часть ключа известна, тогда есть шанс. Или специально созданные задания, как пазлы Сатоши.

Link to comment
Share on other sites

@Lenchik Да все верно. Сид фраза 12 слов = 128 битный ключ. С точки зрения перебора это гораздо проще 256 бит (и то и то понятно неперебираемо - своего рода игра в математику), но если учитывать неизвестный мутатор pbkdf2 + различные пути деривации, то да 128 битный ключ становится такой же утопией.

Интересно, а можно ли вычленить какую бы то ни было зависимость между ключами деривации 2^32 и данными(преобразуемыми) из блокчейна... это так... мысль вслух

Link to comment
Share on other sites

@NightB То есть по адресу выяснить, ключ создан с помощью сид фразы или каким то другим способом?

Думаю это невозможно. По сид фразе создается мастер ключ, по нему некое количество рабочих ключей. Если попробовать по одному из этой группы вычислить остальные, не зная мастер ключ?

Надо подумать. 

Link to comment
Share on other sites

@Lenchik Имею ввиду получение фингерпринтов или любой другой возможный идентификатор возможно через преобразование данных, который можно было бы сравнивать с результатами.

Link to comment
Share on other sites

В 04.10.2024 в 07:39, NightB сказал:

Скажите, а почему большинство программ брутят приватный ключ, а не брутят мнемоники?

Брутят и то, и то. Мнемноники вроде даже чаще, особенно если создавались корявыми либами с уменьшением энтропии, и понятно что искать.
 

В 05.10.2024 в 07:41, NightB сказал:

Интересно, а можно ли вычленить какую бы то ни было зависимость между ключами деривации 2^32 и данными(преобразуемыми) из блокчейна

Это была бы коллизия, т.к. зная публичный ключ, мы могли бы что-то сказать о приватном. В теории такого быть не должно, кроме как путем полного перебора.
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...