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