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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.