Czy mogę zmusić kamerę internetową do zrobienia zdjęcia po wprowadzeniu nieprawidłowego hasła?


72

Używam laptopa. Myślałem o wsparciu w mojej maszynie Ubuntu. Po wprowadzeniu niepoprawnego hasła zdjęcie zostanie zrobione później, aby pokazać, kto próbował uzyskać dostęp.

Szukałem i jedyne, co znalazłem, to rzeczy do zrobienia na komputerach Mac. Czy możliwe jest napisanie skryptu, aby Ubuntu zrobił to samo.

Jeśli to możliwe, co to jest skrypt lub oprogramowanie, aby tak się stało.


Obraz na ekranie logowania lightdm lub coś w rodzaju wygaszacza ekranu chronionego hasłem (Zasadniczo przed zalogowaniem lub po zalogowaniu)?
Luis Alvarado,

Tak, obraz na ekranie logowania lightdm, gdy użytkownik wprowadzi nieprawidłowe hasło.
twister_void

3
„Właściwe” rozwiązanie za pośrednictwem PAM na Ubuntuforums . Dobrze, opublikuję to jako odpowiedź. :)
gertvdijk

Alternatywnie zainstaluj aplikację innej firmy, taką jak Prey . Nie działa dokładnie tak, jak prosisz, ale specjalizuje się w ochronie i odzyskiwaniu komputera na wypadek kradzieży.
Paddy Landau

Nie zapomnij wspomnieć o użyciu kamery internetowej podczas robienia zdjęć na wypadek wrażliwego / chronionego środowiska.
pl1nk

Odpowiedzi:


59

Na podstawie tego postu na Ubuntuforums autorstwa BkkBonanza .

Jest to podejście wykorzystujące PAM i będzie działać dla wszystkich nieudanych prób logowania. Używając SSH, wirtualnego terminala lub zwykłego ekranu logowania, nie ma to znaczenia, ponieważ ostatecznie wszystko jest obsługiwane przez PAM.

  1. Zainstaluj ffmpegZainstaluj ffmpeg , użyjemy tego jako sposobu przechwytywania obrazów z kamery. Aktualizacja : ffmpeg jest usuwany po aktualizacji do Ubuntu 14.04. Możemy użyć avconv zamiast ffmpeg w poniższym skrypcie. Nie trzeba instalować niczego osobno.

  2. Utwórz gdzieś mały skrypt, np /usr/local/bin/grabpicture. O następującej treści:

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

    Zmień /dev/video0rzeczywiste urządzenie wideo kamery internetowej i wybierz ścieżkę, w której zapisywane są zdjęcia - po prostu wybieram /tmp. W nowszej wersji Ubuntu użyj avconvzamiast ffmpeg( sudo apt-get install libav-tools).

  3. Spraw, by był wykonywalny, np chmod +x /usr/local/bin/grabpicture.

  4. Przetestować go, nazywając go po prostu: /usr/local/bin/grabpicture. Sprawdź, czy widzisz pliki pojawiające się w /tmp/vid....jpg.

  5. Skonfiguruj PAM, aby wywoływał to przy każdej nieudanej próbie.

    Uwaga: zrób to ostrożnie - jeśli to się nie powiedzie, nie będziesz w stanie uzyskać regularnego dostępu do systemu.

    1. Otwórz okno terminala z dostępem roota ( sudo -i) i pozostaw je otwarte - na wypadek, gdybyś popsuł się w następnych krokach.
    2. Otwórz /etc/pam.d/common-authw swoim ulubionym edytorze, np gksudo gedit /etc/pam.d/common-auth. Robiąc . Należy pamiętać o następujących krokach, według których kolejność wierszy w tym pliku ma znaczenie.
    3. Znajdź linię poniżej. Domyślnie jest jedna linia przed jednego z pam_deny.so. W moim systemie 12.04 wygląda to tak:

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
    4. W tym wierszu zmień na, success=1aby success=2pomijał nasz skrypt o sukcesie. To ważny krok.

    5. Poniżej dodaj nowy, aby wywołać rzeczywisty skrypt:

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
    6. Zapisz i zamknij plik. Nie trzeba niczego restartować.

  6. Sprawdź to.

    1. W nowym oknie terminala, jako zwykły użytkownik, spróbuj su -l usernamezalogować się jako inny użytkownik z nazwą użytkownika username(zmień oczywiście na rzeczywisty). Celowo wprowadź nieprawidłowe hasło. Sprawdź, czy to daje nowe zdjęcie.
    2. To samo co powyżej, ale teraz wprowadź poprawne hasło. Sprawdź, czy się zalogowałeś i czy nie powoduje to zrobienia zdjęcia.
  7. Jeśli testy się powiodły, możesz wylogować się z DE (Unity / KDE / ...) i powinieneś zobaczyć to samo przy wprowadzaniu błędnego hasła z ekranu logowania.


9
To sprytne. Dwa pytania: (1) Czy nie powinieneś używać innego folderu niż /tmp, ponieważ /tmpjest usuwany przy każdym ponownym uruchomieniu? (2) Jak powiedzieć, jakie jest Twoje rzeczywiste urządzenie wideo?
Paddy Landau

6
To działa, ale chciałem dodać 3 rzeczy. (1) Możemy użyć / var / tmp, który nie jest czyszczony przy ponownym uruchomieniu. (2) Postępuj ostrożnie z tym rozwiązaniem, ponieważ możliwe jest utknięcie w nieskończonej pętli „trybu niskiej grafiki” i / lub „sprawdzania stanu baterii”, tak jak ja. (3) Jeśli utkniesz, uruchom ponownie i przejdź do trybu odzyskiwania (naciśnij lewy Shift); wybierz „tryb grafiki awaryjnej” i sprawdź, czy / jest zamontowany RW; teraz upuść do powłoki roota; cd do /etc/pam.d; chmod common-auth do RW, edytuj za pomocą nano, aby usunąć linię dodaną do wywołania skryptu grabpicture; zapisać; wyjście; restart.
Sri

5
Zrozumiałem, dlaczego mój komputer utknął. Kroki od 5.3 do 5.5 w odpowiedzi muszą zostać dostosowane zgodnie z liniami pliku common-auth. Mój common-auth miał także inną linię dla pam_winbind.so między liniami zawierającymi pam_unix.so i pam_deny.so. Zasadniczo wiersze uwierzytelniania w „sukcesie” muszą pominąć skrypt przechwytywania, a także wiersz pam_deny.so.
Sri

Próbuję również tego samego pojęcia, ale powyższa odpowiedź nie działa, nie wymaga to niskiego błędu graficznego, ani nie bierze żadnego obrazu ani żadnego komunikatu o błędzie za złą próbę. .. Co zrobic nastepnie. (gertvdijk)
SachiN

1
powinien być zaktualizowany w celu użycia avconv lub opencv w przeciwieństwie do obecnie przestarzałego ffmpeg
RobotHumans
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.