Nuestro primer proyecto : bóveda de contraseñas en bash

bash

  • Ahora que tenemos una buena pequeña base en bash, vamos a iniciar con un proyecto rápido: una bóveda de contraseñas a la que solo nosotros podremos acceder con una clave maestra, como si fuera un gestor promedio, pero ahora simple.

Este proyecto es para reforzar el conocimiento, por lo que primero inténtalo hacer por tu cuenta, si no puedes, recurre al articulo denuevo.

iniciamos creando el archivo:

touch gestor.sh
chmod +x gestor.sh

asignamos los permisos necesarios para evitar la lectura del archivo, ya que ahí tendremos nuestra clave maestra:

chmod 700 gestor.sh

Esto da permisos solo al dueño para leer, escribir y ejecutar.

ahora debemos empezar a escribir código abriendo el archivo:

nano gestor.sh

agregamos el shebang:

#!/bin/bash

iniciamos declarando algunas variables como la clave:

#!/bin/bash

clave_maestra="12345" # pon la clave de tu preferencia

llegamos a las entradas de texto, se le pide al usuario introducir la clave (sin validaciones aun):

#!/bin/bash

clave_maestra="12345" # pon la clave de tu preferencia
read -p "Escribe tu Clave Maestra para acceder:" clave_escrita

ahora, vamos a agregar una comprobación que busque si las 2 claves (la introducida por el usuario y la definida en el código) coinciden:

#!/bin/bash

clave_maestra="12345" # pon la clave de tu preferencia
read -p "Escribe tu Clave Maestra para acceder:" clave_escrita

if [ "$clave_maestra" == "$clave_escrita" ]; then
        echo "[+] la clave introducida es correcta, accediendo a la boveda.."
else
        echo "[!] la clave introducida es incorrecta"
fi

lo meteremos en un bucle:

#!/bin/bash

while true; do

        clave_maestra="12345" # pon la clave de tu preferencia
        read -p "Escribe tu Clave Maestra para acceder:" clave_escrita
        
        if [ "$clave_maestra" == "$clave_escrita" ]; then
                echo "[+] la clave introducida es correcta, accediendo a la boveda.."
        else
                echo "[!] la clave introducida es incorrecta"
        fi
done

y ahora en una función para organizar mas los procesos:

#!/bin/bash

while true; do

        clave_maestra="12345" # pon la clave de tu preferencia
        read -p "Escribe tu Clave Maestra para acceder:" clave_escrita
        
        comprobar_clave() {
                if [ "$clave_maestra" == "$clave_escrita" ]; then
                        echo "[+] la clave introducida es correcta, accediendo a la boveda.."
                else
                        echo "[!] la clave introducida es incorrecta"
                fi
        }
done

las primeras 2 líneas despues del while las pasamos abajo, porque despues abajo llamaremos a la función de comprobar clave

#!/bin/bash

while true; do
        
        comprobar_clave() {
                if [ "$clave_maestra" == "$clave_escrita" ]; then
                        echo "[+] la clave introducida es correcta, accediendo a la boveda.."
                else
                        echo "[!] la clave introducida es incorrecta"
                fi
        }
        
        clave_maestra="12345" # pon la clave de tu preferencia
        read -p "Escribe tu Clave Maestra para acceder:" clave_escrita
done

nos aprovechamos de argumentos posicionales para que el script de una bienvenida al usuario

#!/bin/bash

while true; do
        
        comprobar_clave() {
                if [ "$clave_maestra" == "$clave_escrita" ]; then
                        echo "[+] la clave introducida es correcta, accediendo a la boveda.."
                else
                        echo "[!] la clave introducida es incorrecta"
                fi
        }

        echo -e "\nBienvenido a $0!\n"
        clave_maestra="12345" # pon la clave de tu preferencia
        read -p "Escribe tu Clave Maestra para acceder:" clave_escrita

        comprobar_clave
done

$0: nos da el nombre del script

también hemos llamado a la función que comprueba las claves.

lo que nos falta es agregar la informacion a guardar en la boveda:

#!/bin/bash

while true; do
        
        comprobar_clave() {
                if [ "$clave_maestra" == "$clave_escrita" ]; then
                        echo "[+] la clave introducida es correcta, accediendo a la boveda.."
                        echo "mi username es pepe y mi password pepe123"
                else
                        echo "[!] la clave introducida es incorrecta"
                fi
        }

        echo -e "\nBienvenido a $0!\n"
        clave_maestra="12345" # pon la clave de tu preferencia
        read -p "Escribe tu Clave Maestra para acceder:" clave_escrita

        comprobar_clave
done

guardamos el script y lo ultimo es quitarnos el permiso a nosotros de ver y escribir el archivo, para potenciar la seguridad:

chmod p-rw gestor.sh

ahora que lo podemos ejecutar:

./gestor.sh

deberi aparecer en la consola:


Bienvenido a gestor.sh!

Escribe tu Clave Maestra para acceder: (introducimos la clave aqui)

[+] la clave introducida es correcta, accediendo a la boveda..
mi username es pepe y mi password pepe123

si llegaste hasta aquí: te felicito, muy bien hecho, tanto si lo hiciste guiado o solo, de cualquier forma esto fue de gran ayuda para practicar un poco lo aprendido.

Aclaro que este script no es 100% seguro, pues cualquier usuario en la cuenta del propietario podrá leerlo y modificarlo e incluso hay intentos de login infinitos, pero eso, se lo quiero dejar de tarea a ustedes para que refuercen mas su conocimiento:

  • implementen un máximo de 5 intentos de login antes de bloquear temporalmente el programa con sleep

Last updated