Post
Topic
Board Кодеры
Re: Вопрос. Изменение приватного ключа.
by
aleksey
on 04/08/2017, 17:27:55 UTC
Скрипт для подбора написал, может кому еще пригодится

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