probar la clave privada SSH de STDIN

1

Recientemente reencripté mi clave privada SSH para usar el nuevo formato OpenSSH con muchas rondas de KDF ( -o -a 200 ) (tarda aproximadamente 2 segundos en ejecutarse en mi CPU). Desafortunadamente, escribí mal mi frase de contraseña exactamente de la misma manera en ambas indicaciones. Asumí que era un solo intercambio de dos caracteres adyacentes, y escribí un simple script en Python que genera una lista de todos los diferentes intercambios de caracteres adyacentes individuales. Luego copié y pegué cada conjetura en el indicador de contraseña ssh-keygen hasta que desbloquee la clave y me permita restablecer la contraseña. Esto tomó varios minutos, pero tuvo éxito.

Si el error hubiera sido más complejo (2 intercambios, deslizamiento del teclado, etc.), esto se habría vuelto muy tedioso. ¿Hay una forma sencilla de probar mis conjeturas automáticamente? Esto no necesitaría una herramienta de descifrado de contraseñas optimizada en toda regla ya que yo mismo estoy generando las contraseñas candidatas, y solo probaría unos pocos miles de posibilidades. Encontré canalizando la contraseña candidata a ssh-keygen -y -f .ssh/id_rsa , pero esto no funcionó como esperaba la entrada de un terminal. También probé John The Ripper, pero solo funciona con archivos de clave privada SSH codificados en PEM de estilo antiguo.

También aceptaré respuestas que me permitan probar la frase de contraseña dentro de Python, siempre que sea compatible con el nuevo formato OpenSSH.

(para los curiosos, aquí está el script que usé):

#!/usr/bin/python3
import getpass
source=getpass.getpass()

def swap(s, i, j):
    l=list(s)
    l[i], l[j] = l[j], l[i]
    return "".join(l)

for (i,c) in enumerate(source):
    if i < len(source)-1:
        print(swap(source, i, i+1))
    
pregunta dn3s 19.06.2017 - 08:32
fuente

0 respuestas

Lea otras preguntas en las etiquetas