+totptui.sh
This commit is contained in:
parent
724d07e6fb
commit
25b6648fa2
2 changed files with 90 additions and 0 deletions
3
totptui/accounts.csv
Normal file
3
totptui/accounts.csv
Normal file
|
@ -0,0 +1,3 @@
|
|||
account_name,key,totp_mode,base32
|
||||
Exemple Num1,6ND25BYLF62TSWUW,SHA1,1
|
||||
Exemple Num2,3LKAOG66QOMV34CQR6ZCYNZFI6F2VPIT,SHA1,1
|
|
87
totptui/totptui.sh
Executable file
87
totptui/totptui.sh
Executable 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
|
Loading…
Reference in a new issue