Проверьте парольную фразу для закрытого ключа RSA

Как я могу проверить парольную фразу для закрытого ключа RSA (формат PEM) в python? Я хочу использовать грубую силу и использовать свой собственный словарь.

Я создал ключ этой командой в MacOS:

ssh-keygen -t rsa -C "your_email@example.com" 

Частный RSA Ключевые детали:

Сила: 2048 бит

Алгоритм: RSA

Размер: 2048

Отпечатки

SHA1: 80 09 90 30 96 8E 24 FC A9 4B 46 E1 BE B7 23 2D EC 16 2C EB

SHA256: 67 93 E2 0A 9F E7 C9 7E A9 66 AD 05 52 FD 19 8B 3E CB 8A 59 9F 51 F0 A6 65 6F 6F 9A 9D 7B 35 B9

Ключевая фраза: "тестирование"

как советовал @Hannu, я запустил этот код, но он отвергает правильные и неправильные парольные фразы

from Crypto.PublicKey import RSA
kf = open("testing", "r")
kt = kf.read()
kf.close()
dlist = ["foo", "bar", "testing"]
for d in dlist:
    try:
        nk = RSA.importKey(kt, passphrase=d)
        print "success", d
        break
    except ValueError:
        print "nosuccess", d
        pass

2 ответа

Решение

Удалось к этому с Парамико вместо Пикрипто:

import paramiko
from paramiko import rsakey

kf = open("sshk", "r")

dlist = ["foo", "bar", "foobar", "klunssi", "xyzzy"]

for d in dlist:
    kf.seek(0)
    try:
        nk = rsakey.RSAKey.from_private_key(kf, password=d)
        print "success", d
    except paramiko.ssh_exception.SSHException:
        print "fail", d

Это работает по крайней мере для меня. Надеюсь это поможет.

Ханну

Я бы посоветовал взглянуть на модуль RSA в Crypto

https://www.dlitz.net/software/pycrypto/api/current/Crypto.PublicKey.RSA-module.html

Что-то вроде следующего было бы хорошей отправной точкой

>>> from Crypto.PrivateKey import RSA
>>>
>>> key = RSA.generate(2048)
>>> f = open('mykey.pem','w')
>>> f.write(RSA.exportKey('PEM'))
>>> f.close()
...
>>> f = open('mykey.pem','r')
>>> key = RSA.importKey(f.read())
Другие вопросы по тегам