¿Puedo hacer que la cámara web tome una foto cuando se ingresa una contraseña incorrecta?

72

Estoy usando una laptop Estaba pensando en tener un soporte en mi máquina Ubuntu. Cuando se ingresa una contraseña incorrecta, luego se toma una fotografía que revela quién ha intentado obtener acceso.

He buscado y lo único que he encontrado es cosas para hacer esto en Mac. ¿Es posible escribir un script para que Ubuntu haga lo mismo?

Si es posible, ¿qué es un script o software para que esto suceda?

twister_void
fuente
¿Una imagen en la pantalla de inicio de sesión de lightdm o algo así como un protector de pantalla protegido por contraseña (Básicamente antes de iniciar sesión o después de iniciar sesión)?
Luis Alvarado
Sí, imagen en la pantalla de inicio de sesión de lightdm cuando el usuario ingresó una contraseña incorrecta.
twister_void
3
Solución "adecuada" a través de PAM en los foros de Ubuntu . Bien, publicaré esto como respuesta. :)
gertvdijk
Alternativamente, instale una aplicación de terceros como Prey . No hace exactamente lo que pides, pero se especializa en proteger y recuperar tu computadora en caso de robo.
Paddy Landau
No olvide mencionar el uso de la cámara web para tomar una foto en caso de que se encuentre en un entorno sensible / protegido.
pl1nk

Respuestas:

59

Basado en esta publicación en los foros de Ubuntu de BkkBonanza .

Este es un enfoque que utiliza PAM y funcionará para todos los intentos fallidos de inicio de sesión. Con SSH, un terminal virtual o mediante la pantalla de inicio de sesión normal, no importa, ya que PAM se encarga de todo al final.

  1. Instale ffmpegInstalar ffmpeg , vamos a usar esto como una forma de línea de comando para capturar las imágenes de la cámara web. Actualización : ffmpeg se elimina cuando actualiza a Ubuntu 14.04. Podemos usar avconv en lugar de ffmpeg en el siguiente script. No es necesario instalar nada por separado.

  2. Cree un pequeño script en algún lugar, por ejemplo, /usr/local/bin/grabpicturecon el siguiente contenido:

    #!/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

    Cambie /dev/video0con el dispositivo de video real de su cámara web y elija una ruta donde se guardarán las imágenes, simplemente elijo /tmp. En la versión más nueva de Ubuntu, use en avconvlugar de ffmpeg( sudo apt-get install libav-tools).

  3. Hazlo ejecutable, por ejemplo chmod +x /usr/local/bin/grabpicture.

  4. Prueba de ello, con sólo llamar que: /usr/local/bin/grabpicture. Comprueba si ves archivos apareciendo /tmp/vid....jpg.

  5. Configure PAM para llamar a esto en cada intento fallido.

    Nota: haga esto con cuidado; si esto falla, no podrá volver a acceder a su sistema de manera regular.

    1. Abra una ventana de terminal con acceso raíz ( sudo -i) y déjela abierta, en caso de que se equivoque en los siguientes pasos.
    2. Abra /etc/pam.d/common-authen su editor favorito, por ejemplo, haciendo gksudo gedit /etc/pam.d/common-auth. Tenga en cuenta para los siguientes pasos que el orden de las líneas en este archivo es importante.
    3. Localice la línea a continuación. Por defecto, hay una línea antes de la que tiene pam_deny.so. En mi sistema 12.04 se ve así:

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
    4. En esta línea, cambie el success=1a success=2para que omita nuestro script en caso de éxito. Este es un paso importante.

    5. Justo debajo de allí, agregue uno nuevo para llamar al script real:

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
    6. Guarde y cierre el archivo. No es necesario reiniciar nada.

  6. Pruébalo.

    1. En una nueva ventana de terminal, como usuario normal, intente su -l usernameiniciar sesión como otro usuario con nombre de usuario username(cambiar con uno real, por supuesto). Ingrese deliberadamente la contraseña incorrecta. Compruebe si esto da como resultado una nueva imagen.
    2. Lo mismo que arriba, pero ahora ingrese la contraseña correcta. Comprueba si inicias sesión y no se toma una fotografía.
  7. Si las pruebas han tenido éxito, puede cerrar sesión en su DE (Unity / KDE / ...) y debería ver lo mismo al ingresar una contraseña incorrecta desde la pantalla de inicio de sesión.

gertvdijk
fuente
9
Eso es inteligente. Dos preguntas: (1) ¿No debería usar una carpeta que no sea /tmp, porque /tmpse borra cada vez que reinicia? (2) ¿Cómo saber cuál es su dispositivo de video real?
Paddy Landau
66
Esto funciona pero quería agregar 3 cosas. (1) Podemos usar / var / tmp que no se borra al reiniciar. (2) Siga con cuidado esta solución, ya que es posible quedarse atascado en un bucle infinito de "modo de gráficos bajos" y / o "comprobar el estado de la batería", como estaba yo. (3) Si se atasca, reinicie y entre en modo de recuperación (presione el desplazamiento hacia la izquierda); seleccione "modo gráfico a prueba de fallos" y vea si / está montado RW; ahora caiga al shell de raíz; cd a /etc/pam.d; chmod common-auth to RW, edite usando nano para eliminar la línea agregada para llamar al script grabpicture; salvar; salida; reiniciar.
Sri
55
Descubrí por qué mi PC se atascó. Los pasos 5.3 a 5.5 en la respuesta deben ajustarse de acuerdo con las líneas que tiene el archivo de autenticación común. Mi common-auth también tenía otra línea para pam_winbind.so entre las líneas que tienen pam_unix.so y pam_deny.so. Básicamente, las líneas de autenticación en "éxito" deben omitir el script de captura, así como la línea pam_deny.so.
Sri
También intento el mismo concepto, pero la respuesta mencionada anteriormente no funciona, me lleva un error de gráficos bajo, ni toma ninguna imagen ni ningún mensaje de error por intento incorrecto. .. Qué hacer a continuación. (gertvdijk)
SachiN
1
tal vez debería actualizarse para usar avconv o opencv en lugar del ffmpeg ahora en desuso
RobotHumans