Ci sono vari sistemi...
io se vuoi posso suggerirti la cowboy way (da linea di comando).
Il trucco è usare il device /dev/random (o /dev/urandom) che è un generatore di numeri casuali, per estrarre codici ASCII di caratteri alfanumerici.
Si usa dd per creare lo "stream" generatore di codici, e poi i programmi tr (translate) e cut (taglia) per "estrarre" i caratteri ASCII, mediante l'uso di pipe.
Primo passo: creare lo stream generatore
Codice:
dd if=/dev/urandom count=200 bs=1 > foo.txt
dd genera uno stream di 200 (count) blocchi di 1 byte (bs = 1), e lo scrive nel file foo.txt
Secondo passo... bisogna eliminare i caratteri di "a capo" e si usa tr
Codice:
dd if=/dev/urandom count=200 bs=1 | tr "\n" " " > foo.txt
in questo caso l'aggiunta tramite pipe del comando tr serve a sostituire tutti gli "a capo" con degli spazi vuoti.
terzo passo: trasformare lo stream di numeri casuali in caratteri alfanumerici utilizzando sed (stream editor). Si invoca sed per eliminare tutti i caratteri non alfanumerici
Codice:
dd if=/dev/urandom count=200 bs=1 | tr "\n" " " | sed 's/[^a-zA-Z0-9]//g'> foo.txt
qui sed è istruito perchè agisca globalmente e ricorsivamente (l'opzione g alla fine) per eliminare tutti i caratteri che non siano alfabetici (sia maiuscoli che minuscoli) o numerici.
Infine è possibile estrarre dallo stream una password di dimensione voluta tramite il comando cut.
Codice:
dd if=/dev/urandom count=200 bs=1 | tr "\n" " " | sed 's/[^a-zA-Z0-9]//g' | cut -c-8> foo.txt
in questo caso cut taglia 8 caratteri dallo stream e li mette in foo.txt
Se si volesse visualizzare a schermo la password generata senza passare dal file foo.txt si può sempre omettere l'ultimo comando:
Codice:
dd if=/dev/urandom count=200 bs=1 | tr "\n" " " | sed 's/[^a-zA-Z0-9]//g' | cut -c-8
Un metodo alternativo sarebbe quello di usare md5sum (che serve appunto a generare stream alfanumerici secondo lo standard md5 al posto di tr e sed
Codice:
dd if=/dev/urandom count=200 bs=1 | md5sum | cut -c-8
Spero di esserti stato utile...