
Herramienta de ataque RSA (principalmente para ctf) - recupera clave privada a partir de clave pública débil y/o descifra datos
Herramienta de múltiples ataques RSA que descifra datos a partir de claves públicas débiles y recupera claves privadas.
Esta herramienta es una utilidad diseñada para descifrar datos a partir de claves públicas débiles e intentar recuperar la clave privada correspondiente. Ofrece una amplia gama de opciones de ataque para romper el cifrado RSA.
La seguridad de RSA depende de la complejidad de la factorización de enteros. Este proyecto combina múltiples algoritmos de factorización para mejorar las capacidades de descifrado.
Nota: Esta herramienta está pensada principalmente con fines educativos. No todas las claves pueden romperse en un plazo razonable. La herramienta solo admite módulos compuestos semiprimos de libro de texto RSA (no multiprimos).
Para una factorización avanzada, considere msieve, yafu o cado-nfs.
RsaCtfTool --publickey key.pub --private # Recover private key
RsaCtfTool --publickey key.pub --decryptfile ciphertext # Decrypt file
RsaCtfTool --publickey key.pub --attack wiener # Use specific attack
Para ver el uso completo, ejecute: RsaCtfTool --help
python3 -m venv venv
source venv/bin/activate
pip install -e .
docker build -t rsactftool/rsactftool .
docker run -it --rm -v $PWD:/data rsactftool/rsactftool <arguments>
--dp o --dq)--fault-sig con --fault-msg o --good-sig)Los métodos de reducción de retículo de Coppersmith resuelven raíces pequeñas de polinomios modulares (requiere la dependencia opcional SageMath para la reducción LLL de retículos).
| Ataque | Flags requeridos | Límites de viabilidad | Comando de ejemplo |
|---|---|---|---|
stereotyped_message | --sm-len y (--sm-prefix o --sm-suffix) | $e \le 17$, $X < N^{1/e}$ | RsaCtfTool --publickey key.pub --decryptfile cipher.bin --attack stereotyped_message --sm-prefix "FLAG:" --sm-len 16 |
short_pad | --decryptfile c1,c2 | $e \le 5$, $\Delta < N^{1/e^2}$ | RsaCtfTool --publickey key.pub --decryptfile c1.bin,c2.bin --attack short_pad |
partial_p | --p-high y --p-unknown-bits | $\text{unknown_bits} \le \lfloor N/4 \rfloor + 2$ ($\approx N^{0.25}$) | RsaCtfTool --publickey key.pub --attack partial_p --p-high 0x1234... --p-unknown-bits 212 --private |
partial_d | --key (clave privada parcial), opcional --d-known-bits | Bits bajos de $d$ conocidos | RsaCtfTool --key key.priv --partial --attack partial_d --d-known-bits 20 |
lattice | --key (clave parcial con aproximación de $p$) | Aproximación del factor $p$ | RsaCtfTool --key key.priv --partial --attack lattice |
smallfraction | --publickey | $p/q$ cercano a una fracción pequeña $a/b$ | RsaCtfTool --publickey key.pub --attack smallfraction --private |
Nota para parámetros de texto (
--sm-prefix,--sm-suffix): Los valores que comienzan con0xo0Xse interpretan como cadenas de bytes hexadecimales, mientras que todas las demás entradas de cadena se interpretan como bytes de texto UTF-8 / ASCII.
| Método | Descripción |
|---|---|
| Fermat | p y q cercanos |
| Pollard Rho | Factorización general |
| Curva Elíptica (ECM) | Números suaves |
| Pollard p-1 | Números suaves |
| Williams p+1 | Números suaves |
| ROCA | Generación de claves vulnerable |
| SQUFOF | Formas cuadráticas |
| Criba cuadrática | Factorización general |
| Dixon | Cuadrados aleatorios |
| Factordb | Base de datos de factorización en línea |
| Ataques de factor común | Claves que comparten factores |
| Ataques GCD | Mersenne, Primorial, Fibonacci, etc. |
RsaCtfTool --publickey key.pub --private
RsaCtfTool --publickey key.pub --decryptfile ciphertext
RsaCtfTool --publickey "*.pub" --private
RsaCtfTool --createpub -n 7828374823761928712873... -e 65537
RsaCtfTool --dumpkey --key key.pub
RsaCtfTool --dumpkey --ext --key key.pub # Include CRT parameters
RsaCtfTool --publickey key.pub --ecmdigits 25 --private
RsaCtfTool --publickey key.pub --attack wiener --private
RsaCtfTool --publickey key.pub --attack factordb --private
RsaCtfTool --publickey "*.pub" --private --sendtofdb
RsaCtfTool --isroca --publickey "examples/*.pub"
RsaCtfTool --convert_idrsa_pub --publickey ~/.ssh/id_rsa.pub
Para más ejemplos, ejecute pytest tests/ --collect-only para ver las pruebas disponibles.