
Génère des millions de mutations de mots de passe basées sur des mots-clés en quelques secondes.
Un grand merci à DavidAngelos :
▶️ Ajout d'une barre de progression à chaque étape pour suivre l'exécution.
▶️ Options ajoutées :
-i / --inorder) : joindre les mots-clés uniquement dans l'ordre original (ex. foo,bar,baz → foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).-c / --combinations) : générer chaque ordre de chaque sous-ensemble (ex. foo,bar,baz → foo, bar, baz, foobar, foobaz, barfoo, …, bazbarfoo).--sep <chaîne>) : lors de la jonction des mots, insérer cette chaîne entre les jetons (par défaut aucun séparateur).--max-combine <N>) : limite le nombre de mots-clés bruts joints ensemble (par défaut : 2).--minlen/--maxlen <N>) : filtrer la liste de mots finale pour ne conserver que les mots de la longueur souhaitée.Psudohash est un générateur de listes de mots de passe pour orchestrer des attaques par force brute et le craquage de hachages. Il imite certains schémas de création de mots de passe couramment utilisés par les humains, comme le remplacement de lettres par des symboles ou des chiffres (leet), les variations de casse, l'ajout d'un bourrage commun avant ou après la phrase de passe principale, etc. Il est basé sur des mots-clés et hautement personnalisable. 🎥 -> Présentation vidéo
Les administrateurs système et autres employés utilisent souvent une version mutée du nom de l'entreprise pour définir des mots de passe (par exemple Am@z0n_2022). C'est couramment le cas pour les périphériques réseau (points d'accès Wi-Fi, commutateurs, routeurs, etc.), les applications ou même les comptes de domaine. Avec les options les plus basiques, psudohash peut générer une liste de mots avec toutes les mutations possibles d'un ou plusieurs mots‑clés, basées sur des schémas courants de substitution de caractères (personnalisables), des variations de casse, des chaînes souvent utilisées comme bourrage et plus encore. Regardez l'exemple suivant :

Le script implémente le schéma de substitution de caractères suivant. Vous pouvez ajouter/modifier les correspondances de substitution en éditant la liste transformations dans psudohash.py en suivant la structure de données ci-dessous (par défaut) :
transformations = [
{'a' : ['@', '4']},
{'b' : '8'},
{'e' : '3'},
{'g' : ['9', '6']},
{'i' : ['1', '!']},
{'o' : '0'},
{'s' : ['$', '5']},
{'t' : '7'}
]
Lors de la définition de mots de passe, je pense qu'il est assez courant d'ajouter une séquence de caractères avant et/ou après la phrase de passe principale pour la "renforcer". Par exemple, on peut définir un mot de passe "dragon" et ajouter une valeur comme "!!!" ou "!@#" à la fin, ce qui donne "dragon!!!", "dragon!@#", etc. Psudohash lit ces valeurs depuis common_padding_values.txt et les utilise pour muter les mots-clés fournis en les ajoutant avant (-cpb) ou après (-cpa) chaque variation de mot-clé générée. Vous pouvez le modifier comme bon vous semble.
Lors de l'ajout d'une valeur d'année à un mot-clé muté, psudohash le fait en utilisant divers séparateurs. Par défaut, il utilise les séparateurs suivants que vous pouvez modifier en éditant la liste year_seperators :
year_seperators = ['', '_', '-', '@']
Par exemple, si le mot-clé donné est "amazon" et l'option -y 2023 est utilisée, la sortie inclura "amazon2023", "amazon_2023", "amazon-2023", "amazon@2023", "amazon23", "amazon_23", "amazon-23", "amazon@23".
Installez d'abord Python 3.x et tqdm :
pip3 install tqdm
Clonez ensuite le dépôt et rendez le script exécutable :
git clone https://github.com/t3l3machus/psudohash.git
cd ./psudohash
chmod +x psudohash.py
./psudohash.py [-h] -w MOTS [-i] [-c] [--sep SEP] [--max-combine N] [-an NIVEAU] [-nl LIMITE] [-y ANNÉES] [-ap VALEURS] [-cpb] [-cpa] [-cpo] [-o FICHIER] [-q]
La boîte de dialogue d'aide [ -h, --help ] inclut les détails d'utilisation et des exemples.
-w, --words <kw1,kw2,…>
Mots-clés bruts séparés par des virgules (obligatoire).
-i, --inorder
Joindre jusqu'à --max-combine mots-clés dans l'ordre donné (ex. foo,bar,baz → foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).
-c, --combinations
Générer toutes les permutations de chaque sous-ensemble (jusqu'à --max-combine) (ex. foo,bar,baz → foo, bar, baz, foobar, foobaz, barfoo, …).
--max-combine <N> (par défaut : 2)
Nombre maximal de mots-clés bruts à joindre en une seule chaîne de base.
--sep <chaîne>
Lors de la jonction de mots ( ou ), placer cette chaîne entre les jetons. Par défaut, une chaîne vide.
Pas de mots multiples (uniquement des singletons)
./psudohash.py -w foo,bar,baz -cpa
# → foo, bar, baz
Jonctions dans l'ordre (-i, jusqu'à 2 mots par défaut)
./psudohash.py -w foo,bar,baz -i
# → foo, bar, baz, foobar, foobaz, barbaz
Combinaisons dans tous les ordres (-c, jusqu'à 2 mots par défaut)
./psudohash.py -w foo,bar,baz -c
# → foo, bar, baz, foobar, foobaz, barfoo, barbaz, bazfoo, bazbar
Changer le séparateur entre les mots joints
./psudohash.py -w foo,bar,baz -i --sep "_"
# → foo, bar, baz, foo_bar, foo_baz, bar_baz
Filtrage par longueur (--minlen/--maxlen)
./psudohash.py -w apple,banana -i --minlen 10
# Avertissement : la taille exacte ne peut pas être déterminée à cause des filtres de longueur.
# Les sorties finales pourraient inclure “applebanana” (11 car.), “bananaapple” (11 car.).
--years et --append-numbering avec un --numbering-limit ≥ les deux derniers chiffres d'une année saisie produira très probablement des doublons à cause des schémas de mutation implémentés par l'outil.--minlen ou --maxlen, le script ne peut pas pré-calculer le nombre exact de mots ; vous verrez un avertissement "la taille exacte ne peut pas être déterminée" et la taille sans ce filtre sera calculée, la taille finale sera plus petite.En ce qui concerne les personnes, je pense que nous avons tous (plus ou moins) défini des mots de passe en utilisant une mutation d'un ou plusieurs mots qui ont du sens pour nous, par exemple notre nom ou celui de notre femme/enfant/animal/groupe, en ajoutant l'année de naissance à la fin ou peut-être un bourrage super sécurisé comme "!@#". Eh bien, devinez quoi ?

Je rassemble des informations sur les schémas de création de mots de passe couramment utilisés pour améliorer les capacités de l'outil.
-i-c--minlen <N>
Ignorer tout mot de passe final de moins de N caractères.
--maxlen <N>
Ignorer tout mot de passe final de plus de N caractères.
-an, --append-numbering <NIVEAU>
Ajouter des suffixes numérotés (complétés par zéros à <NIVEAU> chiffres) à chaque mutation de mot.
-nl, --numbering-limit <LIMITE>
Nombre maximum à compter lors de l'ajout de numéros (par défaut : 50).
-y, --years <années>
Ajouter une ou plusieurs années à chaque mutation (ex. 1990-2000, ou 2022,2023).
-ap, --append-padding <valeurs>
Ajouter des valeurs de bourrage personnalisées (séparées par des virgules). Doit être utilisé avec -cpb ou -cpa.
-cpb, --common-paddings-before
Ajouter les valeurs de common_padding_values.txt avant chaque mutation.
-cpa, --common-paddings-after
Ajouter les valeurs de common_padding_values.txt après chaque mutation.
-cpo, --custom-paddings-only
Utiliser uniquement les bourrages fournis par l'utilisateur (pas de valeurs par défaut). Doit être utilisé avec -ap.
-o, --output <fichier>
Écrire les résultats dans <fichier> (par défaut : output.txt).
-q, --quiet
Supprimer la bannière ASCII au démarrage.
Combiner jusqu'à 3 mots (au lieu de 2 par défaut)