
Genera milioni di mutazioni di password basate su parole chiave in pochi secondi.
Un ringraziamento speciale a DavidAngelos:
▶️ Aggiunta una barra di progresso in ogni fase per monitorare l'esecuzione.
▶️ Aggiunte opzioni:
-i / --inorder): unisce le parole chiave solo nell'ordine originale (es. foo,bar,baz → foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).-c / --combinations): genera ogni ordinamento di ogni sottoinsieme (es. foo,bar,baz → foo, bar, baz, foobar, foobaz, barfoo, …, bazbarfoo).--sep <string>): quando si uniscono le parole, inserisce questa stringa tra i token (default: nessun separatore).--max-combine <N>): limita il numero di parole chiave grezze da unire insieme (default: 2).--minlen/--maxlen <N>): filtra la wordlist finale solo con parole della lunghezza desiderata.Psudohash è un generatore di liste di password per orchestrar attacchi di forza bruta e cracking di hash. Imita alcuni modelli di creazione di password comunemente usati dagli umani, come la sostituzione delle lettere di una parola con simboli o numeri (leet), l'uso di variazioni di maiuscolo/minuscolo, l'aggiunta di un padding comune prima o dopo la passphrase principale e altro. È basato su parole chiave e altamente personalizzabile. 🎥 -> Presentazione video
Amministratori di sistema e altri dipendenti spesso usano una versione mutata del nome dell'azienda per impostare le password (es. Am@z0n_2022). Questo è comune per dispositivi di rete (punti di accesso Wi-Fi, switch, router, ecc.), applicazioni o persino account di dominio. Con le opzioni più basilari, psudohash può generare una wordlist con tutte le possibili mutazioni di una o più parole chiave, basate su schemi comuni di sostituzione di caratteri (personalizzabili), variazioni di maiuscolo/minuscolo, stringhe comunemente usate come padding e altro. Dai un'occhiata al seguente esempio:

Lo script implementa il seguente schema di sostituzione di caratteri. Puoi aggiungere/modificare le mappature di sostituzione modificando la lista transformations in psudohash.py e seguendo la struttura dati presentata di seguito (default):
transformations = [
{'a' : ['@', '4']},
{'b' : '8'},
{'e' : '3'},
{'g' : ['9', '6']},
{'i' : ['1', '!']},
{'o' : '0'},
{'s' : ['$', '5']},
{'t' : '7'}
]
Quando si impostano le password, credo sia abbastanza standard aggiungere una sequenza di caratteri prima e/o dopo la passphrase principale per renderla "più forte". Ad esempio, si può impostare una password "dragon" e aggiungere un valore come "!!!" o "!@#" alla fine, risultando in "dragon!!!", "dragon!@#", ecc. Psudohash legge tali valori da common_padding_values.txt e li usa per mutare le parole chiave fornite aggiungendoli prima (-cpb) o dopo (-cpa) ogni variazione di parola chiave generata. Puoi modificarlo come preferisci.
Quando si aggiunge un valore anno a una parola chiave mutata, psudohash lo farà utilizzando vari separatori. Per default, userà i seguenti separatori che puoi modificare modificando la lista year_seperators:
year_seperators = ['', '_', '-', '@']
Ad esempio, se la parola chiave è "amazon" e l'opzione -y 2023 è stata usata, l'output includerà "amazon2023", "amazon_2023", "amazon-2023", "amazon@2023", "amazon23", "amazon_23", "amazon-23", "amazon@23".
Installa prima Python 3.x e tqdm:
pip3 install tqdm
Poi clona il repository e rendi eseguibile lo script:
git clone https://github.com/t3l3machus/psudohash.git
cd ./psudohash
chmod +x psudohash.py
./psudohash.py [-h] -w WORDS [-i] [-c] [--sep SEP] [--max-combine N] [-an LEVEL] [-nl LIMIT] [-y YEARS] [-ap VALUES] [-cpb] [-cpa] [-cpo] [-o FILENAME] [-q]
Il dialogo di aiuto [ -h, --help ] include dettagli sull'utilizzo ed esempi.
-w, --words <kw1,kw2,…>
Parole chiave grezze separate da virgola (obbligatorio).
-i, --inorder
Unisce fino a --max-combine parole chiave nell'ordine dato (es. foo,bar,baz → foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).
-c, --combinations
Genera ogni permutazione di ogni sottoinsieme (fino a --max-combine) (es. foo,bar,baz → foo, bar, baz, foobar, foobaz, barfoo, …).
--max-combine <N> (default: 2)
Numero massimo di parole chiave grezze da unire in una singola stringa base.
--sep <string>
Quando si uniscono parole ( o ), inserisce questa stringa tra i token. Default: stringa vuota.
Nessuna parola multipla (solo singoletti)
./psudohash.py -w foo,bar,baz -cpa
# → foo, bar, baz
Unioni in ordine (-i, fino a 2 parole per default)
./psudohash.py -w foo,bar,baz -i
# → foo, bar, baz, foobar, foobaz, barbaz
Combinazioni di tutti gli ordini (-c, fino a 2 parole per default)
./psudohash.py -w foo,bar,baz -c
# → foo, bar, baz, foobar, foobaz, barfoo, barbaz, bazfoo, bazbar
Cambia separatore tra parole unite
./psudohash.py -w foo,bar,baz -i --sep "_"
# → foo, bar, baz, foo_bar, foo_baz, bar_baz
Filtro lunghezza (--minlen/--maxlen)
./psudohash.py -w apple,banana -i --minlen 10
# Warning: exact size cannot be determined because of length filters.
# Example final outputs might include “applebanana” (11 chars), “bananaapple” (11 chars).
Combina fino a 3 parole (invece del default 2)
--years e --append-numbering con un --numbering-limit ≥ ultime due cifre di qualsiasi input anno, molto probabilmente produrrà parole duplicate a causa dei modelli di mutazione implementati dallo strumento.--minlen o --maxlen, lo script non può pre-calcolare il conteggio esatto delle parole; vedrai un avviso "exact size cannot be determined" e la dimensione senza questo filtro verrà calcolata, la dimensione finale sarà più piccola.Quando si tratta di persone, penso che tutti abbiamo (più o meno) impostato password usando una mutazione di una o più parole che significano qualcosa per noi, ad esempio il nostro nome o il nome della moglie/figlio/animale/band, aggiungendo l'anno di nascita alla fine o magari un padding super sicuro come "!@#". Beh, indovina un po'?

Sto raccogliendo informazioni riguardo i modelli comuni di creazione di password per migliorare le capacità dello strumento.
-i-c--minlen <N>
Scarta qualsiasi password finale più corta di N caratteri.
--maxlen <N>
Scarta qualsiasi password finale più lunga di N caratteri.
-an, --append-numbering <LEVEL>
Aggiunge suffissi numerati (con zero iniziali fino a <LEVEL> cifre) a ogni mutazione di parola.
-nl, --numbering-limit <LIMIT>
Numero massimo fino a cui contare quando si aggiungono numeri (default: 50).
-y, --years <years>
Aggiunge uno o più anni a ogni mutazione (es. 1990-2000, o 2022,2023).
-ap, --append-padding <vals>
Aggiunge valori di padding personalizzati (separati da virgola). Deve essere usato con -cpb o -cpa.
-cpb, --common-paddings-before
Antepone i valori da common_padding_values.txt prima di ogni mutazione.
-cpa, --common-paddings-after
Aggiunge i valori da common_padding_values.txt dopo ogni mutazione.
-cpo, --custom-paddings-only
Usa solo i padding forniti dall'utente (nessun default). Deve essere usato con -ap.
-o, --output <file>
Scrive i risultati in <file> (default: output.txt).
-q, --quiet
Sopprime il banner ASCII art all'avvio.