“Serrure” USB

Message 1, par Elzen

§ Posté le 12/01/2013 à 18h 10m 29

Je suppose ne pas avoir besoin de vous expliquer ce qu'est une clef USB : plus pratique à trimballer qu'une disquette ou un CD (et, accessoirement, contenant plus de place que la première et plus facilement inscriptible que le second), ces supports de stockages sont maintenant très répandus.

Mais leur nom fait quand même penser à autre chose : une « clef », entre autres sens du mot, c'est un truc dont on se sert pour fermer des portes. Du coup, je me suis dit que ça pourrait être amusant d'utiliser une clef USB comme clef, pour verrouiller l'ordinateur.


D'autant que ça peut être pratique : le système classique de verrouillage d'ordinateur, c'est avec un mot de passe. Un mot de passe, c'est personnel, ça ne se communique pas. Certains ordinateurs sont équipés d'un lecteur d'empreintes digitales, ce qui est encore pire (le doigt, physiquement, ça ne se prête pas).

Si jamais vous avez besoin d'envoyer quelqu'un chercher une info sur votre ordinateur alors que celui-ci est verrouillé, c'est quand même largement plus pratique de lui confier votre clef USB.


D'où ce truc : c'est un script python qui verrouille et déverrouille votre ordinateur à l'aide d'une clef USB. Une serrure USB, quoi.



Le principe est assez simple : vous lancez le script, une fenêtre s'ouvre, qui vous liste les différentes clefs USB connectées à l'ordinateur (s'il n'y en a pas encore, elles apparaîtront quand vous les brancherez). Vous choisissez celle que vous voulez, vous la débranchez, et l'ordinateur se verrouille. Il restera inutilisable jusqu'à ce que vous rebranchiez la clef.


Ce truc fonctionne normalement (je n'ai testé que chez moi) sur tout système GNU/Linux tournant sous X11 (si vous êtes sous Ubuntu, normalement, c'est bon), à condition que vous ayiez installé le paquet « python-xlib » (ainsi que PyGTK s'il n'est pas encore là).

Comme ça utilise la Xlib et que ça repère les clefs USB avec dbus et udisks, je ne pense pas que ça marche si vous utilisez Wayland ou sur un système *BSD (et encore moins sur un système non-Unix), mais si jamais vous testez, n'hésitez pas à poster vos retours.


Notez que ça ne verrouille que X : si vous connaissez le mot de passe de l'ordi, vous pouvez toujours passer en TTY pour reprendre la main (auquel cas, vous pouvez déverrouiller l'ordi en relançant le script, ce qui fermera l'instance précédente et vous rendra la main).

Message 2, par Elzen

§ Posté le 26/01/2014 à 18h 33m 56

Pour celles et ceux que ça intéresserait, je viens de mettre au point une seconde version de ce script.


Le principe de fonctionnement est toujours le même, mais cette version est conçue pour fonctionner avec XScreenSaver : plutôt que de simplement éteindre l'écran, le verrouillage affiche l'un des écrans de veille.


Il faudra modifier le fichier pour régler comme il vous plaira la liste des écrans de veille que vous voudrez utiliser ; le programme en choisira aléatoirement un au démarage, mais vous pourrez en changer en cliquant sur l'une des icônes de la barre de menus.

Le menu « Clef » fournit la liste des clefs USB utilisables pour le verrouillage (j'ai un peu amélioré la reconnaissance par rapport à l'ancienne). Au rebranchement de la clef, la fenêtre reste ouverte au cas où, mais un appui sur la touche échap la fera disparaître.


Par défaut, le programme affichera la même icône pour chacun des écrans de veille configurés, ce qui n'est pas forcément très utile pour s'y retrouver. Pour arranger ça, il faut que vous ayez, dans le répertoire pointé par icondir (n'hésitez pas faire pointer cette variable où vous voulez) un fichier « XXX.png », XXX étant le nom de l'exécutable utilisé.

À titre indicatif, voici les icônes que je me suis faites pour l'instant.


Cette nouvelle version dépend de XScreenSaver pour fonctionner (ou disons qu'elle générera des erreurs si les exécutables ne sont pas là). En contrepartie, il n'y a plus besoin du paquet python-xlib (j'ai entretemps trouvé comment bloquer le clavier et la souris directement avec GTK).

Bon, par contre, ça reste du PyGTK, donc il faudra probablement que j'en refasse une autre version plus tard.

Envoyer une réponse