+totptui.sh

This commit is contained in:
T0MuX 2024-07-09 15:23:02 +02:00
parent 724d07e6fb
commit 25b6648fa2
2 changed files with 90 additions and 0 deletions

3
totptui/accounts.csv Normal file
View file

@ -0,0 +1,3 @@
account_name,key,totp_mode,base32
Exemple Num1,6ND25BYLF62TSWUW,SHA1,1
Exemple Num2,3LKAOG66QOMV34CQR6ZCYNZFI6F2VPIT,SHA1,1
1 account_name key totp_mode base32
2 Exemple Num1 6ND25BYLF62TSWUW SHA1 1
3 Exemple Num2 3LKAOG66QOMV34CQR6ZCYNZFI6F2VPIT SHA1 1

87
totptui/totptui.sh Executable file
View file

@ -0,0 +1,87 @@
#!/bin/bash
# Fichier CSV contenant les données des comptes
CSV_FILE="accounts.csv"
# Vérifie si le fichier CSV existe
if [[ ! -f "$CSV_FILE" ]]; then
echo "Le fichier $CSV_FILE n'existe pas."
exit 1
fi
# Personnalisation des couleurs de whiptail
export NEWT_COLORS='
root=,black
window=white,black
border=white,black
title=red,black
compactbutton=white,black
button=red,black
textbox=white,black
listbox=white,black
actlistbox=red,black
sellistbox=red,black
actsellistbox=red,black
'
# Démarrage d'une boucle pour toujours revenir au menu de sélection
while :; do
# Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête)
ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1)
# Préparation de la liste pour whiptail
MENU_ITEMS=()
INDEX=1
while IFS= read -r account; do
MENU_ITEMS+=("$INDEX" "$account")
INDEX=$((INDEX + 1))
done <<< "$ACCOUNT_NAMES"
# Affichage de la liste des comptes avec whiptail
ACCOUNT_INDEX=$(whiptail --title "TOTP TUI" --menu "Compte :" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3)
# Si l'utilisateur annule, arrêter le script
if [[ $? -ne 0 ]]; then
exit 1
fi
# Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête)
LINE=$(tail -n +2 "$CSV_FILE" | sed -n "${ACCOUNT_INDEX}p")
IFS=',' read -r account_name key totp_mode base32 <<< "$LINE"
# Définition des arguments pour oathtool en fonction de base32 et totp_mode
OATHTOOL_ARGS=""
if [[ "$base32" == "1" ]]; then
OATHTOOL_ARGS+="-b "
fi
case "$totp_mode" in
"SHA1")
OATHTOOL_ARGS+="--totp "
;;
"SHA256")
OATHTOOL_ARGS+="--totp=SHA256 "
;;
"SHA512")
OATHTOOL_ARGS+="--totp=SHA512 "
;;
*)
echo "Mode TOTP non valide : $totp_mode"
exit 1
;;
esac
# Génération du code TOTP avec oathtool
TOTP_CODE=$(oathtool $OATHTOOL_ARGS "$key")
# Affichage du code TOTP
#whiptail --title "TOTP-TUI" --msgbox "Le code TOTP pour le compte \"$account_name\" est : $TOTP_CODE" 8 45
#clear; echo -e "\e[31m$(figlet $TOTP_CODE)\e[0m"
figlet_output=$(figlet -f slant "$TOTP_CODE")
echo $TOTP_CODE | xclip &
whiptail --title "TOTP-TUI" --msgbox "TOTP \"$account_name\" :\n\n$figlet_output" 14 40
done