# John The Ripper

### 🔍 ¿Qué es John the Ripper?

**John the Ripper** es una de las herramientas de **cracking de contraseñas más conocidas y utilizadas** en el mundo de la ciberseguridad. Su objetivo es detectar contraseñas débiles realizando ataques de fuerza bruta, diccionario o combinaciones híbridas, generalmente sobre archivos de contraseñas previamente obtenidos.

Desarrollado inicialmente para sistemas Unix, **hoy soporta múltiples plataformas** (Windows, macOS, Linux) y formatos de hash.

### 💡 ¿Para qué se usa?

* Auditar contraseñas de usuarios en sistemas.
* Recuperar contraseñas olvidadas (en entornos legales).
* Comprobar robustez de contraseñas en pruebas de penetración.
* Realizar ejercicios de CTF (Capture The Flag) o laboratorios (HackTheBox, TryHackMe).

### 🔐 ¿Qué tipos de hashes puede romper?

John the Ripper soporta una **amplia variedad de algoritmos**, como:

| Tipo de hash                 | Usado en                                 |
| ---------------------------- | ---------------------------------------- |
| **MD5**                      | Aplicaciones web, sistemas antiguos      |
| **SHA-1 / SHA-256**          | Sistemas modernos, Linux, bases de datos |
| **NTLM**                     | Windows                                  |
| **bcrypt**                   | Sistemas modernos, Linux                 |
| **DES / LM**                 | Unix antiguos, Windows Legacy            |
| **ZIP / RAR / PDF / Office** | Archivos protegidos                      |

> 🎯 Puede crackear hashes de archivos `/etc/shadow`, bases de datos, documentos cifrados, etc.

#### ⚙️ Modos de ataque

| Modo                          | Descripción                                                                                          |
| ----------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Diccionario**               | Usa un archivo de contraseñas comunes para comparar con los hashes.                                  |
| **Incremental (brute-force)** | Prueba todas las combinaciones posibles (lento pero efectivo).                                       |
| **Rule-based**                | Usa reglas avanzadas sobre un diccionario para mutar palabras (e.g., reemplazar letras por números). |
| **External**                  | Usa funciones personalizadas en C para ataques específicos.                                          |

***

### 🧪 Ejemplo de uso básico

Supón que tienes un archivo `hashes.txt` con hashes extraídos de `/etc/shadow`:

```bash
john hashes.txt
```

Para usar un diccionario personalizado:

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
```

Ver resultados:

```bash
john --show hashes.txt
```

#### 🔧 ¿Cómo obtener los hashes?

* En Linux: desde `/etc/shadow` o `passwd`
* En Windows: usando herramientas como **pwdump** o **samdump2**
* Desde archivos cifrados: usando `zip2john`, `rar2john`, `pdf2john`, etc.

Ejemplo para archivos ZIP:

```bash
john archivo.zip > hash.txt
john hash.txt
```
