#!/bin/ksh # wordlist creator 0.1 # webmaster@pcpedia.it # Cimenti Marco # per eseguirlo occore avere installata la shell korn (ksh) # per modificare i diritti "chmod 777 wordlist.ksh" # per eseguire .\wordlist2.ksh typeset -Z 2 GG MM # il giorno del mese e dell'anno con lo zero se con una cifra sola GG=01; MM=01;count=0;SEP=;AM='NO';EXT=;SEP2=; #____________________________________________________________________ function eliminadoppi { while [[ ! -r $WL ]] do print "NOTA:per unire piu' wordlist e riordinarle ed eliminare doppi basta usare il comando\ncat lista-1 lista-2 lista-3 | sort | uniq > listafinale " print "Aggiungere il percorso assoluto della wordlist da filtrare:" read WL; if [[ ! -r $WL ]] then print "File inesistente o non leggibile!" fi done clear print "nome del nuovo file filtrato \n(le parole verranno riordinato ed eliminati i doppioni)"; read FILTER; cat $WL | sort | uniq > $FILTER.txt return 0 } #____________________________________________________________________ function range { print "Scegli l'anno di inizio:" read INIZIO; AA=$INIZIO; print "Ora scegli l'anno finale:" read FINE; FINE=$(expr $FINE + 1); return 0 } #____________________________________________________________________ function filtrolung { while [[ ! -r $WL ]] do print "Aggiungere il percorso assoluto della wordlist da filtrare:" read WL; if [[ ! -r $WL ]] then print "File inesistente o non leggibile!" fi done clear print "quanto devono essere lunghe le parole come minimo?" read LUNG; print "nome del nuovo file filtrato?"; read FILTER; TOTW=$(wc -w $WL|cut -f1 -d ' '); TOTW=$(expr $TOTW + 1) NW=1; while [[ $NW != $TOTW ]] do ACTW=$(head -n$NW $WL|tail -n1); NW=$(expr $NW + 1); ACTL=$(expr length $ACTW) print "TEST $ACTW --> $ACTL" if (($ACTL>=$LUNG)) then print "$ACTW" >>$FILTER.txt print "SCRITTE $ACTW --> $ACTL" fi done return 0; } #____________________________________________________________________ function name { print "Scegli il nome del file che verrà creato"; read FILEN; return 0 } #____________________________________________________________________ function scrivianno { EXT=$1; while [[ $AA != $FINE ]] do print "$EXT$SEP2$AA" >>$FILEN.txt; AA=$(expr $AA + 1) done } #____________________________________________________________________ function scrivi { EXT=$1; while [[ $AA != $FINE ]] do while [[ $MM != 13 ]] do while [[ $GG != 32 ]] do if [[ $AM == SI ]] then print "$EXT$SEP2$MM$SEP$GG$SEP$AA" >>$FILEN.txt; else print "$EXT$SEP2$GG$SEP$MM$SEP$AA" >>$FILEN.txt; fi GG=$(expr $GG + 1); count=$(expr $count + 1) done GG=01; MM=$(expr $MM + 1) done MM=01; AA=$(expr $AA + 1) done #OCC=$(du -h $FILEN.txt|cut -f1) #print "\n Sono state realizzate $count date nel file $FILEN.txt che occupa circa $OCC \n" return 0 } #____________________________________________________________________ function american { print "Il formato americano della data antepone il giorno al mese:vuoi usarlo? s/n:" read; if [[ $REPLY == s* ]] then AM=SI; else AM=NO; fi return 0; } #____________________________________________________________________ function app_anno { while [[ ! -r $WL ]] do print "Aggiungere il percorso assoluto della wordlist:" read WL; if [[ ! -r $WL ]] then print "File inesistente o non leggibile!" fi done clear print "A ciascuna parola del file $WL verrà unito l' intervallo di anni scelti." print "\nATTENZIONE:anche la scelta di un range di dieci anni moltiplica per 10 la dimensione del file originario (ed il tempo di creazione del file...)\n\n" name; range; TOTW=$(wc -w $WL|cut -f1 -d ' '); TOTW=$(expr $TOTW + 1); NW=1; while [[ $NW != $TOTW ]] do ACTW=$(head -n$NW $WL|tail -n1); print "ora sto appendendo gli anni alla parola $ACTW" NW=$(expr $NW + 1); scrivianno $ACTW; AA=$INIZIO; done } #____________________________________________________________________ function app_data { while [[ ! -r $WL ]] do print "Aggiungere il percorso assoluto della wordlist:" read WL; if [[ ! -r $WL ]] then print "File inesistente o non leggibile!" fi done clear print "A ciascuna parola del file $WL verrà unito l' intervallo di date scelte." print "\nATTENZIONE:anche la scelta di un range di un solo anno moltiplica per 365 la dimensione del file originario (ed il tempo di creazione del file...)\n\n" name; range; TOTW=$(wc -w $WL|cut -f1 -d ' '); TOTW=$(expr $TOTW + 1) NW=1; while [[ $NW != $TOTW ]] do ACTW=$(head -n$NW $WL|tail -n1); NW=$(expr $NW + 1); scrivi $ACTW; AA=$INIZIO; done } #____________________________________________________________________ function separator { print "Scegli il separatore per le date:"; read SEP; print "Scegli il separatore fra la data e la parola:"; read SEP2; return 0 } #____________________________________________________________________ function app_annobr { print "per appendere anni brevi (senza 19XX) ad una wordlist esistente è sufficiente inserire un range di due sole cifre ad esempio fra 80 e 91..." app_anno; return 0; } #____________________________________________________________________ function choosen { case $i in 1) AM=0;range;name;scrivi; ;; 2) american;dategen; ;; 3) separator;dategen; ;; 4) app_data; ;; 5) app_annobr; ;; 6) app_anno; ;; 7) filtrolung; ;; 8) eliminadoppi; ;; esac return 0 } #____________________________________________________________________ function dategen { clear; print "\n\t\\033[1m MANIPOLATORE DI WORDLIST \033[0m\n \n" print "1) Crea file di date con le opzioni scelte -->(GGMMAAAA)" print "2) Formato americano della data --> $AM" print "3) Imposta separatore (default nessuno) " print "\n\tseparatore fra date --> "$SEP"\n\tseparatorefra nomi e date --> $SEP2\n" print "4) Appendi data intera a wordlist esistente -->(marcoGGMMAAAA)" print "5) Appendi anno abbreviato a wordlist esistente -->(marco81)" print "6) Appendi anno intero a wordlist esistente -->(marco1981)" print "\n" print "7) Elimina parole inferiori a TOT lettere" print "8) Unisci wordlist eliminando doppioni e riordina parole" print "\n Scegli una opzione:" read i; choosen; print "\n \\033[1m wordlist scritta con successo \033[0m\n" return 0 } #____________________________________________________________________ # main # è il menù iniziale... clear dategen; #end main #____________________________________________________________________