Bash costruire un generatore di caratteri
Moderatore: Staff
Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Bash costruire un generatore di caratteri
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?
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?
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: Bash costruire un generatore di caratteri
La cosa più immediata che mi viene in mente è questa, anche se credo ci siano modi migliori per farla: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?
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
la cosa si può fare ricorsivamente se vuoi..
rock
- targzeta
- Iper Master

- Messaggi: 6643
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Bash costruire un generatore di caratteri
Ecco qui, basta copiare questo script in un file, ad esempio casa.sh:
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:
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
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
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:
Codice: Seleziona tutto
sh casa.sh 2 | wc -lNOTA 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:
Spinaa a
a b
b a
b b
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- danix
- Staff

- Messaggi: 3289
- Iscritto il: ven 27 ott 2006, 19:32
- Nome Cognome: Danilo M.
- Slackware: 64 current
- Kernel: 6.12.13 x86_64
- Desktop: i3
- Località: Verona (VR)
- Contatta:
Re: Bash costruire un generatore di caratteri
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
Codice: Seleziona tutto
MATRICE="abcdefghijklmnopqrstuvwxyz"Spero possa essere utile
Ciau
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: Bash costruire un generatore di caratteri
E' sicuramente una soluzione, solo che fa solo la "combinazione" delle prime n lettere dell'alfabeto.spina ha scritto:....
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
Dove n è la lunghezza della stringa
Re: Bash costruire un generatore di caratteri
Grazie risolto! 
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: Bash costruire un generatore di caratteri
come?mordecai ha scritto:Grazie risolto!
rock
- targzeta
- Iper Master

- Messaggi: 6643
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Bash costruire un generatore di caratteri
??? A me da tutte le combinazioni possibili di lunghezza N, fatte con tutte le lettere dell'alfabeto.d4z_c0nf ha scritto:E' sicuramente una soluzione, solo che fa solo la "combinazione" delle prime n lettere dell'alfabeto.spina ha scritto:....
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
Dove n è la lunghezza della stringa
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- d4z_c0nf
- Packager

- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: Bash costruire un generatore di caratteri
AHHAHA, scusami spina, ho detto una super va**ata.spina ha scritto:??? A me da tutte le combinazioni possibili di lunghezza N, fatte con tutte le lettere dell'alfabeto.d4z_c0nf ha scritto:E' sicuramente una soluzione, solo che fa solo la "combinazione" delle prime n lettere dell'alfabeto.spina ha scritto:....
Spina
P.S. Più che nella sezione libera, me sembrerebbe meglio spostare il thread nella sezione 'Programmazione'.
Dove n è la lunghezza della stringa
Spina
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
- targzeta
- Iper Master

- Messaggi: 6643
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Bash costruire un generatore di caratteri
Potresti scrivere [RISOLTO] nel nome del thread alloramordecai ha scritto:Grazie risolto!
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
