Recuperar una contraseña PDF olvidada: método con Hashcat y pdf2john

Actualizada:

A todos nos ha pasado alguna vez que teníamos un documento PDF protegido con contraseña y se nos ha olvidado cuál era. Afortunadamente, hay varias opciones para recuperar la contraseña perdida de nuestro documento PDF. Hace unos años recomendaba pdfcrack para Linux, pero ahora mismo hay opciones más interesantes como hashcat junto con pdf2john, que funciona en Linux, Windows y macOS.

Te comento un ejemplo práctico para que vayas probando tú mismo. Ten en cuenta que requiere algo de conocimiento técnico, algo de paciencia y tener cierta idea de cómo era la contraseña. No hay nada mágico en el método.

Instalamos Hashcat

Tenemos que ir a su web, https://hashcat.net/hashcat/, desde donde podemos descargar el programa, pero probablemente sea más sencillo acceder a la versión de tu sistema operativo; en el caso de Linux, dependerá de tu distribución y usar la instalación normal.

En mi caso, que lo quiero usar en macOS, simplemente tengo que ejecutar el siguiente comando:

Instalo Hashcat con brew en macos.
brew install hashcat

Para poder hacer esto, tienes que tener instalado homebrew en tu Mac previamente.

El problema es que Hashcat no nos permite recuperar la contraseña directamente del PDF. Para ello, primero tenemos que extraer el hash con pdf2john (de John the Ripper).

Instalamos pdf2john

Podríamos instalar John the Ripper al completo, pero para este caso solo necesitamos pdf2john.py. Lo descargamos con este comando desde el terminal de macOS:

curl -O https://raw.githubusercontent.com/openwall/john/bleeding-jumbo/run/pdf2john.py

Ahora tenemos que extraer el hash del archivo PDF.

¿Quieres instalar todo en macOS?

brew install john-jumbo
pdf2john (de John the Ripper) en macOS

Y luego configurar el path correcto a la instalación en (.zshrc o .bash_profile):

ls /opt/homebrew/Cellar/john-jumbo/

En macOS sale en este momento: 1.9.0_1, por lo que hay que poner:

#Editamos el archivo
nano ~/.zshrc

#Ponemos:
export PATH="$PATH:/opt/homebrew/Cellar/john-jumbo/1.9.0_1/share/john/"

#Guardamos y luego ponemos
source ~/.zshrc

Recuperamos la contraseña del PDF

pruebaaem.pdf es un archivo que he creado con LibreOffice con contraseña, como podéis ver en la imagen:

PDF de prueba con contraseña para usar hashcat

He creado una contraseña sencilla para abrir el documento y para cambiar permisos. Al intentar abrirlo, me pide una contraseña.

Me pide contraseña para abrir el PDF.

Desde la terminal ejecutamos el siguiente comando para encontrar el hash. Como ya hemos descargado pdf2john.py en el mismo directorio que este archivo PDF, ejecutamos lo siguiente:

pdf2john pruebaaem.pdf > hash.txt

Y nos sale un error: pyhanko is missing, run ‘pip install –user pyhanko’ to install it! Nos faltan dependencias.

Como no queremos ensuciar la instalación principal de Python en macOS, creamos un entorno virtual:

python3 -m venv pdfenv
source pdfenv/bin/activate

Y luego instalamos la dependencia:

pyhanko is missing, run 'pip install --user pyhanko' to install it!  Lo instalamos en un entorno virtual.
pip install pyhanko

Ahora sí que podemos ejecutar:

python pdf2john.py pruebaaem.pdf > hash.txt

Ahora solo tenemos que visualizar el archivo generado hash.txt:

Contenido del serhicvo hash.txt

Donde vemos lo siguiente:

$pdf$2*3*128*-1028*1*16*7af2d9cc82074e68a544fb5bfe6fd8b2*32*5e7a53755eeff4b0d124c229e241090400000000000000000000000000000000*32*10c76f963dfa93bb40b467d692ca4c87da486d988770f5c448c536443b2a3c5f

Dónde podemos ver al principio que es un cifrado AES-128. Ahora solo tenemos que ejecutar

curl -L -o rockyou.txt https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt

Para descargar un diccionario que nos ayude a encontrar la contraseña (rockyou.txt). Ejecutamos:

hashcat -m 10500 -a 0 hash.txt rockyou.txt

Básicamente, le estamos diciendo que use el listado de 14 millones de contraseñas filtradas de rockyou.txt. En mi caso no va a funcionar, porque la contraseña que he creado para este PDF no está entre esas contraseñas. Puedes usar rockyou.txt para contraseñas típicas, pero no para las complicadas.

Para mi caso concreto, tendrías que crear una regla personalizada (lo tengo fácil, porque sé cuál es la contraseña y qué patrón buscar) y meterla en un archivo que vas a usar despues:

echo -e "AEM\nPDF\nCRM\nERP\nAPI\nSQL" > suffix.txt

Estoy haciendo un poco de trampa, porque he metido en este archivo justo la palabra AEM, que es la segunda parte de mi contraseña (en rockyou.txt va a estar la primera, prueba). ¿Moraleja? Si conoces posibles opciones de contraseña del PDF o de lo que estés intentando averiguar, las cosas se simplifican mucho. En caso contrario, vas a tener que tener mucha paciencia y un buen ordenador con una gran CPU y GPU para hacer los cálculos más rápidos.

Ahora pongo:

hashcat -m 10500 -a 6 hash.txt rockyou.txt suffix.txt

Y ahora sí que obtengo algo como esto en muy poco tiempo:

hashcat (v7.1.2) starting

METAL API (Metal 372.16)
========================
* Device #01: Apple M1 Pro, skipped

OpenCL API (OpenCL 1.2 (Feb 21 2026 17:15:10)) - Platform #1 [Apple]
====================================================================
* Device #02: Apple M1 Pro, GPU, 6062/12124 MB (1136 MB allocatable), 16MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 32
Minimum salt length supported by kernel: 0
Maximum salt length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates

Optimizers applied:
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt

Watchdog: Temperature abort trigger set to 100c

Host memory allocated for this attack: 652 MB (4912 MB free)

Dictionary cache hit:
* Filename..: rockyou.txt
* Passwords.: 14344384
* Bytes.....: 139921497
* Keyspace..: 14344384

$pdf$2*3*128*-1028*1*16*7af2d9cc82074e68a544fb5bfe6fd8b2*32*5e7a53755eeff4b0d124c229e241090400000000000000000000000000000000*32*10c76f963dfa93bb40b467d692ca4c87da486d988770f5c448c536443b2a3c5f:pruebaAEM

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 10500 (PDF 1.4 - 1.6 (Acrobat 5 - 8))
Hash.Target......: $pdf$2*3*128*-1028*1*16*7af2d9cc82074e68a544fb5bfe6...2a3c5f
Time.Started.....: Thu Apr  2 15:16:29 2026 (0 secs)
Time.Estimated...: Thu Apr  2 15:16:29 2026 (0 secs)
Kernel.Feature...: Pure Kernel (password length 0-32 bytes)
Guess.Base.......: File (rockyou.txt), Left Side
Guess.Mod........: Mask (AEM) [3], Right Side
Guess.Queue.Base.: 1/1 (100.00%)
Guess.Queue.Mod..: 1/6 (16.67%)
Speed.#02........:  4650.0 kH/s (2.02ms) @ Accel:1024 Loops:70 Thr:32 Vec:1
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 524295/14344384 (3.66%)
Rejected.........: 7/524295 (0.00%)
Restore.Point....: 0/14344384 (0.00%)
Restore.Sub.#02..: Salt:0 Amplifier:0-1 Iteration:0-70
Candidate.Engine.: Device Generator
Candidates.#02...: 123456AEM -> chad91AEM
Hardware.Mon.SMC.: Fan0: 0%, Fan1: 0%
Hardware.Mon.#02.: Util: 96% Pwr:2225mW

Started: Thu Apr  2 15:16:27 2026
Stopped: Thu Apr  2 15:16:29 2026

Y al lado del hash aparece la contraseña: pruebaAEM.

Conclusión

Vas a poder recuperar la contraseña fácilmente si recuerdas parte de ella y si no es muy larga. En caso contrario, vas a tener bastantes problemas que superar.

Si no tienes ni idea de la contraseña y el documento no es muy importante, es más rápido rehacer el PDF desde cero. Hashcat es una herramienta de auditoría y recuperación realmente útil siempre y cuando tengamos algunas pistas que nos lleven por el camino correcto.

Foto del autor de algoentremanos.com Ivan Benito

Ivan Benito

Apasionado de la lectura, los viajes y la privacidad online. Experto en tecnología, SEO y WordPress desde 2007.

Si tienes preguntas, quieres que haga una review de una app, programa o producto, simplemente mándame un e-mail [contacto]. En Algoentremanos.com comparto mis opiniones personales sobre productos y servicios. Algunas reseñas pueden generar ingresos a través de enlaces afiliados, pero siempre pruebo todo a fondo y solo recomiendo lo que de verdad me gusta [saber más].

Suscríbete y recibe los mejores tutoriales de servidores, VPN y Linux

Accede a guías prácticas, tutoriales paso a paso y recomendaciones esenciales para administrar tus sistemas y aprender tecnologías de forma segura y efectiva.

Quiero acceso a los tutoriales

📩 Sin spam. Solo contenido útil.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.