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/packOverview
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.pyalone 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?abrute 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.pyseul 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?apour 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