martedì 24 giugno 2014

Script con password

Salve!

È da mesi ormai che lavoro ad un programma. Presto ve ne parlerò. Promesso.

Stanotte, come diversivo, ho voluto abbozzare l'idea di come si potrebbe inserire la password all'interno di uno script. Mi spiego meglio.

Supponete di creare uno script che accede ad un database per manipolarlo, l'ideale sarebbe che lo stesso script vi chieda anche una password prima di potervi accedere.

Lo script che vi sto per presentare vi chiede, per una sola volta, di creare una password, che viene salvata in un file di testo. Certo, poi questo file andrebbe criptato, lo capisco bene.

Poi vi chiede di ridigitare la password, che viene confrontata con quella salvata nel file di testo. Solo se le due password corrispondono, l'accesso all'ipotetico database sarà consentito. La seconda volta che sarà avviato lo script, a meno che non sia stato cancellato il file con la password, vi sarà chiesto di digitare la password una sola volta.

Salvate lo script, pass.sh, nella cartella Documenti e rendetelo eseguibile.

#!/bin/bash
#Luigi Iannoccaro (Bit3Lux)
#Pass.sh

passkr=~/Documenti/pass.txt

if [ ! -f $passkr ]; then
     
     #read -p "crea la tua password: " tua_password
     tua_password=$(zenity --title="Crea la password" --password)
     echo $tua_password > $passkr 

fi

tua_pass=$(cat $passkr)
pass=0

while [ "$tua_pass" != "$pass" ]; do
     clear
     
     #read -p "Digita la tua password: " pass
     pass=$(zenity --title="Digita la password" --password)

     if [ $? -eq 1 ]; then

          exit 1 

     elif [ "$tua_pass" != "$pass" ]; then 
          #echo "Accesso al programma negato, digita la password in modo corretto."

            zenity --info \
                   --width=300 \
                   --height=130 \
                   --title="Informazione" \
                   --text="Accesso Negato! Digita la password in modo corretto."

     elif [ "$tua_pass" == "$pass" ]; then
           #echo "Accesso consentito." 

            zenity --info \
                   --width=300 \
                   --height=130 \
                   --title="Informazione" \
                   --text="Accesso Consentito"    

     fi
done

exit 0


Alla prossima! ;)

10 commenti:

  1. Suggerimento: Prova ad usare una funzione di hashing sia nelle memorizzazione che nel confront ;)

    RispondiElimina
  2. Lo so, conosco bene il programma che stai testando da tempo.. Ottima l'idea dello script password.. :)

    RispondiElimina
  3. echo password | md5sum.textutils | cut -d' ' -f1
    MD5 è meglio che niente...

    RispondiElimina
  4. Ci sono anche gli hashing SHA, volendo.
    http://www.gnu.org/software/coreutils/manual/coreutils.html#md5sum-invocation

    RispondiElimina
  5. Carissimo Bit,

    ecco qui la modifica con l'introduzione della password criptata con SHA256.

    #!/bin/bash
    #Luigi Iannoccaro (Bit3Lux)
    #Pass.sh

    passkr=~/Documenti/pass.txt

    if [ ! -f $passkr ]; then

    #read -p "crea la tua password: " tua_password
    tua_password=$(zenity --title="Crea la password" --password)
    echo $tua_password | sha256sum | awk '{print $1}' > $passkr

    fi

    tua_pass=$(cat $passkr)
    pass=0

    while [ "$tua_pass" != "$pass" ]; do
    clear

    #read -p "Digita la tua password: " pass
    pass=$(zenity --title="Digita la password" --password | sha256sum | awk '{print $1}')


    if [ $? -eq 1 ]; then

    exit 1

    elif [ "$tua_pass" != "$pass" ]; then
    #echo "Accesso al programma negato, digita la password in modo corretto."

    zenity --info \
    --width=300 \
    --height=130 \
    --title="Informazione" \
    --text="Accesso Negato! Digita la password in modo corretto."

    elif [ "$tua_pass" == "$pass" ]; then
    #echo "Accesso consentito."

    zenity --info \
    --width=300 \
    --height=130 \
    --title="Informazione" \
    --text="Accesso Consentito"

    fi
    done

    exit 0

    RispondiElimina
  6. Manca solo la limitazione per cui solo root può creare il file di password, che altrimenti potrebbe essere cancellato per ricreare una nuova password e guadagnarsi l'accesso.

    if [[ "$(id -u)" -ne "0" ]]; then echo "Non sei root, pussa via!"; exit 1; fi

    RispondiElimina
  7. Grazie a tutti voi per i vostri contributi! ;)

    RispondiElimina