==== Compilar John the Ripper para soporte de múltiples CPUs / Cores (Multihilo) ====
Para adaptar La herramienta "John the Ripper" al número de CPUs / Núcleos del sistema, se debe editar simplemente el fichero Makefile para dar soporte en la compilación al multiproceso (OpenMP). Esto no es necesario si se usa la versión Jumbo de JtR la cual tiene el soporte activado de forma predeterminada.
NOTA: En ocasiones se obtienen mejores resultados usando la opción "%%--%%fork" que permite usar varios procesos en paralelo. Esta opción deshabilita el uso de OpenMP si se usan la totalidad de cores, pero es posible combinar procesos e hilos como se puede ver al final del artículo.
Warning: OpenMP was disabled due to --fork; a non-OpenMP build may be faster
* **John the Ripper (Free / Jumbo)**: [[http://www.openwall.com/john/]]
* **John the Ripper (Bleeding-Jumbo)**: [[https://github.com/magnumripper/JohnTheRipper]]
**Activar Multiproceso**.
Fichero Makefile (dentro del directorio src).
OMPFLAGS = -fopenmp -march=native
**Compilar JtR free** (Se recomienda el uso de la versión bleeding-jumbo para disponer de más opciones).
cd src
make
make clean SYSTEM
cd ../run/
# Ejemplo para el uso de 4 Núcleos (4 hilos).
export OMP_NUM_THREADS=4
./john --test
**Benchmark** (Ejemplo de benchmark de cores John the Ripper realizado con 8 cores).
export OMP_NUM_THREADS=8
./john --test
Will run 8 OpenMP threads
Benchmarking: descrypt, traditional crypt(3) [DES 128/128 AVX-16]... DONE
Many salts: 31017K c/s real, 3798K c/s virtual
Only one salt: 28749K c/s real, 3453K c/s virtual
Benchmarking: bsdicrypt, BSDI crypt(3) ("_J9..", 725 iterations) [DES 128/128 AVX-16]... DONE
Many salts: 853254 c/s real, 108878 c/s virtual
Only one salt: 770105 c/s real, 98194 c/s virtual
Benchmarking: md5crypt [MD5 32/64 X2]... DONE
Raw: 94041 c/s real, 21268 c/s virtual
Benchmarking: bcrypt ("$2a$05", 32 iterations) [Blowfish 32/64 X2]... DONE
Raw: 7182 c/s real, 922 c/s virtual
Benchmarking: LM [DES 128/128 AVX-16]... DONE
Raw: 98362K c/s real, 21596K c/s virtual
Benchmarking: AFS, Kerberos AFS [DES 48/64 4K]... DONE
Short: 701395 c/s real, 700194 c/s virtual
Long: 3045K c/s real, 3041K c/s virtual
Benchmarking: tripcode [DES 128/128 AVX-16]... DONE
Raw: 22674K c/s real, 2704K c/s virtual
Benchmarking: dummy [N/A]... DONE
Raw: 105716K c/s real, 105335K c/s virtual
Benchmarking: crypt, generic crypt(3) [?/64]... DONE
Many salts: 2572K c/s real, 306699 c/s virtual
Only one salt: 2609K c/s real, 309688 c/s virtual
**Multihilo** / **Multiproceso** (Ej. 8 núcleos).
Para saber qué método es el más conveniente en base al hardware / ataque se recomienda hacer pruebas realizando múltiples combinaciones de números de hilos y procesos. (No se debe exceder el límite de cores del sistema).
2 Procesos con 4 hilos cada uno.
export OMP_NUM_THREADS=4
./john --fork=2 --wordlist:rockyou.txt /etc/shadow
4 Procesos con 2 hilos cada uno.
export OMP_NUM_THREADS=2
./john --fork=4 --wordlist:rockyou.txt /etc/shadow
Nota: Con la opción "%%--%%node" es factible usar varios equipos físicos con JtR.