Перейти к содержанию

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


Рекомендуемые сообщения

Опубликовано

Вот еще только что сгенерился адресок: 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 недели спустя...
Опубликовано
23 минуты назад, alevlaslo сказал:

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

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

Опубликовано (изменено)

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

 

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

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

Изменено пользователем alevlaslo
Опубликовано

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

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

 

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

Опубликовано

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

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

Опубликовано

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

 

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

Опубликовано

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

 

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

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

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

  • 3 недели спустя...
Опубликовано
В 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

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

Опубликовано
53 минуты назад, incubus666 сказал:

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

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

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

Опубликовано (изменено)
9 часов назад, Lenchik сказал:

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

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

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

KxUAWf8fsqic3j17e4FgXJCtVqwyMDjoVr111111111111111111
Изменено пользователем incubus666
Опубликовано

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

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

Опубликовано
2 часа назад, Lenchik сказал:

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

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

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

Опубликовано

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

Опубликовано
13 минут назад, Lenchik сказал:

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

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

Опубликовано

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

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

 

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

  • 1 месяц спустя...
Опубликовано

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

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

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

Опубликовано
4 часа назад, vlrubl777 сказал:

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

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

 

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

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

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

  • 4 недели спустя...
Опубликовано
8 часов назад, Maximoka сказал:

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

34543454574123098386856128564517651963456345434545741230983868561285645176519634563454345457412309838685612856451765196345634543454574123098386856128564517651963456345434545741230983868561285645176519634560000000000000000±4 шт.

  • 5 недель спустя...
Опубликовано (изменено)

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

 

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(забытый кошель), тоесть играем в лотерею и с минимальными шансами но есть. Токен телеграм бота вписать и чат айди чтобы ну вдруг отгадается чтобы сервак или ваш пк уведомил вас

Изменено пользователем Viktor967
Опубликовано

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

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

Опубликовано
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()
Опубликовано

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

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

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Похожие топики

    • TON Foundation уточнил детали программы получения золотой визы ОАЭ

      TON Foundation опубликовал разъяснение о программе получения золотой визы Объединенных Арабских Эмиратов (ОАЭ) через стейкинг токенов Toncoin, которую анонсировал накануне. В организации признали, что распространенная фондом информация не отражала официальной позиции властей страны. Согласно новому заявлению фонда, программа TON Staking Visa разрабатывается вместе с «лицензированным партнером, специализирующимся на блокчейн-инфраструктуре и токенизированных активах». Однако работа с этим не

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

    • Адам Бэк: Квантовые вычисления окажут неожиданный эффект на сеть Биткоина

      Соучредитель и генеральный директор компании Blockstream заявил, что достижения в области квантовых вычислений окажут на блокчейн Биткоина не тот эффект, который принято ожидать. Они сделают сеть еще сильнее, считает криптограф. Адам Бэк (Adam Back) объявил, что сейчас угрозы со стороны квантовых компьютеров для сети Биткоина нет:   «По всей видимости, сейчас схема постквантовых вычислений на основе хеша не будет использоваться, потому что до ее появления, скорее всего, еще нескольк

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

    • Майкл Сэйлор: Квантовые вычисления — не угроза для Биткоина

      Председатель правления Strategy Майкл Сэйлор (Michael Saylor) назвал напрасными опасения криптоэнтузиастов по поводу квантовых вычислений, с помощью которых можно взломать адреса Биткоина. В интервью каналу CNBC на программе Squawk Box Сэйлор заявил, что потенциальное влияние квантовых вычислений на биткоин вряд ли можно считать серьезной угрозой для безопасности сети. По мнению Сэйлора, это лишь маркетинговый ход людей, которые хотят продать очередной «квантовый токен».   По данным и

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

    • Американский офис продовольственной программы ООН начал принимать криптовалюты

      Американский офис Всемирной продовольственной программы ООН (World Food Programme, WFP) открыл сбор пожертвований в 80 криптовалютах, включая биткоин, эфир и Dogecoin. Представители WFP отметили, что сбор пожертвования в цифровых активах стал возможен благодаря сотрудничеству с платежной платформой The Giving Block. Использование криптовалют позволит спонсорам проводить транзакции быстрее, чем через банки, избегать налогов на прирост капитала и платить меньше комиссионных сборов.   В

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

    • Разработчик программы-вымогателя Phobos Евгений Птицын экстрадирован в США

      Министерство юстиции США объявило, что 42-летний россиянин Евгений Птицын был экстрадирован из Южной Кореи в США для предъявления обвинений, связанных с программой-вымогателем Phobos. Прокуратура утверждает, что Птицын распространял вредоносное ПО, которое использовалось для вымогательства криптовалют на сумму $16 млн у более 1000 организаций по всему миру. Атаки хакеров в основном были направлены на школы, а также на медицинские и государственные учреждения. Птицын и его сообщники предоста

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

×
×
  • Создать...