+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