← retour aux outils back to tools

# PACK

Password Analysis and Cracking Kit : analyse les mots de passe cassés/fuités pour générer des masques hashcat optimisés et des règles John the Ripper basées sur des motifs réels. Password Analysis and Cracking Kit — analyzes cracked/leaked passwords to generate optimized hashcat masks and John the Ripper rules based on real-world patterns.

↗ https://github.com/iphelix/pack

## Overview

PACK (Password Analysis and Cracking Kit) is a set of Python utilities that study a corpus of cracked or leaked passwords and derive statistical patterns — character-class masks, common length distributions, rule sets — that can dramatically improve the efficiency of subsequent brute-force/mask attacks. Instead of guessing masks blindly, PACK builds them from evidence of how a target population actually chooses passwords.

## Common Usage

Generate a mask list from a set of cracked passwords, ranked by occurrence

    statsgen.py cracked_passwords.txt -o stats.txt

Build a hashcat mask file from the same corpus

    maskgen.py cracked_passwords.txt -o masks.hcmask

Only include masks that would cover at least 1% of the input set

    maskgen.py cracked_passwords.txt --minfreq 1.0 -o masks.hcmask

Generate John the Ripper-compatible rules from password patterns

    rulegen.py cracked_passwords.txt -o rules.john

## Example Workflow

Step 1: Analyze a previous cracking session’s output for patterns

    statsgen.py rockyou-cracked.txt

Step 2: Generate masks ranked by how many passwords they’d match

    maskgen.py rockyou-cracked.txt -o custom.hcmask --minlength 6 --maxlength 12

Step 3: Feed the mask file to hashcat for a targeted mask attack

    hashcat -m 1000 -a 3 hashes.txt custom.hcmask

## Options (maskgen.py)

    -o FILE              output mask file
    --minlength N         minimum password length to consider
    --maxlength N         maximum password length to consider
    --minfreq PCT         minimum occurrence frequency to include a mask
    --targettime SECONDS  target crack time used to rank/filter masks
    --occurrence          show occurrence count alongside each mask

## Tips

- Run PACK against passwords already cracked from a similar target population (e.g. a prior breach from the same company/sector) for the most relevant masks.
- `statsgen.py` alone is useful just for a quick sanity report — average length, character-set usage — even without generating masks.
- Masks generated this way usually massively outperform generic `?a?a?a?a?a?a?a?a` brute force for real-world targets.

Help / Man page

    usage: maskgen.py [-h] [-o OUTPUT] [--minlength MINLENGTH]
                       [--maxlength MAXLENGTH] [--minfreq MINFREQ]
                       [--targettime TARGETTIME] [--occurrence] [-v]
                       INPUT

    Analyze passwords and generate hashcat mask files

    positional arguments:
      INPUT                 input file of plaintext passwords

    optional arguments:
      -h, --help            show this help message and exit
      -o OUTPUT             output mask file
      --minlength MINLENGTH minimum password length
      --maxlength MAXLENGTH maximum password length
      --minfreq MINFREQ     minimum frequency percentage to include mask
      --targettime TIME     estimated crack time per mask (seconds)
      --occurrence          show occurrence counts
      -v, --verbose         verbose output

## Vue d’ensemble

PACK (Password Analysis and Cracking Kit) est un ensemble d’utilitaires Python qui étudient un corpus de mots de passe cassés ou fuités et en dérivent des motifs statistiques : masques par classe de caractères, distributions de longueurs courantes, jeux de règles, qui peuvent considérablement améliorer l’efficacité des attaques par brute-force/masque ultérieures. Plutôt que de deviner des masques à l’aveugle, PACK les construit à partir de preuves sur la façon dont une population cible choisit réellement ses mots de passe.

## Utilisation courante

    # Générer une liste de masques depuis un ensemble de mots de passe cassés, classés par occurrence
    statsgen.py cracked_passwords.txt -o stats.txt

    # Construire un fichier de masques hashcat depuis le même corpus
    maskgen.py cracked_passwords.txt -o masks.hcmask

    # N'inclure que les masques couvrant au moins 1% de l'ensemble d'entrée
    maskgen.py cracked_passwords.txt --minfreq 1.0 -o masks.hcmask

    # Générer des règles compatibles John the Ripper à partir des motifs de mots de passe
    rulegen.py cracked_passwords.txt -o rules.john

## Exemple de flux de travail

    # Étape 1 : analyser la sortie d'une précédente session de cassage à la recherche de motifs
    statsgen.py rockyou-cracked.txt

    # Étape 2 : générer des masques classés selon le nombre de mots de passe qu'ils couvriraient
    maskgen.py rockyou-cracked.txt -o custom.hcmask --minlength 6 --maxlength 12

    # Étape 3 : fournir le fichier de masques à hashcat pour une attaque par masque ciblée
    hashcat -m 1000 -a 3 hashes.txt custom.hcmask

## Options (maskgen.py)

    -o FILE              output mask file
    --minlength N         minimum password length to consider
    --maxlength N         maximum password length to consider
    --minfreq PCT         minimum occurrence frequency to include a mask
    --targettime SECONDS  target crack time used to rank/filter masks
    --occurrence          show occurrence count alongside each mask

## Conseils

- Lancer PACK contre des mots de passe déjà cassés issus d’une population cible similaire (par exemple une fuite précédente de la même entreprise/secteur) pour obtenir les masques les plus pertinents.
- `statsgen.py` seul est déjà utile pour un rapport de sanité rapide : longueur moyenne, usage des jeux de caractères, même sans générer de masques.
- Les masques générés de cette façon surpassent généralement massivement un brute-force générique `?a?a?a?a?a?a?a?a` pour des cibles réelles.

Aide / Page de manuel

    usage: maskgen.py [-h] [-o OUTPUT] [--minlength MINLENGTH]
                       [--maxlength MAXLENGTH] [--minfreq MINFREQ]
                       [--targettime TARGETTIME] [--occurrence] [-v]
                       INPUT

    Analyze passwords and generate hashcat mask files

    positional arguments:
      INPUT                 input file of plaintext passwords

    optional arguments:
      -h, --help            show this help message and exit
      -o OUTPUT             output mask file
      --minlength MINLENGTH minimum password length
      --maxlength MAXLENGTH maximum password length
      --minfreq MINFREQ     minimum frequency percentage to include mask
      --targettime TIME     estimated crack time per mask (seconds)
      --occurrence          show occurrence counts
      -v, --verbose         verbose output