Есть ли способ представить все типы закрытых ключей как регулярное выражение? (Неважно, действительны они или нет) - PullRequest
0 голосов
/ 06 апреля 2019

Я пишу программу для проверки массива строк на предмет наличия одного из следующих элементов; 1. Частные ключи 2. BIP 39 семян (12, 18 и 24 слова)

Я уже могу проверить закрытый ключ WIF, но не представляю, как представить что-либо, что удаленно выглядит как закрытый ключ (WIF, Extended Format / ECDSA, Mini, Parent Private Key) с помощью Regex. Если вы не думаете, что Regex - это путь, вы можете предложить мне что-то еще, помните, что мне не нужно проверять, действительно ли оно существует, и мне не нужно что-то слишком сложное.

Для проверки семян BIP 39 у меня есть функция, которая разбивает список строк по очереди на 12, 18 и 24 и сравнивает каждый фрагмент со списком строк из всех 2048 слов в BIP39, но, похоже, не работает .

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

z = "5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU"

exp = bool(re.match(r"^[5KL][1-9A-HJ-NP-Za-km-z]{48,51}$", z))
   if exp == True:
      print ("Found Private Key with regex")
   else
      print ("Didnt find a WIF but other keys might still be in it")

Вот код для проверки того, что он содержит семя bip39

for m in (global_array):

    try:
      new_array = global_array[m:12]
      if set(new_array).issubset(set(bip39_list)) == True:
         print("Possible 12 - Word BIP 39 seed found!")
         print(new_array)
      except:
         continue
     continue

     try:
       new_array = global_array[m:18]
       if set(new_array).issubset(set(bip39_list)) == True:
         print("Possible 18 - Word BIP 39 seed found!")
         print(new_array)
      except:
         continue
       continue

      try:
        new_array = global_array[m:24]
        if set(new_array).issubset(set(bip39_list)) == True:
          print("Possible 24 - Word BIP 39 seed found!")
          print(new_array)
       except:
         continue
  continue

Пример данных, который содержит все, что я искал, будет;

global_array = ["5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU", "KziXBfNy2eZEKHdZeBZQ3ZyW3joXcv2k66yHuKPaDgNwEX76wMPU", "await", "abandon", "actress", "actual", "adapt", "satoshi", "advance", "advice", "aerobic", "admit","afraid","again","age","zola", "zolof", "yada", "yada"]

Я бы хотел, чтобы можно было правильно проверить bip39, так как тот, который я сделал выше, не работает. Я хотел бы проверить все типы закрытых ключей, а не только wif.

Мне также хотелось бы, чтобы кто-нибудь мог добавить способ переписать его как многопоточный с длинным списком из примерно 10 000 файлов.

...