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.

twister_void
źródł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.

gertvdijk
źródło
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