rez1vr (OP)
Newbie
Offline
Activity: 13
Merit: 0
|
|
August 03, 2017, 11:21:03 AM |
|
Ситуация такая. Был сохранен приватный ключ к кошельку биткоинт. Для большей надежности изменил несколько символов в ключе. И благополучно забыл про этот кошелек. Сейчас нашел этот прив. ключ но проблема в том, что уже не помню какие символы и на что изменял. Все о кошельке можно забыть? Или есть какой либо способ подобрать? Ключ стандартный 52 символ формат WIF Compressed как понимаю.
|
|
|
|
kzv
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
August 03, 2017, 12:00:29 PM |
|
Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?
|
|
|
|
rez1vr (OP)
Newbie
Offline
Activity: 13
Merit: 0
|
|
August 03, 2017, 12:20:21 PM |
|
Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?
Нет не много. Но за подсказку в решении проблемы готов отблагодарить. Вопрос в том возможно ли восстановить доступ зная 90% при ключа.
|
|
|
|
BurningInside
|
|
August 03, 2017, 12:37:20 PM |
|
Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?
Это если знать, какую именно пару-тройку символов перебирать.
|
|
|
|
kzv
Legendary
Offline
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
August 03, 2017, 01:15:49 PM |
|
Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?
Это если знать, какую именно пару-тройку символов перебирать. Перебрать один символ 58*52 = 3016 вариантов Перебрать два символа 58*58*51 = 171 564 вариантов Перебрать три символа 58*58*58*50 = 9 755 600 вариантов Средненький комп переберет секунды за три я думаю.
|
|
|
|
algo1024
|
|
August 03, 2017, 02:24:38 PM |
|
Ну если только пару-тройку символов поперебирать - думаю есть шансы. Много биткоинTов-то хоть было?
Это если знать, какую именно пару-тройку символов перебирать. Перебрать один символ 58*52 = 3016 вариантов Перебрать два символа 58*58*51 = 171 564 вариантов Перебрать три символа 58*58*58*50 = 9 755 600 вариантов Средненький комп переберет секунды за три я думаю. Ну если найти способ проверки валидости или быстрого импортирования приватного ключа с ресканом - тогда да. Или все 9 755 600 сразу импортировать, правда не знаю, сколько такой рескан будет идти.
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
August 03, 2017, 05:01:02 PM |
|
Ну если найти способ проверки валидости
Ключи и адреса принято записывать в формате Base58Check. Это формат с контрольной суммой - он сам себя контролирует на предмет целостности. Для валидации необходимо нарыть подходящую либу или самому реализовать алгоритм проверки.
|
|
|
|
Vadi2323
Legendary
Offline
Activity: 2044
Merit: 1231
|
|
August 03, 2017, 05:54:53 PM |
|
Ну если найти способ проверки валидости
Ключи и адреса принято записывать в формате Base58Check. Это формат с контрольной суммой - он сам себя контролирует на предмет целостности. Для валидации необходимо нарыть подходящую либу или самому реализовать алгоритм проверки. Ну вот как раз всё, что на этом приватном ключе есть, а именно: не много. Но за подсказку в решении проблемы готов отблагодарить
и пойдёт на благодарность программисту. Хотя есть энтузиасты, которые любят бесплатно работать, но их мало (быстро умнеют). А вообще странный вопрос. Я бы не советовал таким способом защищать ключи.
|
|
|
|
aleksey
|
|
August 03, 2017, 07:10:36 PM |
|
за 0.03 BTC готов написать скрипт для подбора, там к томуже бткоин кеш с этого адреса можно получить
|
|
|
|
aleksey
|
|
August 04, 2017, 05:27:55 PM |
|
Скрипт для подбора написал, может кому еще пригодится 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
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
|
|
August 04, 2017, 07:18:13 PM |
|
Скрипт для подбора написал, может кому еще пригодится 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 Ну и полный перебор трех символов по моим оценкам займет примерно 100 часов. Перебор четырех символов - практически нереально... Хотя если написать многопоточный аналог на с++, то можно замутить пул и компов 10 найдут ключ в приемлемое время ))
|
|
|
|
|