software 2026 · Rust + CUDA · RTX 4060 Ti

rarpc: crackeador de contraseñas RAR con aceleración GPU en CUDA y Rust

rarpc es un crackeador de contraseñas para archivos RAR con aceleración GPU mediante CUDA. Escrito en Rust con kernels CUDA propios para RAR 5, RAR 3 y RAR 1.5. Seis modos de ataque, GUI interactiva y checkpoints para reanudar sesiones interrumpidas. En una RTX 4060 Ti: 68 KH/s en RAR 5, 83 KH/s en RAR 3 y 6,69 MH/s en RAR 1.5.

rarpc — GUI en modo Brute Force: charset configurado a 36 caracteres (a-z + 0-9 + hex), GPU/Rendimiento desplegado, ejecutando a 62,6 KH/s contra test_rar3.rar tras 57 segundos
La GUI en acción: ataque de fuerza bruta contra un RAR 3 (AES-256-CBC, PBKDF2-HMAC-SHA256), 62,6 KH/s a los 57 segundos, contraseña actual vqce.

01 — El problema de crackear RAR modernos

Crackear un archivo RAR protegido con contraseña no es lo mismo que crackear un hash MD5. El formato RAR 5 usa AES-256-CBC con PBKDF2-SHA256 como función de derivación de clave — el mismo esquema que protege muchos gestores de contraseñas — con un número de iteraciones diseñado expresamente para que cada intento sea caro computacionalmente. El RAR 3 usa AES-128 con una KDF propia basada en SHA-1, más rápida pero también pensada para ralentizar ataques. El RAR 1.5, anterior a la era de las contraseñas fuertes, usa un cifrado propietario mucho más vulnerable.

Con CPU se consiguen típicamente 200–500 contraseñas por segundo en RAR 5. Eso convierte cualquier contraseña de más de seis caracteres en algo prácticamente imposible de crackear por fuerza bruta. La GPU cambia la ecuación: la paralelización masiva de CUDA permite ejecutar miles de derivaciones simultáneas. rarpc lleva esa lógica al máximo con kernels escritos a mano para cada formato.

El resultado en una RTX 4060 Ti:

02 — Formatos soportados

rarpc detecta automáticamente el formato del archivo al abrirlo y carga el cracker correspondiente.

RAR 5 (AES-256 + PBKDF2-SHA256). El formato moderno de WinRAR. La KDF deriva la clave AES-256 aplicando PBKDF2 con SHA-256 como PRF y un número fijo de iteraciones. El kernel CUDA (rar5_kdf.cu) implementa SHA-256 con instrucciones LOP3 específicas de SM 89 (Ada Lovelace) para maximizar el throughput. La verificación usa un bloque de datos conocidos en la cabecera del archivo.

RAR 3 (AES-128 + SHA-1 KDF). El formato de WinRAR 3.x, todavía el más común en archivos de más de diez años. La KDF es una construcción SHA-1 iterada con sal de 8 bytes y 262.144 rounds. El kernel (rar3_kdf.cu) tiene dos variantes: largeblock (por defecto, mejor throughput) y classic para máxima compatibilidad.

RAR 1.5. El formato original pre-SHA. Usa un cifrado de flujo propietario con una clave derivada simplemente. rarpc lo ataca con un filtro probabilístico en GPU (rar15_filter.cu): descarta candidatos por propiedades estadísticas del texto descifrado antes de pasar a verificación completa en CPU, consiguiendo 89× la velocidad de un ataque puro CPU.

03 — Modos de ataque

rarpc implementa seis modos de ataque, configurables tanto desde la GUI como desde la línea de comandos:

Wordlist. Ataque de diccionario clásico. Lee un fichero de texto con una contraseña por línea y las prueba en orden.

rarpc archivo.rar --wordlist diccionario.txt

Brute force. Fuerza bruta pura con charset configurable. La GUI permite construir el charset visualmente (grupos predefinidos: a-z, A-Z, 0-9, símbolos, espacio, hex) o escribirlo a mano. Configurable con longitud mínima y máxima.

rarpc archivo.rar --brute --charset "abcdefghijklmnopqrstuvwxyz" --min-len 4 --max-len 6

Mask. Fuerza bruta con patrón posicional. Los tokens ?l ?u ?d ?s ?a ?h representan clases de caracteres (minúsculas, mayúsculas, dígitos, símbolos, todos, hex) y se pueden mezclar libremente. Útil cuando se conoce la estructura aproximada de la contraseña.

rarpc archivo.rar --mask "?u?l?l?l?d?d?d?d"

Rules. Aplica transformaciones sobre una wordlist: mayúsculas, invertir, añadir sufijos numéricos, sustituir letras por números (l33t), y combinaciones. Multiplica el alcance efectivo del diccionario sin coste de almacenamiento.

rarpc archivo.rar --wordlist diccionario.txt --rules

Markov. Modelo de trigramas entrenado sobre una wordlist. En lugar de probar palabras en orden o por fuerza bruta, genera candidatos ordenados por probabilidad lingüística. Encuentra contraseñas basadas en palabras reales antes que la fuerza bruta pura.

Combinator. Concatenación de pares o tríos de palabras del diccionario. Cubre el patrón habitual de contraseñas tipo palabra1palabra2 o PalabraNumero sin necesidad de generarlas a mano.

rarpc archivo.rar --wordlist diccionario.txt --combine

Todos los modos soportan checkpoints para guardar el estado y reanudar si el ataque se interrumpe:

rarpc archivo.rar --wordlist diccionario.txt --session mi_sesion
rarpc --resume mi_sesion

04 — La pipeline GPU

El cuello de botella en cualquier crackeador es la KDF: cada contraseña candidata requiere cientos de miles de operaciones criptográficas antes de poder verificar si es correcta. rarpc estructura esto en una pipeline asíncrona de tres etapas que mantiene la GPU siempre ocupada:

  1. Generación de candidatos (CPU) — el modo de ataque activo produce el siguiente batch de contraseñas en RAM.
  2. KDF en GPU — el kernel CUDA toma el batch, deriva las claves y devuelve los candidatos que pasan la verificación rápida.
  3. Verificación completa (CPU) — los candidatos que sobreviven el filtro GPU se verifican descifrando el bloque de datos real del archivo.

Los kernels están escritos en CUDA C con optimizaciones explícitas para SM 89 (Ada Lovelace): instrucciones LOP3 para las operaciones booleanas de SHA-256, SHA-1 con 80 escalares desplegados, y AES en registros sin pasar por memoria compartida. El código fuente de los kernels está en kernels/.

En sistemas multi-GPU se puede seleccionar la tarjeta con --gpu <índice> o activar el modo CPU-only con --cpu si no hay GPU disponible.

05 — La GUI

Ejecutar rarpc sin argumentos abre la interfaz gráfica construida con egui. Tiene cuatro pestañas: Wordlist, Brute Force, Mask y Benchmark, más un panel de configuración GPU desplegable.

La pestaña Brute Force permite construir el charset visualmente pulsando los botones de grupo (a-z, A-Z, 0-9, Símbolos, Espacio, Hex 0-f) y muestra el charset resultante en tiempo real. El panel GPU/Rendimiento expone el índice de GPU, el batch size y el toggle CPU-only. El log en la parte inferior muestra las operaciones en curso, y la barra de estado actualiza intentos, velocidad, tiempo transcurrido y contraseña actual mientras el ataque corre.

La GUI y el CLI comparten exactamente el mismo motor de ataque — la GUI es una capa delgada sobre el mismo pipeline.

06 — Compilar desde fuente

Requisitos: Windows 10/11 x64, CUDA Toolkit 12.x, Visual Studio Build Tools 2022 (componente MSVC C++) y Rust stable.

git clone https://github.com/unmateria/rarpc.git
cd rarpc
cargo build --release

El script build.rs localiza automáticamente nvcc y cl.exe de Visual Studio. Si CUDA no está en el PATH, hay que asegurarse de que el CUDA Toolkit esté instalado correctamente y que las variables de entorno del instalador se hayan aplicado. El binario resultante (target/release/rarpc.exe) no tiene dependencias externas en tiempo de ejecución salvo las DLLs CUDA que el instalador copia a System32.

Para otras arquitecturas GPU cambiar el flag -arch=sm_89 en build.rs por la SM de la tarjeta objetivo (sm_75 para Turing, sm_86 para Ampere, etc.).

Repositorio en GitHub — código fuente completo (Rust + CUDA)

Hay tres ejecutables precompilados, uno por generación de GPU. Descarga el que corresponda a tu tarjeta — no son intercambiables:

Las versiones SM 86 y SM 75 son un 15–25 % más lentas en RAR 5 y RAR 3 al no disponer de las optimizaciones de ISA de Ada Lovelace. GPUs AMD/Intel no son compatibles — el código es CUDA puro.