2024-07-09 13:23:02 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Fichier CSV contenant les données des comptes
|
2024-07-09 13:40:06 +00:00
|
|
|
CSV_FILE="$HOME/Sync/BContact/totp_accounts.csv"
|
2024-07-09 13:23:02 +00:00
|
|
|
|
|
|
|
# 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
|
2024-07-09 13:40:06 +00:00
|
|
|
#while :; do
|
2024-07-09 13:23:02 +00:00
|
|
|
|
|
|
|
# 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 &
|
2024-07-09 13:40:06 +00:00
|
|
|
whiptail --title "TOTP-TUI" --msgbox "TOTP \"$account_name\" :\n\n$figlet_output" 14 45
|
|
|
|
exit
|
|
|
|
#done
|