░█░█░█░█░█▀█░▀█▀░░░█░█░█▀█░█▀▀░░░█░█░█▀▄░█▀█░█▀█░█▀▀ ░█▄█░█▀█░█▀█░░█░░░░█▄█░█▀█░▀▀█░░░█▄█░█▀▄░█░█░█░█░█░█ ░▀░▀░▀░▀░▀░▀░░▀░░░░▀░▀░▀░▀░▀▀▀░░░▀░▀░▀░▀░▀▀▀░▀░▀░▀▀▀
================================================================
9 Juin 2021
Ce script est à utiliser avec dmenu ou rofi. Il liste tous les sites internet pour lesquels vous avez un mot de passe géré par pass et affiche le code totp - s'il existe - en interrogeant totp-cli.
Ce script ajoute un chiffre/nombre devant chaque site listé de façon à simplifier et optimiser la selection plutôt que d'avoir à taper le nom complet du site dans les options listées ci-dessous.
Pour exécuter ce script vous aurez besoin de:
de stocker les données dans ~/.password-store/Pwd mais ceci peut aisément se configurer pour correspondre à vos besoins spécifiques
ou
(vous pouvez utliser celui que vous préférez. Ce script est écrit pour utiliser rofi mais vous pouvez facilement l'adapter pour utiliser dmenu en remplaçant les commandes rofi par dmenu)
gpg
xdotool pour simuler les entrées clavier
(otpionnel - si vous voulez gérer/accécder à vos codes totp. totp-cli est une application en ligne de commande pour générer des codes totp pour l'authentification en 2 étapes en utilisant RFC6238. totp-cli interagit avec pass)
copyq est utlisé ici comme mon gestionnaire de presse-papier pour différentes raisons mais vous pouvez utiliser xclip ou autre chose si vous préférez. Voir ici pour l'interaction entre dmenu et copyq:
Il existe un wrapper dmenu appelé passmenu mais il est limité à copier votre mot de passe dans le presse-papier. J'ai écrit ce petit script pour ajouter les options de copier votre nom d'utilisateur, mot de passe, ou code totp et de les coller automatiquement dans la fenêtre active quand sélectionné. Il peut aussi prendre en charge de vous loguer automatiquement si vous préférez. En pressant Entrée, les champs nom d'utilisateur et mot de passe seront renseignés et le code totp sera affiché s'il existe et en attente d'être sélectionné quand le site web est prêt à l'accepter.
Notez que ce script gère les 2 options les plus communes pour renseigner les champs nom d'utlisateur et mot de passe: 1) le nom d'utilisateur est attendu en première page et le mot de passe en seconde, 2) les 2 champs sont sur la même page. Par défaut, le scipt utlise la première option pour renseigner ces champs. Si un site web offre la seconde option, vous pouvez dire au script d'agir en conséquence en ajoutant "Tab" en ligne 4 du fichier de mot de passe (voir les détails plus bas).
Lorsque vous utilisez ce script, vous pouvez commencer à taper une des commandes ci-après dans dmenu/rofi:
(où XX est le nombre devant le nom du site)
lXX: affiche l'url du site et la colle automatiquement dans la fenêtre active quand/si il est selectionné
pXX: affiche le mot de passe et le colle automatiquement dans la fenêtre active quand/si il est selectionné
tXX: affiche le code totp (s'il existe) et le colle automatiquement dans la fenêtre active quand/si il est selectionné
uXX: affiche le nom d'utilisteur et le colle automatiquement dans la fenêtre active quand/si il est selectionné
entrée: colle automatiquement le nom d'utilisateur et le mot de passe dans la fenêtre active. Affiche également le code totp (s'il existe) et le colle automatiquement dans la fenêtre active quand/si il est selectionné.
Ajouter un chiffre/nombre à une de ces commandes, exécute cette commande pour le site indiqué (e.g. u12 affcihe le nom d'utilisateur pour le site web #12).
Tapez gpg --full-gen-key dans un terminal et laissez toutes les options par défaut à moins que vous n'ayez des besoins spécifiques. Une fois fait, il vous sera demandé une passphrase/ Vous devrez vous en souvenir et NE JAMAIS l'oublier. C'est la clé et l'unique moyen pour accéder à vos mots de passe/codes totp que vous créerez avec pass/totp-cli.
Taper les commandes suivantes dans un terminal:
pass init
pass init gpg-id # utilisez le gpg-id défini précédemment
pass insert -m Pwd/NOM # utilsiez ce que vous voulez comme chemin de fichier et ajustez le dans le script si vous n'utilisez pas Pwd. Pour NOM, utilisez ce qui vous semble parlant pour un site web.
Cette dernière commande va vous permettre de générer un fichier dans lequel chaque ligne va contenir une information. Ce script est écrit pour fonctionner avec la structure suivante:
- ligne 1: votre mot de passe.
- ligne 2: votre nom d'utilisateur.
- ligne 3: l'url du site web.
- ligne 4: entrez "Tab" (sans les guillements) si vous voulez que le script rentre automatiquement votre nom d'utilisateur et votre mot de passe pour un site web qui demande votre nom d'utilisateur sur la première page et votre mot de passe sur la seconde.
Notez que vous pouvez utiliser la commande "pass edit Pw/NOM" pour modifier un fichier existant, et "pass generate NOM LONGUEUR" pour générer un nouveau mot de passe de LONGUEUR caractères dans un fichier nommé NOM.
Vous pouvez aussi copier/coller vos fichiers et votre clé gpg sur votre téléphone et utiliser "password store" pour accéder/gérer vos mots de passe sous Android.
C'est pourquoi la ligne 1 des fichiers est ici dédiée au mot de passe. En effet, password store s'attend à trouver le mot de passe sur cette ligne.
Dans les paramètres du site web, cherchez l'authentication en 2 étapes. Une fois que vous avez le QR code, cherchez pour l'option d'utiliser une clé au lieu du QR code et copiez la lorsque totp-cli vous demande la "shared key" après avoir tapé "totp -a NOM" dans un terminal (où NOM est le nom de votre fichier).
Vous pouvez ensuite générer un code avec la commande "totp -show NOM" dans un terminal.
Notez que si vous utlisez une application comme andotp sur votre téléphone Android pour gérer vos codes totp, je vous recommande de flasher le QR code et ensuite de créer un code totp avec totp-cli comme ça totp-cli et votre téléphone utiliseront les mêmes codes totp pour accéder à un site web. Si vous faites ainsi, vérifiez jsute que le premier code totp génr est identique sur votre ordinateur et votre téléphone car il m'est arrivé - pour une raison inexpliquée - que ça ne soit pas le cas.
Le script est disponible mon gitlab (sous le nom rofi-pass.sh)
(pour rappel, je ne suis pas un programmeur professionnel et ce script n'est peut être pas écrit de façon optimal mais au moins il fonctionne)
En espérant que vous trouviez ce script utile. N'hésitez pas à me le dire et.ou à soumettre des améliorations.