Могу ли я сделать так, чтобы веб-камера делала снимок при вводе неверного пароля?

72

Я использую ноутбук. Я думал о поддержке в моей машине с Ubuntu. Когда введен неправильный пароль, позже делается снимок, показывающий, кто пытался получить доступ.

Я искал вокруг, и единственное, что я нашел, это что-то для Mac. Можно ли написать скрипт для Ubuntu, чтобы сделать то же самое.

Если возможно, то, что такое сценарий или программное обеспечение для этого.

twister_void
источник
Картинка на экране входа в систему lightdm или что-то вроде заставки, защищенной паролем (в основном, перед входом в систему или после входа в систему)?
Луис Альварадо
Да, изображение на экране входа в систему lightdm, когда пользователь вводит неверный пароль.
twister_void
3
«Правильное» решение через PAM на Ubuntuforums . Хорошо, я опубликую это как ответ. :)
gertvdijk
Или установите стороннее приложение, например Prey . Он работает не совсем так, как вы просите, но специализируется на защите и восстановлении вашего компьютера в случае кражи.
Пэдди Ландау
Не забудьте упомянуть использование веб-камеры для фотосъемки, если вы находитесь в чувствительной / защищенной среде.
pl1nk

Ответы:

59

Основано на этом посте на Ubuntuforums от BkkBonanza .

Это подход с использованием PAM, который будет работать для всех неудачных попыток входа в систему. Используя SSH, виртуальный терминал или через обычный экран входа в систему, это не имеет значения, поскольку в конечном итоге все обрабатывается PAM.

  1. Установите ffmpegУстановите ffmpeg , мы собираемся использовать это как способ получения изображений с веб-камеры в командной строке. Обновление : ffmpeg удаляется при обновлении до Ubuntu 14.04. Мы можем использовать avconv вместо ffmpeg в следующем скрипте. Не нужно ничего устанавливать отдельно.

  2. Создайте небольшой скрипт где-нибудь, например, /usr/local/bin/grabpictureсо следующим содержанием:

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

    Измените /dev/video0фактическое видеоустройство вашей веб-камеры и выберите путь, по которому сохраняются изображения - я просто выбираю /tmp. В более новой версии Ubuntu используйте avconvвместо ffmpeg( sudo apt-get install libav-tools).

  3. Сделайте его исполняемым, например chmod +x /usr/local/bin/grabpicture.

  4. Проверьте это, просто позвонив /usr/local/bin/grabpicture. Проверьте, видите ли вы файлы, появляющиеся в /tmp/vid....jpg.

  5. Сконфигурируйте PAM для вызова этого при каждой неудачной попытке.

    Примечание: делайте это осторожно - если это не удастся, вы не сможете снова получить доступ к вашей системе на регулярной основе.

    1. Откройте окно терминала с root-доступом ( sudo -i) и оставьте его открытым - на случай, если вы испортите следующие шаги.
    2. Откройте /etc/pam.d/common-authв своем любимом редакторе, например, выполнив gksudo gedit /etc/pam.d/common-auth. Для следующих шагов помните, что порядок строк в этом файле имеет значение.
    3. Найдите строку ниже. По умолчанию есть одна строка , прежде чем тот , с pam_deny.so. В моей системе 12.04 это выглядит так:

      auth    [success=1 default=ignore]      pam_unix.so nullok_secure
    4. В этой строке измените success=1его, success=2чтобы он пропустил наш скрипт на успех. Это важный шаг.

    5. Прямо внизу добавьте новый, чтобы вызвать реальный скрипт:

      auth    [default=ignore]                pam_exec.so seteuid /usr/local/bin/grabpicture
    6. Сохраните и закройте файл. Не нужно ничего перезагружать.

  6. Проверь это.

    1. В новом окне терминала, как обычный пользователь, попробуйте su -l usernameвойти в систему как другой пользователь с именем пользователя username(конечно, измените его на действительное). Умышленно введите неправильный пароль. Проверьте, не приводит ли это к новой картинке.
    2. То же, что и выше, но теперь введите правильный пароль. Проверьте, если вы вошли в систему, и это не приводит к съемке.
  7. Если тесты пройдены успешно, вы можете выйти из своего DE (Unity / KDE / ...) и вы должны увидеть то же самое при вводе неправильного пароля с экрана входа в систему.

gertvdijk
источник
9
Это умно. Два вопроса: (1) Разве вы не должны использовать папку, отличную от /tmp, потому что /tmpочищается каждый раз при перезагрузке? (2) Как узнать, какое у вас видеоустройство?
Пэдди Ландау
6
Это работает, но я хотел добавить 3 вещи. (1) Мы можем использовать / var / tmp, который не очищается при перезагрузке. (2) Остерегайтесь этого решения осторожно, так как возможно застрять в бесконечном цикле «низкого графического режима» и / или «проверки состояния батареи», как я и делал. (3) Если вы застряли, перезагрузитесь и перейдите в режим восстановления (нажмите левую кнопку); выберите «Отказоустойчивый графический режим» и посмотрите, установлен ли / RW; теперь перейдите в корневую оболочку; перейдите в /etc/pam.d; chmod common-auth для RW, отредактируйте с помощью nano, чтобы удалить добавленную строку для вызова скрипта grabpicture; спасти; Выход; перезагрузка.
Шри
5
Я понял, почему мой компьютер застрял. Шаги с 5.3 по 5.5 в ответе должны быть скорректированы в соответствии с тем, какие строки имеет файл общего аутентификации. У моего общего автора также была другая строка для pam_winbind.so между строками, имеющими pam_unix.so и pam_deny.so. В основном, строки авторизации "success" должны пропускать скрипт захвата, а также строку pam_deny.so.
Шри
Я также пытаюсь использовать ту же концепцию, но вышеупомянутый ответ не работает, так как у меня возникает низкая графическая ошибка, а также не требуется ни изображения, ни сообщения об ошибке за неправильную попытку. .. Что делать дальше. (gertvdijk)
SachiN
1
может быть обновлен для использования avconv или opencv, в отличие от устаревшего ffmpeg
RobotHumans