Bitcoin Forum
May 25, 2024, 03:53:12 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Вопрос. Изменение приватного ключа.  (Read 549 times)
rez1vr (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
August 03, 2017, 11:21:03 AM
 #1

Ситуация такая. Был сохранен приватный ключ к кошельку биткоинт. Для большей надежности изменил несколько символов в ключе. И благополучно забыл про этот кошелек. Сейчас нашел этот прив. ключ но проблема в том, что уже не помню какие символы и на что изменял. Все о кошельке можно забыть? Или есть какой либо способ подобрать? Ключ стандартный 52 символ формат WIF Compressed как понимаю.
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
August 03, 2017, 12:00:29 PM
 #2

Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?

OpenTrade - Open Source Cryptocurrency Exchange
rez1vr (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
August 03, 2017, 12:20:21 PM
 #3

Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?
Нет не много. Но за подсказку в решении проблемы готов отблагодарить.  Вопрос в том возможно ли восстановить доступ зная 90% при ключа.
BurningInside
Hero Member
*****
Offline Offline

Activity: 952
Merit: 518



View Profile
August 03, 2017, 12:37:20 PM
 #4

Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?

Это если знать, какую именно пару-тройку символов перебирать.
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
August 03, 2017, 01:15:49 PM
 #5

Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?

Это если знать, какую именно пару-тройку символов перебирать.

Перебрать один символ 58*52 = 3016 вариантов
Перебрать два символа 58*58*51 = 171 564 вариантов
Перебрать три символа 58*58*58*50 = 9 755 600 вариантов

Средненький комп переберет секунды за три я думаю.

OpenTrade - Open Source Cryptocurrency Exchange
algo1024
Hero Member
*****
Offline Offline

Activity: 980
Merit: 505



View Profile
August 03, 2017, 02:24:38 PM
 #6

Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?

Это если знать, какую именно пару-тройку символов перебирать.

Перебрать один символ 58*52 = 3016 вариантов
Перебрать два символа 58*58*51 = 171 564 вариантов
Перебрать три символа 58*58*58*50 = 9 755 600 вариантов

Средненький комп переберет секунды за три я думаю.

Ну если найти способ проверки валидости или быстрого импортирования приватного ключа с ресканом - тогда да. Или все 9 755 600 сразу импортировать, правда не знаю, сколько такой рескан будет идти.

BitSend ◢◤Clients | Source
www.bitsend.info
█▄
█████▄
████████▄
███████████▄
██████████████
███████████▀
████████▀
█████▀
█▀












Segwit | Core 0.14 | Masternodes
XEVAN | DK3 | Electrum soon
Bitcore - BTX/BTC -Project












BSD -USDT | Bittrex | C.Gather | S.Exchange
Cryptopia | NovaExchange | Livecoin
Litebit.eu | Faucet | Bitsend Airdrop













████
 ████
  ████
   ████
    ████
     ████
      ████
       ████
        ████
       ████
      ████
     ████
    ████
   ████
  ████
 ████
████

████
 ████
  ████
   ████
    ████
     ████
      ████
       ████
        ████
       ████
      ████
     ████
    ████
   ████
  ████
 ████
████
A-Bolt
Legendary
*
Offline Offline

Activity: 2317
Merit: 2318


View Profile
August 03, 2017, 05:01:02 PM
 #7

Ну если найти способ проверки валидости

Ключи и адреса принято записывать в формате Base58Check.
Это формат с контрольной суммой - он сам себя контролирует на предмет целостности. Для валидации необходимо нарыть подходящую либу или самому реализовать алгоритм проверки. 
Vadi2323
Legendary
*
Offline Offline

Activity: 2044
Merit: 1231


View Profile
August 03, 2017, 05:54:53 PM
 #8

Ну если найти способ проверки валидости

Ключи и адреса принято записывать в формате Base58Check.
Это формат с контрольной суммой - он сам себя контролирует на предмет целостности. Для валидации необходимо нарыть подходящую либу или самому реализовать алгоритм проверки. 

Ну вот как раз всё, что на этом приватном ключе есть, а именно:

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

и пойдёт на благодарность программисту. Хотя есть энтузиасты, которые любят бесплатно работать, но их мало (быстро умнеют). А вообще странный вопрос. Я бы не советовал таким способом защищать ключи.
aleksey
Sr. Member
****
Offline Offline

Activity: 245
Merit: 254


View Profile
August 03, 2017, 07:10:36 PM
 #9

за 0.03 BTC готов написать скрипт для подбора, там к томуже бткоин кеш с этого адреса можно получить
aleksey
Sr. Member
****
Offline Offline

Activity: 245
Merit: 254


View Profile
August 04, 2017, 05:27:55 PM
 #10

Скрипт для подбора написал, может кому еще пригодится

Code:
import base58

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("key", help="base58 key, for example LtVAmzT7NwqNHxVDpVkhE94oYwQ4ZmEc6s2HkbmCfj59tpzfgBpu")
parser.add_argument("count", help="count symbols for change 2", type=int)
args = parser.parse_args()

print("Params:")
print(args.key)
print(args.count)

bad_key = args.key
bad_symbols_count = args.count

key_len = 52

if len(bad_key) != key_len:
    print("Key length is wrong!!")
    exit()

for i in range(key_len):
    if bad_key[i] not in base58.alphabet:
        print("Warrning! Symbol", bad_key[i], 'pos', i, 'not base58' )
   
def check(key, start, level):
    for i in range(start, key_len):
        if level != 0:
            print('  ' * (5 - level), i, '/', key_len, '--', level + 1)
        for l in base58.alphabet:
            test = key[:i] + l + key[i+1:]
            if level == 0:
                try:
                    base58.b58decode_check(test)
                except ValueError:
                    continue
                print('Found: ' + test)
                return True
            elif check(test, i + 1, level - 1):
                return True

if not check(bad_key, 1, bad_symbols_count - 1):
    print('NOT found')
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
August 04, 2017, 07:18:13 PM
 #11

Скрипт для подбора написал, может кому еще пригодится

Code:
import base58

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("key", help="base58 key, for example LtVAmzT7NwqNHxVDpVkhE94oYwQ4ZmEc6s2HkbmCfj59tpzfgBpu")
parser.add_argument("count", help="count symbols for change 2", type=int)
args = parser.parse_args()

print("Params:")
print(args.key)
print(args.count)

bad_key = args.key
bad_symbols_count = args.count

key_len = 52

if len(bad_key) != key_len:
    print("Key length is wrong!!")
    exit()

for i in range(key_len):
    if bad_key[i] not in base58.alphabet:
        print("Warrning! Symbol", bad_key[i], 'pos', i, 'not base58' )
   
def check(key, start, level):
    for i in range(start, key_len):
        if level != 0:
            print('  ' * (5 - level), i, '/', key_len, '--', level + 1)
        for l in base58.alphabet:
            test = key[:i] + l + key[i+1:]
            if level == 0:
                try:
                    base58.b58decode_check(test)
                except ValueError:
                    continue
                print('Found: ' + test)
                return True
            elif check(test, i + 1, level - 1):
                return True

if not check(bad_key, 1, bad_symbols_count - 1):
    print('NOT found')

Хороший скрипт. Рабочий.
Нужно добавить, что для работы надо сделать
sudo pip install base58

 Smiley

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

OpenTrade - Open Source Cryptocurrency Exchange
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!