diff --git a/Pass-Generator.sh b/Pass-Generator.sh index aa099ce..c454e40 100644 --- a/Pass-Generator.sh +++ b/Pass-Generator.sh @@ -1,20 +1,35 @@ #!/bin/bash -# Variables des couleurs + + +# Color variables neutre='\e[0;m' jaune='\e[1;33m' bleuclair='\e[1;34m' vertclair='\e[1;32m' +rouge='\e[1;31m' -# Declaration de la fonction de generation -function generate() { -~()_A-Z-a-z-0-9'| fold -w$nb1 | head -$nb2 + + +# Declaration of the variable "line" +function line() { +echo -e "$vertclair--------------------$neutre" } + + +# Declaration of the variable "customline" +function customline() { +printf -v ligne '%*s' "$nb1" '' ; echo -e "$vertclair${ligne// /-}$neutre" +} + + + +# Name and license echo -echo "▄▖ ▄▖ ▗ " -echo "▙▌▀▌▛▘▛▘▄▖▌ █▌▛▌█▌▛▘▀▌▜▘▛▌▛▘" -echo "▌ █▌▄▌▄▌ ▙▌▙▖▌▌▙▖▌ █▌▐▖▙▌▌ " +echo -e "▄▖ ▄▖ ▗ " +echo -e "▙▌▀▌▛▘▛▘▄▖▌ █▌▛▌█▌▛▘▀▌▜▘▛▌▛▘" +echo -e "▌ █▌▄▌▄▌ ▙▌▙▖▌▌▙▖▌ █▌▐▖▙▌▌$rouge v2.0.0 $neutre" echo echo -e "$jaune╭ License ─────────────────────────────╮" echo -e "│ $neutre Coded by Willy from Self IT Deploy $jaune │" @@ -22,27 +37,268 @@ echo -e "│ $neutre CC BY-NC-SA 4.0 $jaune │" echo -e "╰──────────────────────────────────────╯ $neutre" echo -# Demande a l utilisateur le nombre de caratere, par défaut 20 -read -p "> Number of characters ($(echo -e $bleuclair"default 20"$neutre))? " nb1 -# Demande a l utilisateur le nombre d iteration, par défaut 5 -read -p "> Number of iterations ($(echo -e $bleuclair"default 5"$neutre))? " nb2 +# Character variables +lowercase='a-z' +uppercase='A-Z' +numbers='0-9' +specials='!@#$%&*=|<>~()_{}[]+.' + +# Declaration of the "default" function +function default() { +line + Number of characters ? ($(echo -e $bleuclair"default 20"$neutre)) " nb1 if [ "$nb1" = "" ]; then - nb1=20; + nb1=20 + break +elif [[ ! "$nb1" =~ ^[0-9]+$ ]]; + then + echo + echo "Invalid data" + echo +elif [[ "$nb1" -le 0 ]]; + then + echo + echo "Invalid data" + echo +else + break fi +done + +# Number of iterations +while true; do +read -p "> Number of iterations ? ($(echo -e $bleuclair"default 5"$neutre)) " nb2 if [ "$nb2" = "" ]; then nb2=5; + break +elif [[ ! "$nb2" =~ ^[0-9]+$ ]]; + then + echo + echo "Invalid data" + echo +elif [[ "$nb2" -le 0 ]]; + then + echo + echo "Invalid data" + echo +else + break fi +done + + + +while true; do + +# Enable lowercase +while true; do +read -p "> Enable lowercase ? ($(echo -e $bleuclair"Y/n"$neutre)) " low + +if [ "$low" = "Y" ] || [ "$low" = "y" ] || [ "$low" = "" ]; + then + varlow=$lowercase + break +elif [ "$low" = "N" ] || [ "$low" = "n" ]; + then + varlow="" + break +else + echo + echo "Invalid data" + echo +fi +done + + + +# Enable uppercase +while true; do +read -p "> Enable uppercase ? ($(echo -e $bleuclair"Y/n"$neutre)) " upp + +if [ "$upp" = "Y" ] || [ "$upp" = "y" ] || [ "$upp" = "" ]; + then + varupp=$uppercase + break +elif [ "$upp" = "N" ] || [ "$upp" = "n" ]; + then + varupp="" + break +else + echo + echo "Invalid data" + echo +fi +done + + + +# Enable numbers +while true; do +read -p "> Enable numbers ? ($(echo -e $bleuclair"Y/n"$neutre)) " num + +if [ "$num" = "Y" ] || [ "$num" = "y" ] || [ "$num" = "" ]; + then + varnum=$numbers + break +elif [ "$num" = "N" ] || [ "$num" = "n" ]; + then + varnum="" + break +else + echo + echo "Invalid data" + echo +fi +done + + + +# Enable specials +while true; do +read -p "> Enable specials ? ($(echo -e $bleuclair"Y/n"$neutre)) " spe + +if [ "$spe" = "Y" ] || [ "$spe" = "y" ] || [ "$spe" = "" ]; + then + varspe=$specials + break +elif [ "$spe" = "N" ] || [ "$spe" = "n" ]; + then + varspe="" + break +else + echo + echo "Invalid data" + echo +fi +done + + +if [ -n "${varlow}" ] || [ -n "${varupp}" ] || [ -n "${varnum}" ] || [ -n "${varspe}" ]; + then + break +else + echo + echo "No character was selected" + echo + +fi +done + + + +# Declaration of the "customgenerate" function +function customgenerate() { + Export generation ? ($(echo -e $bleuclair"y/N"$neutre)) " exp + +if [ "$exp" = "N" ] || [ "$exp" = "n" ] || [ "$exp" = "" ]; + then + echo + customline + customgenerate + customline + break +elif [ "$exp" = "Y" ] || [ "$exp" = "y" ]; + then + echo + read -p "> Choose location ? (Relative/Absolute ex: ./list.txt) " location + echo + customline + customgenerate | tee -a $location + customline + break +else + echo + echo "Invalid data" + echo +fi +done +} + + + +# Declaration of the "help" function +function help() { +cat << EOF +╭─────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ ▄▖ ▄▖ ▗ │ +│ ▙▌▀▌▛▘▛▘▄▖▌ █▌▛▌█▌▛▘▀▌▜▘▛▌▛▘ │ +│ ▌ █▌▄▌▄▌ ▙▌▙▖▌▌▙▖▌ █▌▐▖▙▌▌ v2.0.0 │ +│ │ +│ ╭ License ─────────────────────────────╮ │ +│ │ Coded by Willy from Self IT Deploy │ │ +│ │ CC BY-NC-SA 4.0 │ │ +│ ╰──────────────────────────────────────╯ │ +│ │ +│ > List of available characters │ +│ lowercase "a-z" │ +│ uppercase "A-Z" │ +│ numbers "0-9" │ +│ specials "!@#$%&*=|<>~()_{}[]+." │ +│ │ +│ > Choice 1 - Default generation │ +│ Default generation of 5 iterations of 20 characters, │ +│ including all supported characters. │ +│ │ +│ > Choice 2 - Custom generation │ +│ Custom generation with choice of iteration quantities and characters, │ +│ the possibility to activate or not a character type as well as export to an external file. │ +│ │ +│ Press enter for default choice. │ +│ If (Y/n) then, default yes (accept Y & y). │ +│ If (y/N) then, default no (accept N & n). │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────────────────────╯ +EOF +} + + + +# Menu principal +while true; do +echo +echo -e "1 - Default generation" +echo -e "2 - Custom generation" +echo -e "3 - Help" +echo -e "4 - Exit" echo -echo -e "$vertclair--------------------$neutre" -generate -echo -e "$vertclair--------------------$neutre" +read -p "Choice your option ? " choice echo + +case "$choice" in + 1) default ;; + 2) custom ;; + 3) help ;; + 4) exit 1 ;; +esac +done +