bruteforce-salted-openssl
Brute-force la passphrase d'un fichier chiffré avec `openssl enc` salé, en essayant des candidats d'une wordlist. Brute-forces the passphrase on a file encrypted with salted `openssl enc`, trying candidates from a wordlist.
↗ https://github.com/glv2/bruteforce-salted-opensslOverview
bruteforce-salted-openssl recovers the passphrase used to encrypt a file with the openssl enc -salt command family (a common ad-hoc encryption method for CTFs and quick file protection). It reads the salted header, then tries each candidate passphrase from a wordlist through the same key-derivation and cipher settings until decryption succeeds.
Common Usage
Brute-force with a wordlist against a salted openssl-encrypted file
bruteforce-salted-openssl -f wordlist.txt secret.enc
Specify cipher/digest explicitly if known (must match how it was encrypted)
bruteforce-salted-openssl -c aes-256-cbc -d sha256 -f wordlist.txt secret.enc
Multi-threaded for speed
bruteforce-salted-openssl -f rockyou.txt -t 8 secret.enc
Typical Workflow
Step 1: Inspect the file header for salt confirmation
xxd secret.enc | head -1
→ “Salted__” magic bytes confirm openssl enc -salt format
Step 2: Run the attack
bruteforce-salted-openssl -f /usr/share/wordlists/rockyou.txt -t 8 secret.enc
Step 3: Decrypt manually once the passphrase is recovered
openssl enc -d -aes-256-cbc -pbkdf2 -in secret.enc -out secret.txt -k '<found_pass>'
Tips
- Only works on files with the
Salted__magic header — files encrypted without-saltor with a raw key won’t match - Guess the cipher/digest from context if the encryption command isn’t known; wrong settings mean it will never find the match even with the right passphrase
- Much faster than LUKS/wallet brute-forcing since OpenSSL’s KDF is comparatively cheap — use larger wordlists here
Help / Man page
Usage: bruteforce-salted-openssl [options] <encrypted_file>
Options:
-f FILE Wordlist file to try as passphrases
-c CIPHER Cipher used (default: aes-256-cbc)
-d DIGEST Digest used for key derivation (default: md5, try sha256)
-t THREADS Number of threads
-a Try to auto-detect base64-encoded input
-v Verbose, print attempts
-h Show help
Vue d’ensemble
bruteforce-salted-openssl récupère la passphrase utilisée pour chiffrer un fichier avec la famille de commandes openssl enc -salt (une méthode de chiffrement ad-hoc courante pour les CTF et la protection rapide de fichiers). Il lit l’en-tête salé, puis essaie chaque passphrase candidate d’une wordlist avec les mêmes réglages de dérivation de clé et de chiffrement, jusqu’à ce que le déchiffrement réussisse.
Utilisation courante
# Brute-force avec une wordlist contre un fichier openssl salé chiffré
bruteforce-salted-openssl -f wordlist.txt secret.enc
# Spécifier explicitement le cipher/digest si connu (doit correspondre au chiffrement d'origine)
bruteforce-salted-openssl -c aes-256-cbc -d sha256 -f wordlist.txt secret.enc
# Multi-threadé pour la vitesse
bruteforce-salted-openssl -f rockyou.txt -t 8 secret.enc
Workflow typique
# Étape 1 : inspecter l'en-tête du fichier pour confirmer le salt
xxd secret.enc | head -1
# → Les octets magic "Salted__" confirment le format openssl enc -salt
# Étape 2 : lancer l'attaque
bruteforce-salted-openssl -f /usr/share/wordlists/rockyou.txt -t 8 secret.enc
# Étape 3 : déchiffrer manuellement une fois la passphrase récupérée
openssl enc -d -aes-256-cbc -pbkdf2 -in secret.enc -out secret.txt -k '<found_pass>'
Conseils
- Ne fonctionne que sur les fichiers avec l’en-tête magic
Salted__: les fichiers chiffrés sans-saltou avec une clé brute ne correspondront pas - Devinez le cipher/digest d’après le contexte si la commande de chiffrement est inconnue ; de mauvais réglages font qu’il ne trouvera jamais la correspondance, même avec la bonne passphrase
- Bien plus rapide que le brute-force de LUKS/wallet, car la KDF d’OpenSSL est comparativement peu coûteuse : utilisez de plus grandes wordlists ici
Aide / Page de manuel
Usage: bruteforce-salted-openssl [options] <encrypted_file>
Options:
-f FILE Wordlist file to try as passphrases
-c CIPHER Cipher used (default: aes-256-cbc)
-d DIGEST Digest used for key derivation (default: md5, try sha256)
-t THREADS Number of threads
-a Try to auto-detect base64-encoded input
-v Verbose, print attempts
-h Show help