web-dev-qa-db-fra.com

Puis-je obliger la webcam à prendre une photo lorsqu'un mot de passe incorrect est saisi?

J'utilise un ordinateur portable. Je pensais avoir un support dans ma machine Ubuntu. Lorsqu'un mot de passe incorrect est entré, une photo est prise plus tard, révélant qui a tenté d'accéder.

J'ai fait des recherches et la seule chose que j'ai trouvée est de pouvoir le faire sur Mac. Est-il possible d'écrire un script pour Ubuntu pour faire la même chose.

Si possible, alors qu'est-ce qu'un script ou un logiciel pour y arriver?.

72
twister_void

Basé sur ce post sur les Ubuntuforums par BkkBonanza .

Cette approche utilise PAM et fonctionne pour toutes les tentatives de connexion infructueuses. Avec SSH, un terminal virtuel ou via l'écran de connexion normal, peu importe, tout est géré par PAM à la fin.

  1. Installer ffmpeg Install ffmpeg , nous allons utiliser cela comme un moyen en ligne de commande de récupérer les images de la webcam. Mise à jour : ffmpeg est supprimé lors de la mise à niveau vers Ubuntu 14.04. Nous pouvons utiliser avconv à la place de ffmpeg dans le script ci-dessous. Pas besoin d'installer quoi que ce soit séparément.

  2. Créez un petit script quelque part, par exemple /usr/local/bin/grabpicture avec le contenu suivant:

    #!/bin/bash
    ts=`date +%s`
    ffmpeg -f video4linux2 -s vga -i /dev/video0 -vframes 3 /tmp/vid-$ts.%01d.jpg
    exit 0  #important - has to exit with status 0
    

    Changez le /dev/video0 avec le périphérique vidéo réel de votre webcam et choisissez un chemin dans lequel les images sont en cours d'enregistrement. Je choisis simplement /tmp. Dans la nouvelle version d'Ubuntu, utilisez avconv au lieu de ffmpeg (Sudo apt-get install libav-tools).

  3. Rendez-le exécutable, par exemple chmod +x /usr/local/bin/grabpicture.

  4. Testez-le simplement en l'appelant: /usr/local/bin/grabpicture. Vérifiez si les fichiers apparaissent dans /tmp/vid....jpg.

  5. Configurez PAM pour qu'il appelle à chaque tentative infructueuse.

    Remarque: procédez avec précaution. Si cela échoue, vous ne pourrez plus accéder à votre système de manière régulière.

    1. Ouvrez une fenêtre de terminal avec un accès root (Sudo -i) et laissez-la ouverte - juste au cas où vous vissez les étapes suivantes.
    2. Ouvrez /etc/pam.d/common-auth dans votre éditeur favori, par exemple. en faisant gksudo gedit /etc/pam.d/common-auth. N'oubliez pas, pour les étapes suivantes, que l'ordre des lignes dans ce fichier est important.
    3. Localisez la ligne ci-dessous. Par défaut, il y a une ligne avant celle avec pam_deny.so. Sur mon système 12.04, il ressemble à ceci:

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
      
    4. Dans cette ligne, modifiez le success=1 en success=2 pour le laisser ignorer notre script s'il réussit. Ceci est une étape importante.

    5. Juste en dessous, ajoutez-en un nouveau pour appeler le script actuel:

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
      
    6. Enregistrez et fermez le fichier. Pas besoin de redémarrer quoi que ce soit.

  6. Essaye-le.

    1. Dans une nouvelle fenêtre de terminal, en tant qu'utilisateur normal, essayez su -l username pour vous connecter en tant qu'utilisateur différent avec le nom d'utilisateur username (changez avec un vrai bien sûr). Entrez délibérément le mauvais mot de passe. Vérifiez si cela entraîne une nouvelle image.
    2. Comme ci-dessus, mais entrez maintenant le mot de passe correct. Vérifiez si vous vous connectez et que la photo ne soit pas prise.
  7. Si les tests ont réussi, vous pouvez vous déconnecter de votre DE (Unity/KDE/...) et vous devriez voir la même chose lorsque vous entrez un mot de passe incorrect à partir de l'écran de connexion.

59
gertvdijk