RSA
Definición
Método para encriptar que se basa en dos claves, una pública y otra privada.
Números
n -> p*q, este número se puede extraer de una clave pública
e -> Otro número que se encuentra en la clave pública
d -> función multiplicativa inversa de e
p -> número primo
q -> número primo
Teniendo todos los número se puede computar una clave privada.
Utilidades
cryptool -> Página para descifrar textos.
Mi herramienta para generar la clave privada:
#!/usr/bin/python3
from Crypto.PublicKey import RSA
from pwn import *
def def_handler(sig, frame):
print("\n\n[!] Saliendo...\n")
sys.exit(1)
# Ctrl_C
signal.signal(signal.SIGINT, def_handler)
# Variables globales
id_rsa_pub = "decoder.pub" # id_rsa.pub file name
p = 280651103481631199181053614640888768819
q = 303441468941236417171803802700358403049
def generatePrivateKey():
with open(id_rsa_pub, "r") as f:
key = RSA.importKey(f.read())
log.info("n -> %s" % key.n)
log.info("e -> %s" % key.e)
log.info("p -> %s" % p)
log.info("q -> %s" % q)
n = key.n
e = key.e
m = n-(p+q-1)
d = pow(e, -1, m)
log.info("m -> %s" % m)
log.info("d -> %s" % d)
finalkey = RSA.construct((n, e, d, p, q))
print((finalkey.exportKey()).decode())
if __name__ == '__main__':
generatePrivateKey()
Descargar aqui -> RSAdecoder.py
Escrito el 14-12-2021 a las 07:19 pm por creep33.