Jump to content

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


Recommended Posts

Posted

Подскажите, пожалуйста,какая сейчас лучшая программа для поиска головоломки 67?

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

 

Пока из лучшего что удалось найти это ttdclient

на 4090 делает 5.274 BK/s (миллиарда ключей в секунду)

но это клиент для пула и у него нет открытого исходного кода.

 

Из более менее работающего KeyHunt-Cuda, но скорость почти в 2 раза ниже.

Posted
В 05.11.2024 в 19:11, Antonion сказал:

Подскажите, пожалуйста,какая сейчас лучшая программа для поиска головоломки 67?

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

 

Пока из лучшего что удалось найти это ttdclient

на 4090 делает 5.274 BK/s (миллиарда ключей в секунду)

но это клиент для пула и у него нет открытого исходного кода.

 

Из более менее работающего KeyHunt-Cuda, но скорость почти в 2 раза ниже.

Попробуй это,https://www.frikiscape.com/puzzlebtc.html

Posted

Как из публичного ключа примерно выстроить диапозон поиска приватного ключа с помощью keyhunt ? И по какой команде запускаетесь в режиме bsgs? 

Posted
21 час назад, Helsing сказал:

Как из публичного ключа примерно выстроить диапозон поиска приватного ключа с помощью keyhunt ? И по какой команде запускаетесь в режиме bsgs? 

там нет явной зависимости
у кейханта хороший хелп, давно не запускал режим bsgs,

но раньше вопросов не было

Posted
В 10.11.2024 в 10:56, korbengtr сказал:

видел, оно под виндовс, сейчас вся аренда в основном на линукс.

я разобрался с кейхант-куда, если задавать  --gpux 8192,512 для 4090, то будет давать 5.8 млрд/с

В 09.11.2024 в 08:20, NapsterNapster сказал:

@Antonionкинь ссылку че за ttdclient ?

https://www.ttdsales.com/67bit/index.php

клиент пула, 67 головоломки

Posted
В 16.08.2024 в 14:09, Viktor967 сказал:

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

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

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

В 16.08.2024 в 14:09, Viktor967 сказал:

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

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

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

В 16.08.2024 в 14:09, Viktor967 сказал:

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

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

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

В 16.08.2024 в 14:09, Viktor967 сказал:

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

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

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

  • 2 weeks later...
Posted

Может кто подскажет,ванитеген запускается на процессоре(AMD),а на видеокарте (NVIDIA GeForce GTX 750 Ti)выдает ошибку :

[ERROR]
Сложность: 26838491360
Компиляция ядра, может занять несколько минут... сбой.
clBuildProgram: CL_BUILD_PROGRAM_FAILURE
Журнал сборки:
<ядро>:173:30: ошибка: инициализатор массива должен быть списком инициализаторов
__constant bignum bn_zero = {0,0,0,0,0,0,0,0};
^
Устройство: NVIDIA GeForce GTX 750 Ti
Производитель: NVIDIA Corporation (10de)
Драйвер: 472.12
Профиль: FULL_PROFILE
Версия: OpenCL 3.0 CUDA
Максимальное количество вычислительных блоков: 5
Максимальный размер рабочей группы: 1024
Глобальная память: -2147483648
Максимальное выделение: 536870912
Не удалось открыть устройство '0:0', игнорируется
Доступные платформы OpenCL:
0: [NVIDIA Corporation] NVIDIA CUDA
0: [NVIDIA Corporation] NVIDIA GeForce GTX 750 Ti

Рекомендуется использовать OpenCL на видеокартах с графическими процессорами NVIDIA, в противном случае вы не сможете выполнять поиск с помощью Vanitygen (OpenCL GPU).

Posted

@korbengtr  Про OpenCL не знаю, а CUDA на видеокартах GTX 7ХХ уже не работает. То есть современная версия CUDA, раньше работало. 

Видеокарту надо чуть поновее.

Posted (edited)
В 25.11.2024 в 15:56, Lenchik сказал:

@korbengtr  Про OpenCL не знаю, а CUDA на видеокартах GTX 7ХХ уже не работает. То есть современная версия CUDA, раньше работало. 

Видеокарту надо чуть поновее.

Я пользуюсь oclванитеген.exe с интерфейсом для виндоус и дело в том,что для малых диапазонов(пазл 67,68 и т.д) в режиме nvidia cuda работает(выдает свои mg/h),но если запускаю поиск 256 битном диапазоне в режиме open cll gpu вылетает ошибка.

Edited by korbengtr
Posted

@korbengtr CUDA значит при компиляции использовалась старая. Я тоже собирал программы на CUDA лёжа на диване, на старом ноутбуке, а после очередного обновления компилятора оно стало давать ошибку. Пришлось Visual Studio перенести на другой компьютер. 
Для старших пазлов с известным публичным ключом, еще и видеопамяти надо много. 

 

Open CL штука тёмная. Это эмулятор, виртуальная машина. Как она работает внутри, только её создателям известно. 

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

@korbengtrнапиши пример запуска vanitygen и его версию

С ванитиген разобрался,переустановил библиотеки и заработала,теперь пытаюсь запустить oclvanitygen,выдает ошибку отсутствует в директории calc_addrs.cl ,хотя файл есть.Версию не знаю,запускаю exe через консоль.

Posted

Народ,подскажите где взять открытый код для ванитеген и можно ли его переделать под низкий диапазон?

Posted
В 29.11.2024 в 13:31, korbengtr сказал:

и можно ли его переделать под низкий диапазон?

 

У ключей с большими номерами известен публичный адрес, у ключей с меньшими номерами публичный адрес неизвестен. Алгоритм поиска разный. При неизвестном публичном ключе и приватного нужно вычислить публичный из публичного адрес. При известном публичном ключе можно построить радужную таблицу тем самым сократив объем вычислений. 

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

 

У ключей с большими номерами известен публичный адрес, у ключей с меньшими номерами публичный адрес неизвестен. Алгоритм поиска разный. При неизвестном публичном ключе и приватного нужно вычислить публичный из публичного адрес. При известном публичном ключе можно построить радужную таблицу тем самым сократив объем вычислений. 

Я об этом в курсе.В чате по пазлам сатоши, один чел нашел ключ в малых диапазонах ( с таким  началом( 1BY8GQbnueY - 7545bf10859946eca(КОШЕЛЕК 67)делится кодом не хочет.Поэтому,раз стандартный  ванитеген ищет в больших диапазонах(256 бит),а хочу  с помощью chat gpt попробывать переделать код под малые диапазоны и попытать удачи.

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

один чел нашел ключ в малых диапазонах

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

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

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

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

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

Если б я умел,то конечно написал бы.А с моими знаниями проще подправить готовый код.Я уверен на 90%,что ключи сгенерированы по системе(логически поразмыслив) 

Posted

@korbengtr

Найди значения всех найденных ключей и изобрази графически.

I--*-----------------I

i--*------------------I

I---*-----------------I

I----*----------------I

Ну и так далее. Я очень примитивно изобразил. Нужно получше сделать.

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

Posted (edited)
4 часа назад, NapsterNapster сказал:

ip.bitcointalk.png

здесь до 66 пазла

Похож на график  с биржи.

Edited by korbengtr
  • 2 weeks later...
Posted (edited)

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

 

https://youtu.be/01Goy9Bx8mM?si=u1u3oq6enYFenpiB

 

Edited by alevlaslo

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