Posso fazer a webcam tirar uma foto quando uma senha incorreta é inserida?

72

Eu estou usando um laptop Eu estava pensando em ter um suporte na minha máquina Ubuntu. Quando uma senha incorreta é inserida, uma foto é tirada posteriormente, revelando quem está tentando obter acesso.

Eu pesquisei e a única coisa que encontrei foram as coisas para fazer isso nos Macs. É possível escrever um script para o Ubuntu fazer o mesmo.

Se possível, o que é um script ou software para fazer isso acontecer?

twister_void
fonte
Uma imagem na tela de login do lightdm ou algo como um protetor de tela protegido por senha (basicamente antes do login ou após o login)?
Luis Alvarado
Sim, imagem na tela de login do lightdm quando o usuário coloca a senha incorreta.
Twister_void
3
Solução "adequada" via PAM no fórum do Ubuntu . Ok, vou postar isso como resposta. :)
gertvdijk
Como alternativa, instale um aplicativo de terceiros, como o Prey . Ele não faz exatamente o que você pede, mas é especializado em proteger e recuperar seu computador em caso de roubo.
Paddy Landau
Não se esqueça de mencionar o uso da webcam para tirar uma foto, caso você esteja em um ambiente sensível / protegido.
pl1nk

Respostas:

59

Baseado neste post no Ubuntuforums do BkkBonanza .

Essa é uma abordagem usando o PAM e funcionará para todas as tentativas de login com falha. Usando o SSH, um terminal virtual ou através da tela de login normal, não importa, pois tudo é tratado pelo PAM no final.

  1. Instale o ffmpegInstale o ffmpeg , vamos usar isso como uma forma de linha de comando para capturar as imagens da webcam. Atualização : o ffmpeg é removido quando você atualiza para o Ubuntu 14.04. Podemos usar o avconv no lugar do ffmpeg no script abaixo. Não é necessário instalar nada separadamente.

  2. Crie um pequeno script em algum lugar, por exemplo, /usr/local/bin/grabpicturecom o seguinte conteúdo:

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

    Altere o /dev/video0dispositivo de vídeo atual da sua webcam e escolha um caminho em que as fotos serão salvas - basta escolher /tmp. Na versão mais recente do Ubuntu, use em avconvvez de ffmpeg( sudo apt-get install libav-tools).

  3. Torne executável, por exemplo chmod +x /usr/local/bin/grabpicture.

  4. Testá-lo, por apenas chamando-o: /usr/local/bin/grabpicture. Verifique se você vê os arquivos aparecendo /tmp/vid....jpg.

  5. Configure o PAM para chamar isso em todas as tentativas com falha.

    Nota: faça isso com cuidado - se isso falhar, você não poderá obter acesso ao seu sistema novamente de maneira regular.

    1. Abra uma janela do terminal com acesso root ( sudo -i) e deixe-a aberta - caso você estrague as próximas etapas.
    2. Abra /etc/pam.d/common-authno seu editor favorito, por exemplo, fazendo gksudo gedit /etc/pam.d/common-auth. Lembre-se das etapas a seguir que importam a ordem das linhas neste arquivo.
    3. Localize a linha abaixo. Por padrão, há uma linha antes da linha com pam_deny.so. No meu sistema 12.04, fica assim:

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
    4. Nesta linha, altere o success=1para success=2que ele pule o script com sucesso. Este é um passo importante.

    5. Logo abaixo, adicione um novo para chamar o script real:

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
    6. Salve e feche o arquivo. Não há necessidade de reiniciar nada.

  6. Teste-o.

    1. Em uma nova janela do terminal, como usuário comum, tente su -l usernamefazer login como outro usuário com nome de usuário username(mude para um real, é claro). Digite deliberadamente a senha errada. Verifique se isso resulta em uma nova imagem.
    2. O mesmo que acima, mas agora digite a senha correta. Verifique se você faz login e isso não resulta em uma foto sendo tirada.
  7. Se os testes foram bem-sucedidos, você pode sair do seu DE (Unity / KDE / ...) e verá o mesmo ao digitar uma senha errada na tela de login.

gertvdijk
fonte
9
Isso é esperto. Duas perguntas: (1) Você não deve usar uma pasta diferente de /tmp, porque /tmpé limpa toda vez que você reinicia? (2) Como você diz qual é o seu dispositivo de vídeo real?
Paddy Landau
6
Isso funciona, mas eu queria adicionar 3 coisas. (1) Podemos usar / var / tmp que não está limpo na reinicialização. (2) Pise com esta solução com cuidado, pois é possível ficar preso em loop infinito de "modo de gráficos baixos" e / ou "verificação do estado da bateria", como eu estava. (3) Se você ficar preso, reinicie e entre no modo de recuperação (pressione a tecla esquerda); selecione "modo gráfico à prova de falhas" e veja se / está montado RW; agora solte no shell raiz; cd para /etc/pam.d; chmod common-auth para RW, edite usando nano para remover a linha adicionada para chamar o script grabpicture; Salve ; Saída; reiniciar.
Sri
5
Eu descobri por que meu PC ficou preso. As etapas 5.3 a 5.5 na resposta precisam ser ajustadas de acordo com as linhas do arquivo de autenticação comum. Meu common-auth também tinha outra linha para pam_winbind.so entre as linhas tendo pam_unix.so e pam_deny.so. Basicamente, as linhas de autenticação em "sucesso" precisam pular o script de captura, bem como a linha pam_deny.so.
Sri
Também estou tentando o mesmo conceito, mas a resposta acima mencionada não funciona, leva-me a um erro gráfico baixo, nem a uma imagem nem a uma mensagem de erro por tentativa incorreta. .. O que fazer a seguir. (gertvdijk)
SachiN 14/02
11
talvez devesse ser atualizados para usar avconv ou opencv ao contrário do ffmpeg agora obsoleta
RobotHumans