← retour aux outils back to tools

# 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-openssl

## Overview

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 `-salt` or 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 `-salt` ou 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