Jump to content

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


Recommended Posts

Posted (edited)
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
Posted

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

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

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

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

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

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

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

 

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

  • 2 weeks later...
Posted (edited)

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

Edited by alevlaslo
Posted

@alevlaslo

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

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

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

 

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

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

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

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

Posted

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

Posted (edited)

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

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

Edited by alevlaslo
Posted

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

  • 2 weeks later...
Posted

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

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

Posted

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

Posted

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

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

Posted

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

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

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

Posted

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

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

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

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

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

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

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

Posted

Я сейчас генерирую 760.000 ключей в секунду, в поиске 2.5 млн кошельков) процессоров больше и попрет получше думаю. 

По моему логину можете глянуть тг, там все публикую SearchBitcoinHolding

Posted (edited)

Посчитал сейчас шансы на поиски ключей, а неплохо. 162.5 квадрилиона шансов в сутки) 

пока такие скорости. 
все публикую в тг 

найти можно по нику 

буду делиться 

Edited by SearchBitcoinHolding
Posted (edited)
8 hours ago, SearchBitcoinHolding said:

Посчитал сейчас шансы на поиски ключей, а неплохо. 1.9 триллиона шансов в секунду) 

пока такие скорости. 
все публикую в тг 

найти можно по нику 

буду делиться 

@SearchBitcoinHolding 

нда не густо а проц какой

вот на ryzen7 2700:

петаключей и тера ключей

там  6,5 петаключей тоесть 6,5 quadrilionov

Edited by NapsterNapster
Posted

@NapsterNapster Нет никакого смысла генерить ключей больше чем система может проверить. Узкое место в данном алгоритме как раз база кошельков.

 

Базу кошельков нужно отсортировать по возрастающей или проиндексировать, поместить всю в оперативную память и то на проход по всей базе нужно будет время.

Чуть улучшить производительность можно если базу поместить в память видеокарты. У NVidia есть видеокарты для расчётов с довольно приличным объемом видеопамяти. 

 

Всё это увеличит скорость в разы, а для успеха нужно скорость увеличивать на много порядков. AMD тут не помощник. Сколько бы ядер у него не было (слабых надо сказать), от этого SSD работать быстрее не будет и оперативная память не ускорится.

Posted
19 часов назад, NapsterNapster сказал:

@SearchBitcoinHolding 

нда не густо а проц какой

вот на ryzen7 2700:

петаключей и тера ключей

там  6,5 петаключей тоесть 6,5 quadrilionov

Процессоры разные тестирую, так как арендую их. 
плюс посчитал вчера 

так как перебираю 2.5 млн кошельков, со скоростью 65 млрд в сутки, это значит шансы 162.5 квадрилионов. Неплохо. 
еще улучшать планирую 

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...