Pagina 1 di 1
Bash costruire un generatore di caratteri
Inviato: dom 25 mag 2008, 23:29
da mordecai
Salve a tutti.
Vorrei sapere se in bash è possibile costruire un generatore di caratteri,un po' come le wordlist.
Praticamente vorrei che la lunghezza della stringa fissa sia di n caratteri,e devono tutti essere lower-case (a,b,..z).
Il tutto salvato in un file di testo,facile.
È possibile farlo in bash?
Re: Bash costruire un generatore di caratteri
Inviato: dom 25 mag 2008, 23:54
da d4z_c0nf
mordecai ha scritto:Salve a tutti.
Vorrei sapere se in bash è possibile costruire un generatore di caratteri,un po' come le wordlist.
Praticamente vorrei che la lunghezza della stringa fissa sia di n caratteri,e devono tutti essere lower-case (a,b,..z).
Il tutto salvato in un file di testo,facile.
È possibile farlo in bash?
La cosa più immediata che mi viene in mente è questa, anche se credo ci siano modi migliori per farla:
Codice: Seleziona tutto
#!/bin/bash
var="a b c d e f g h i l m n o p q r s t u v z"
for i in $var; do
for j in $var; do
for x in $var; do
for y in $var; do
echo $i$j$x$y >> fileditesto
done
done
done
done
Ops, ho ipotizzato che siano 4 i caratteri,
la cosa si può fare ricorsivamente se vuoi..
rock
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 15:02
da targzeta
Ecco qui, basta copiare questo script in un file, ad esempio casa.sh:
Codice: Seleziona tutto
#!/bin/bash
function _print
{
echo ${array[@]};
}
function _incr
{
if [[ ${array[$1]} == 'z' ]]; then
{
(( $1 == 0 )) && exit;
array[$1]='a';
_incr $(($1-1));
}
else
array[$1]=$(echo ${array[$1]} | tr 'a-z' 'b-za');
fi
}
i=0;
while (( $i < $1 ));
do
array[$i]='a';
let i++;
done
_print
while _incr $(($i-1));
do
_print
done
e poi invocarlo passandogli la lunghezza fissa della stringa.
NOTA 0: per controllare la correttezza, basta contare il numero di righe che genera lo script, devono essere 26^N, dove N è la lunghezza fissa delle stringhe da generare. Ad esempio facendo:
otterrai 676=26^2
NOTA 1: puoi anche avere un numero minore di caratteri, basta sostituire nella funzione _incr, la 'z' con l'ultimo carattere desiderato. Ad esempio, sostituendo la 'z' con la 'b' otterrai:
a a
a b
b a
b b
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 16:01
da danix
spina ha scritto:Ecco qui, basta copiare questo script in un file, ad esempio casa.sh:

rofl
[EDIT]
chiedo scusa all'autore del thread, non volevo spammare il topic, quindi ne approfitto per dire anche la mia...

Nella
guida avanzata di scripting bash c'è uno script di esempio che credo faccia al caso suo, lo riporto nella sua interezza...
Codice: Seleziona tutto
#!/bin/bash
# Su macchine un po' vecchie,
#+ potrebbe essere necessario cambiare l'intestazione in #!/bin/bash2.
#
# Generatore di password casuali per Bash 2.x +
#+ di Antek Sawicki <tenox@tenox.tc>,
#+ che ha generosamente permesso all'autore de Guida ASB il suo utilizzo.
#
# ==> Commenti aggiunti dall'autore del libro ==>
#MATRICE="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
# ==> La password viene formata con caratteri alfanumerici.
LUNGHEZZA="8"
# ==> Se desiderate passaword più lunghe modificate 'LUNGHEZZA'.
while [ "${n:=1}" -le "$LUNGHEZZA" ]
# ==> Ricordo che := è l'operatore "sostiruzione default".
# ==> Quindi, se 'n' non è stata inizializzata, viene impostata ad 1.
do
PASS="$PASS${MATRICE:$(($RANDOM%${#MATRICE})):1}"
# ==> Molto intelligente e scaltro.
# ==> Iniziando dall'annidamento più interno...
# ==> ${#MATRICE} restituisce la lunghezza dell'array MATRICE.
# ==> $RANDOM%${#MATRICE} restituisce un numero casuale compreso tra 1
# ==> e [lunghezza di MATRICE] - 1.
# ==> ${MATRICE:$(($RANDOM%${#MATRICE})):1}
# ==> restituisce l'espansione di lunghezza 1 di MATRICE
# ==> partendo da una posizione casuale.
# ==> Vedi la sostituzione di parametro {var:pos:lun},
# ==> con relativi esempi, al Capitolo 9.
# ==> PASS=... aggiunge semplicemente il risultato al precedente
# ==> valore di PASS (concatenamento).
# ==> Per visualizzare tutto questo più chiaramente,
# ==> decommentate la riga seguente
# echo "$PASS"
# ==> e vedrete come viene costruita PASS,
# ==> un carattere alla volta ad ogni iterazione del ciclo.
let n+=1
# ==> Incrementa 'n' per il passaggio successivo.
done
echo "$PASS" # ==> Oppure, se preferite, redirigetela in un file.
exit 0
Io lo uso per generare password casuali, ma modificando il valore delle variabili MATRICE e LUNGHEZZA si possono ottenere i risultati che chiedeva l'autore... ad esempio mettendo
la stringa generata sarà solo alfabetica e solo con lettere minuscole, e modificando LUNGHEZZA si otterranno stringhe più o meno lunghe...
Spero possa essere utile
Ciau
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 17:15
da d4z_c0nf
spina ha scritto:....
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
E' sicuramente una soluzione, solo che fa solo la "combinazione" delle prime n lettere dell'alfabeto.
Dove n è la lunghezza della stringa
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 17:51
da mordecai
Grazie risolto!

Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 18:02
da d4z_c0nf
mordecai ha scritto:Grazie risolto!

come?
rock
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 18:05
da targzeta
d4z_c0nf ha scritto:spina ha scritto:....
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
E' sicuramente una soluzione, solo che fa solo la "combinazione" delle prime n lettere dell'alfabeto.
Dove n è la lunghezza della stringa
??? A me da tutte le combinazioni possibili di lunghezza N, fatte con tutte le lettere dell'alfabeto.
Spina
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 20:00
da d4z_c0nf
spina ha scritto:d4z_c0nf ha scritto:spina ha scritto:....
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
E' sicuramente una soluzione, solo che fa solo la "combinazione" delle prime n lettere dell'alfabeto.
Dove n è la lunghezza della stringa
??? A me da tutte le combinazioni possibili di lunghezza N, fatte con tutte le lettere dell'alfabeto.
Spina
AHHAHA, scusami spina, ho detto una super va**ata.
L'avevo provato e comprovato la funzionalità e mi ero fatto questa domanda visto il tuo esempio che finisce a "bb".
E quando ho postato mi sono scordato di essermi risposto "sei un pirla".
Scusa tanto.
rock
Re: Bash costruire un generatore di caratteri
Inviato: lun 26 mag 2008, 21:04
da targzeta
mordecai ha scritto:Grazie risolto!

Potresti scrivere [RISOLTO] nel nome del thread allora
Spina