Jump to content

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


Recommended Posts

Posted

Вот еще только что сгенерился адресок: 11111411............................

если намеренно такой запрашивать, то генерация 2 года

1111121xye......

11111L1RUBedy..... это воообще огонь, троякое понимание Руб на едУ, Руб Еду и РУ беды

А тем временем 130 пазл уже содержит баланс под миллион баксов, достаточно всего 3700 ноутбуков, чтобы найти ключ за год

Снимок экрана (3).png

на падающем рынке фермы с такими картами стоят копейки

да и сейчас на таких профита нет вроде, можно скупить

ого, а чего ж она тогда работает и чем же искать тогда?

 

#130, 129bits private key [2129,2130-1], 1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua 13.0BTC

Expected time: several years on 256 Tesla V100 (Not possible with this program without modification)

  • 2 weeks later...
Posted

В теме есть человек? Невозможно только для гарантированного нахождения или для рандомного тоже?

Posted
23 минуты назад, alevlaslo сказал:

Невозможно только для гарантированного нахождения или для рандомного тоже?

Эта программа не занимается случайным поиском. В диапазоне [2129,2130-1] искать не может в принципе, если только не модифицировать исходный код.

Posted (edited)

@Old Miner как же не занимается, одну и ту же задачу решает разное время как и Ванити, сравните на простейшей

 

а это взято из мануала самой проги:

Снимок экрана (4).png

Edited by alevlaslo
Posted

@alevlaslo Если ключ действительно случайный, то случайный поиск ничего не дает по сравнению с последовательным перебором. А чтобы случайный поиск не повторял одни и те же ключи, нужно создавать базу данных пройденного и сравнивать новые сгенерированные ключи с базой.  То есть алгоритм усложняется, значит и скорость падает.

Если ключ придумал человек, то можно и прикинуть куда он его поставит в диапазоне. Скорей всего не в начало и не в конец. И тут можно разделить диапазон на части и искать сначала в более вероятной части. 

 

Приведенный вами график не от программы, это типовой график вероятности. Обратите внимание, если при 50 процентах вероятности, внизу два, то при 4 совсем не 100%. О чем я как то и писал выше. Если вероятность нахождения асиком, в соло, блока 50% за четыре года, то 100% вероятность совсем не восемь лет, а больше. 

Posted

@Lenchik спасибо, но вы так и не ответили: имеется ли хоть какая-то вероятность нахождения ключа 129 бит без модификации проги?

или она даже не посылает прыжки в некоторые части диапазона?

Posted

@alevlaslo О какой проге речь? Я всегда пишу только последовательный перебор, так как это обеспечивает самую высокую скорость. Проги для пазлов работают по интервалам, то есть весь диапазон делится на части, а в прогу вписывается конкретный интервал, но ищут они всё равно последовательно.

 

И почему 129 бит? Приватный ключ имеет длину 256 бит. 

Posted

@alevlaslo Зачем ей мод? Если случайный перебор ничего не дает в плане производительности.

 

Кенгуру вроде как должна ускорять поиск если известен публичный ключ. То есть насколько то из публичного ключа можно просчитать варианты эллиптического алгоритма сзади наперед. Получится таблица. К ней примерять просчитанное в обычном порядке. 

Я еще не проверял, дает ли такой алгоритм преимущество перед обычным на CUDA. Там есть некоторые особенности. Если обычный алгоритм будет выполнять каждое ядро отдельно, то "кенгуру" таблица будет в общей памяти видеокарты и ядра могут получать к ней доступ только по очереди, а это очень сильно затормозит поиск. 

Вот когда проверю сам, тогда и скажу. 

  • 3 weeks later...
Posted
В 26.12.2023 в 21:42, Lenchik сказал:

Идею использовать QR подсказал мне ulex2006, что позволило сократить время перебора до ноля. Но программа для поиска написана.

 

Работает быстро RTX2070 + i7-3770K:

 

2023-12-26220046.thumb.png.083020302658458c4b8484614650d60f.png

 

Интересующиеся этой темой люди могут попробовать её работу. Программа не имеет цифровой подписи Майкрософт, по этой причине может появиться предупреждения о том, что она может нанести вред компьютеру. Никакого вируса в ней нет. 

Программа ищет по шаблону 

0000000000000000000000000000000000XXXXXXXXXX00000XXX

Где X те символы она перебирает. По другому не умеет, она для этого ключа написана.

 

Алфавит base58

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

От 1 до z. В десятичном виде было бы от 0 до 57. Минимальный знак 1. Поэтому я его и вписываю на недостающие места, а не потому, что он кому-то приснился.

Счетчик работает без затей, в плюс. Справа младшие разряды, слева старшие.

 

Для примера берем ключ:

KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVrwTSsABcd55Aici2KBQ

12BnFZwvThDrurDVHHNgu1j8FkMFem7KQg

Его адрес вписываем в качестве аргумента в Start.bat

Ключ изменяем согласно шаблона.

 

KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVrwTSsABcd55Aici2KBQ
0000000000000000000000000000000000XXXXXXXXXX00000XXX
KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVrwTS1111111Aici2111 - найдет очень быстро
KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVrwT11111111Aici2111 - 1 час полный перебор. Если найдет, то быстрее
KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVrw111111111Aici2111 - два с половиной дня
KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVr1111111111Aici2111 - на моем железе примерно пять месяцев полный перебор

 

Ключ вписываем в файл Key.txt и запускаем через Start.bat В файле Key.txt перед ключом и после него не должно быть ничего, пробелов, перевода строки. Обработчика, выбрасывающего непечатаемые символы в программе нет, и она выдаст сообщение о неправильной длине ключа.

 

PriKeyWIFC_CUDA_10_3.zip 718.17 \u043a\u0411 · 25 загрузок

 

 

 а если вставить вот так ключ 

KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVr111111111111111111

программа найдет правильный приватник 

Posted
53 минуты назад, incubus666 сказал:

программа найдет правильный приватник 

Программа перебирает только указанные позиции. Остальные не перебирает.

У вас хэш потерян, а без него скорость поиска существенно ниже. Нужно из каждого варианта вычислять адрес, а это долго.

Posted (edited)
9 часов назад, Lenchik сказал:

Программа перебирает только указанные позиции. Остальные не перебирает.

У вас хэш потерян, а без него скорость поиска существенно ниже. Нужно из каждого варианта вычислять адрес, а это долго.

Спасибо за подробности, а можно изменить программу так чтоб она искала именно вот в таком формате  то что единицы программа перебирала? с тоже скоростью 

KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVr111111111111111111
Edited by incubus666
Posted

@incubus666 Без хэша нужно каждый вариант просчитывать по эллиптическому алгоритму, а это требует много ресурсов. И не забывайте про геометрическую прогрессию. У вас 18 символов не хватает. То есть количество вариантов такое, что время перебора будет почти бесконечность. 

За счет известной структуры ключа количество вариантов будет не 58^18, а меньше, но все равно очень большим. 

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

@incubus666 Без хэша нужно каждый вариант просчитывать по эллиптическому алгоритму, а это требует много ресурсов. И не забывайте про геометрическую прогрессию. У вас 18 символов не хватает. То есть количество вариантов такое, что время перебора будет почти бесконечность. 

За счет известной структуры ключа количество вариантов будет не 58^18, а меньше, но все равно очень большим. 

Добрый вечер спасибо за разъяснения теперь я понял. Если вам не  трудно вы не могли бы сделать программу на cuda чтоб например я скармливаю ей список из например 1 миллиона hex а программа внутри себя конвертирует их в биткоин адреса сжатого формата (compres) и если найдёт совпадение с адресом который лежит в базе адресов в фаиле BTC.txt запишет результат в новый фаил , у меня есть подобная программа но она на питоне и это занимает кучу времени и ресурсов цп ,так как ядра cuda работают намного быстрей у меня RTX3050 я думаю что это облегчит многим затраты , ну и конечно если что-то найду то конечно поделюсь!!!!!! 

Posted

@incubus666 У меня есть просто конвертор. То есть он берет из одного файла ключи и записывает в другой файл адреса, ничего не сравнивая. Написана на C++, так как узкое место в данном случае файловая система. То есть скорость ограничена скоростью чтения и записи диска. При использовании данных, хранящихся на диске, CUDA ничего не даст в плане производительности. 

Posted
13 минут назад, Lenchik сказал:

@incubus666 У меня есть просто конвертор. То есть он берет из одного файла ключи и записывает в другой файл адреса, ничего не сравнивая. Написана на C++, так как узкое место в данном случае файловая система. То есть скорость ограничена скоростью чтения и записи диска. При использовании данных, хранящихся на диске, CUDA ничего не даст в плане производительности. 

Почему тогда все программы  которые ищут в диапазонах создают сетки по приблизительно 65 миллиардов hex и сравнивают с базой причем поиск идет у меня по 700 mil/s

Posted

@incubus666 Конвертор я писал по заказу. Что просили, то и написал.

Программы создают "радужную таблицу" и ищут методом "кенгуру". Но это если известен публичный ключ. По адресу так не ищут. На CUDA такой метод может и не дать прибавки. В видеокарте обращение к памяти происходит намного медленнее чем расчет на ядре CUDA.

 

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

  • 1 month later...
Posted

@Lenchik Имеется пару вопросов:

1  Возможно ли вычислить публичный ключ из хэш 160 (20 байт)?

2  Как вычислить в каком диапазоне находится прив.ключ из (публичного ключа или хэш 160)

Posted
4 часа назад, vlrubl777 сказал:

Возможно ли вычислить публичный ключ из хэш 160 (20 байт)?

Вычислить невозможно, можно искать только перебором.

 

4 часа назад, vlrubl777 сказал:

Как вычислить в каком диапазоне находится прив.ключ из (публичного ключа или хэш 160)

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

  • 4 weeks later...
Posted

Добрый день, а сколько гипотетически нужно видеокарт, чтобы за месяц подобрать 256битный ключ?

Posted
8 часов назад, Maximoka сказал:

Добрый день, а сколько гипотетически нужно видеокарт, чтобы за месяц подобрать 256битный ключ?

34543454574123098386856128564517651963456345434545741230983868561285645176519634563454345457412309838685612856451765196345634543454574123098386856128564517651963456345434545741230983868561285645176519634560000000000000000±4 шт.

  • 5 weeks later...
Posted (edited)

Почитал вас и решил сделать небольшой код, можно добавить видюху но не стал так планировал на серваке делать

 

import bit
from bit.crypto import ECPrivateKey
from bit.format import bytes_to_wif
from Crypto.Hash import RIPEMD160, SHA256
import telegram
from telegram.ext import Updater, CommandHandler
import os
import multiprocessing

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

def find_private_key(wallet_address, start_index, end_index):
    for i in range(start_index, end_index):
        private_key_bytes = os.urandom(32)  # Генерация 256-битного приватного ключа
        private_key_wif = bytes_to_wif(private_key_bytes, compressed=True)
        
        print(f"Trying private key: {private_key_wif}")
        
        try:
            public_key = bit.PrivateKey(private_key_wif).public_key.hex()
            address = get_bitcoin_address(bytes.fromhex(public_key))
            if address == wallet_address:
                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
        except (ValueError, TypeError):
            print("Invalid private key, skipping...")
            continue
    
    print(f"Private key not found in range {start_index} - {end_index}.")
    return None

def get_bitcoin_address(public_key):
    sha256_hash = SHA256.new(public_key).digest()
    ripemd160_hash = RIPEMD160.new(sha256_hash).digest()
    address = bit.base58.b58encode_check(b'\x00' + ripemd160_hash)
    return address

def main():
    wallet_address = "12ib7dapvfvg82txkycwbnpn8kfyian1dr"
    
    # Разделяем диапазон на 4 части для параллельного поиска
    num_processes = 4
    step = 1000000000000000000000000000000000000 // num_processes
    
    processes = []
    for i in range(num_processes):
        start_index = i * step
        end_index = (i + 1) * step
        process = multiprocessing.Process(target=find_private_key, args=(wallet_address, start_index, end_index))
        processes.append(process)
        process.start()
    
    for process in processes:
        process.join()

if __name__ == "__main__":
    main()

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

Edited by Viktor967
Posted

@Viktor967 Случайный перебор ничего не дает по сравнению с брутфорсом по порядку. По мере перебора всё чаще будут перебираться повторно те же самые ключи.
У вас код на скриптовом языке, ему никакой сервак не поможет, он еле ползать будет. Я пробовал поиск на 24 ядерном зеоне. Скорость, по сравнению с видеокартой, никакая. 

То есть на настоящий момент что-то  перебирать есть смысл только на видеокарте или на компьютере фирмы NVidia, но там ядра тоже графические. 

Posted
8 часов назад, Lenchik сказал:

@Viktor967 Случайный перебор ничего не дает по сравнению с брутфорсом по порядку. По мере перебора всё чаще будут перебираться повторно те же самые ключи.
У вас код на скриптовом языке, ему никакой сервак не поможет, он еле ползать будет. Я пробовал поиск на 24 ядерном зеоне. Скорость, по сравнению с видеокартой, никакая. 

То есть на настоящий момент что-то  перебирать есть смысл только на видеокарте или на компьютере фирмы NVidia, но там ядра тоже графические. 

Ну ок можно и видюху
Просто это бесполезное занятие что так что так, выиграть не реально, но я же сказав почитав вас что здесь ориентируются квантовой механикой значит неважно сколько ключей переберут а важно в какое время и как и в принципе достаточно одного ключа просто написать в нужное время ))
Ну вот с видюхой

import bit
from bit.crypto import ECPrivateKey
from bit.format import bytes_to_wif
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

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

# Скомпилируем CUDA-ядро для генерации приватных ключей
cuda_code = """
__global__ void find_private_key(const char* wallet_address, int start_index, int end_index, char* result) {
    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;
        }
        
        // Конвертация приватного ключа в WIF-формат
        bit::ECPrivateKey private_key(private_key_bytes, true);
        const char* private_key_wif = private_key.to_wif().c_str();
        
        // Получение публичного ключа и адреса Bitcoin
        bit::PublicKey public_key = private_key.public_key();
        const char* public_key_hex = public_key.to_hex().c_str();
        const char* address = get_bitcoin_address(public_key_hex);
        
        // Сравнение адреса с целевым адресом
        if (strcmp(address, wallet_address) == 0) {
            // Приватный ключ найден, копируем его в результат
            for (int j = 0; j < strlen(private_key_wif); j++) {
                result[j] = private_key_wif[j];
            }
            result[strlen(private_key_wif)] = '\\0';
            return;
        }
    }
    
    // Приватный ключ не найден, возвращаем пустую строку
    result[0] = '\\0';
}
"""
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 = bit.base58.b58encode_check(b'\x00' + ripemd160_hash)
    return address.decode()

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

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

    # Копируем результат с GPU на CPU
    private_key_wif = cuda.from_device_like(result, np.empty(33, dtype=np.byte)).tostring().decode().rstrip('\0')

    if private_key_wif:
        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
    else:
        print(f"Private key not found in range {start_index} - {end_index}.")
        return None

def main():
    wallet_address = "12ib7dapvfvg82txkycwbnpn8kfyian1dr"
    
    # Разделяем диапазон на количество доступных CUDA-устройств
    num_devices = cuda.Device.count()
    step = 1000000000000000000000000000000000000 // 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=(wallet_address, start_index, end_index))
        processes.append(process)
        process.start()
    
    for process in processes:
        process.join()

if __name__ == "__main__":
    main()
Posted

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

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

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

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

    • CoinShares: Квантовые вычисления затронут лишь малую часть биткоинов

      Руководитель отдела исследований Биткоина в компании CoinShares Кристофер Бендиксен (Christopher Bendiksen) утверждает, что угрозы квантовых вычислений для блокчейна первой криптовалюты сильно преувеличены. Исследователь заявил, что под реальной угрозой со стороны квантовых компьютеров находятся только 10 200 BTC на устаревших адресах. Биндиксен не согласился с результатами исследования, проведенного в мае 2025 года аналитиками Chaincode Labs Энтони Милтоном (Anthony Milton) и Кларой Шикхел

      in Новости криптовалют

    • Майкл Сейлор: Квантовые вычисления укрепят биткоин

      Председатель компании MicroStrategy Майкл Сейлор (Michael Saylor) заявил, что квантовые компьютеры не смогут уничтожить Биткоин, а наоборот, укрепят первую криптовалюту. Когда наступит «квантовый прорыв», сеть Биткоина уже будет модернизирована: активные монеты перестятся в обновленную версию блокчейна, а потерянные так и останутся замороженными, написал Сейлор в соцсети Х. Безопасность сети повысится, предложение биткоина снизится, а сама криптовалюта станет сильнее, утверждает основатель

      in Новости криптовалют

    • TotalityAI ($TOTAI) - вычисления без ограничений

      🔗 Квантовый интеллект встречает децентрализованную инфраструктуру на платформе Solana   TotalityAI ($TOTAI) официально запущен Децентрализованная вычислительная инфраструктура нового поколения, объединяющая ИИ, блокчейн и квантовую оптимизацию для обеспечения интеллектуальной экономики будущего. 🌐 Что такое TotalityAI? TotalityAI создаёт Децентрализованную сеть физической инфраструктуры (DePIN), которая объединяет простаивающие графические проце

      in Флейм

    • BingX привлекла более 1000 соискателей в рамках программы TalentX

      Криптобиржа BingX сообщила о важной вехе развития своей программы стажировок в рамках глобальной стратегии TalentX. С момента запуска программы TalentX в феврале этого года было подано более 1 000 заявок от талантливых соискателей из более чем 10 стран и 5 континентов. В результате свыше 100 стажеров успешно присоединились к различным отделам BingX, включая продуктовую разработку, операционную деятельность, маркетинг, исследования, брендинг, административную работу и управление персоналом.

      in Новости криптовалют

    • Криптобиржа ОКХ повышает доступность VIP-программы

      С 9 июля по 20 августа 2025 года VIP-программа ОКХ станет еще доступнее, предлагая эксклюзивные привилегии как пользователям, уже зарегистрированным на ОКХ, так и VIP-трейдерам других крупных бирж. OKX, ведущая технологическая компания в сфере Web3 и вторая по объемам торгов международная криптовалютная биржа, объявила о запуске новой VIP-кампании с уникальными преимуществами.    В рамках промокампании участники VIP-программы смогут повысить свой VIP-статус на 2 уровня сроком на 60 дне

      in Новости криптовалют

×
×
  • Create New...