Uso del crunch, ma usando parole come caratteri

1

Vorrei generare un elenco di parole che contenga parole e numeri a 2 cifre. Voglio crunch per mescolarli come 15password15, password15, 15password ...

C'è un modo per farlo con crunch o ho bisogno di un altro script?

    
posta s3lcuk 27.11.2016 - 21:52
fonte

1 risposta

1

A seconda del tuo caso d'uso, ci sono un paio di opzioni:

  • Se vuoi avere un grande controllo sui contenuti, ma vuoi anche molte permutazioni, allora lo script da solo (come già suggerito nei commenti) potrebbe essere l'unico modo per farlo.

  • Altrimenti, gli strumenti della famiglia hashcat possono essere utilizzati per generare tutte le possibili permutazioni fino a un determinato conteggio di elementi. Soprattutto per il caso d'uso generale dal titolo della tua domanda "usando parole come caratteri", princeprocessore è una scelta efficace.

Come minimo, è necessario utilizzare uno script per generare tutti i possibili numeri a due cifre, quindi combinare quell'elenco con l'altro dizionario e quindi inserirli in uno strumento che genererà molte combinazioni diverse per te. Ci sono un paio di modi per farlo.

Ecco i file che utilizzerò in alcuni esempi.

$ cat - >words.list
password
qwerty
iloveyou

$ seq -w 1 99 >digits.list

$ head -1 digits.list
01

$ tail -1 digits.list
99

Combinare un elenco di stringhe in tutte le combinazioni possibili è quello che i cracker di password di solito chiamano un attacco combinatore . Alcune varianti di questo attacco combinano ogni elemento due o tre volte, ma sembra che tu stia cercando una serie di conteggi di elementi. Altrimenti, combinator e combinator3 da hashcat-utils potrebbero generare gli elenchi:

$ combinator words.list digits.list | head -5
password01
password02
password03
password04
password05

$ combinator3 digits.list words.list digits.list | head -5
01password01
01password02
01password03
01password04
01password05

Se solo avessi bisogno di scorrere tutti i numeri possibili in una posizione specifica (alla fine o all'inizio), un attacco ibrido (wordlist + maschera) funzionerebbe, e potresti usare hashcat --stdout opzione per generare la lista:

$ hashcat --stdout -a 6 words.list ?d?d | head -5
password12
password08
password20
password31
password98

$ hashcat --stdout -a 7 ?d?d words.list | head -5
12password
08password
20password
31password
98password

Ma se vuoi più di 3 elementi per risultato - stringhe come "1515password15", "passwordpassword1515", "15password15password" - ecc., eseguirai i limiti di due o tre elementi per stringa di questi approcci.

Se vuoi essere un po 'rilassato sulla composizione - in altre parole, se è OK se alcune stringhe sono sequenze di soli caratteri come "013522" o parole senza cifre, puoi sfuggire a quelle limitazioni con princeprocessore ( pp64 ), in questo modo:

$ cat words.list | pp64 | tail -5
iloveyouquerty
passwordpassword
iloveyoupassword
passwordiloveyou
iloveyouiloveyou

princeprocessore genererà tutte le permutazioni possibili, fino al conteggio degli elementi specificato.

Un potenziale problema è che princeprocessore proverà a ordinare prima l'output a favore di stringhe più corte, quindi otterrai molti numeri prima di iniziare a digitare le parole:

$ cat digits.list words.list | pp64 | head -100000000 | tail -5
07743573
08743573
09743573
10743573
11743573

Se vuoi un maggiore controllo sui contenuti - per esempio, tutte le stringhe risultanti devono contenere almeno un set di non-cifre, semplicemente filtrerei i risultati con grep :

$ cat digits.list words.list | pp64 | egrep [a-z] | head
password
iloveyou
01qwerty
02qwerty
03qwerty
04qwerty
05qwerty
06qwerty
07qwerty
08qwerty
09qwerty
10qwerty


$ cat digits.list words.list | pp64 | egrep [a-z] | egrep [0-9] | head -5000 | tail
4145qwerty
4245qwerty
4345qwerty
4445qwerty
4545qwerty
4645qwerty
4745qwerty
4845qwerty
4945qwerty
5045qwerty

Se vuoi ottenere solo risultati che garantiscano almeno un elemento da entrambi gli elenchi, ma vuoi anche un numero variabile di elementi, filtrare l'output da princeprocessore è il modo migliore che io conosca.

Il filtraggio dell'output da princeprocessore con grep è un po 'una soluzione (perché non esiste uno strumento che in modo nativo comprenda di volere almeno un elemento da ciascuna lista). Per quanto ne so, se questo è il tuo caso d'uso, richiederebbe un nuovo sviluppo (scrivendo il tuo script, o modificando la fonte delprincipodelprocessore).

    
risposta data 26.10.2017 - 07:47
fonte

Leggi altre domande sui tag