
Rimuovi i duplicati da una wordlist MASSIVA, senza ordinarla (per il cracking delle password basato su dizionario)
Al giorno d'oggi, la creazione di wordlist per password di solito implica la concatenazione di più fonti di dati.
Idealmente, le password più probabili dovrebbero trovarsi all'inizio della wordlist, così le password più comuni vengono craccate istantaneamente.
Con gli strumenti di deduplicazione esistenti sei costretto a scegliere se preferisci preservare l'ordine OPPURE gestire wordlist enormi.
Sfortunatamente, la creazione di wordlist richiede entrambe le cose
Quindi ho scritto duplicut in C altamente ottimizzato per soddisfare questa esigenza molto specifica 🤓 💻
git clone https://github.com/nil0x42/duplicut # download ...
cd duplicut/ && make # compile ...
./duplicut wordlist.txt -o clean-wordlist.txt # dedupe !!!
-o, --outfile <FILE> Scrivi il risultato in <FILE>
-t, --threads <NUM> Numero massimo di thread da usare (default max)
-m, --memlimit <VALUE> Limita la memoria massima utilizzata (default max)
-l, --line-max-size <NUM> Dimensione massima della riga (default 1024, max 4095)
-p, --printable Filtra le righe con caratteri ASCII stampabili
-c, --lowercase Converti la wordlist in minuscolo
-C, --uppercase Converti la wordlist in maiuscolo
-D, --dupfile <FILE> Scrivi i duplicati in <FILE> (rallenta duplicut)
-h, --help Mostra questo aiuto ed esci
-v, --version Mostra le informazioni sulla versione ed esci
Caratteristiche:
--line-max-size)--printable)--dupfile)--lowercase o --uppercaseImplementazione:
Limitazioni:
--line-max-size non può superare 4095Un uint64 è sufficiente per indicizzare le righe nell'hashmap, impacchettando
le informazioni di size nei bit extra del puntatore:

Se l'intero file non può entrare in memoria, viene suddiviso in
chunk virtuali, in modo tale che ogni chunk utilizzi quanta più RAM possibile.
Ogni chunk viene quindi caricato nell'hashmap, deduplicato e testato rispetto ai chunk successivi.
In questo modo, il tempo di esecuzione diminuisce al massimo all'esimo numero triangolare:

Se trovi un bug o qualcosa non funziona come previsto, compila duplicut in modalità debug e pubblica un issue con l'output allegato:
# debug level can be from 1 to 4
make debug level=1
./duplicut [OPTIONS] 2>&1 | tee /tmp/duplicut-debug.log