Linux и распознавание по лицу, что может быть проще?
Проект HowDy даёт такую возможность нам.
Данный софт позволяет использовать реализацию схожую на Windows Hello™, но всё же менее безопасную, чем оригинальная, даже при использовании IR камеры. Прежде чем я расскажу, как использовать данных софт, напишу все мысли и что хотят сделать в будущих обновлениях программы и главное о текущих минусах.
- Первый минус - система авторизует любой запрос без вашего согласия. Самая типичная проблема c распознаванием по лицу - вы всегда смотрите на монитор. А значит если вы запустите вирус требующий sudo - у вас будут просто доли секунды отвернуться от монитора иначе же любой
sudo rm -rf /
(ну только не надо выполнять, да? Переустанавливать всё придётся) запрашивает "пароль" распознаёт ваше лицо и исполняется. Это ОЧЕНЬ опасно. - Систему можно обмануть фотографией подготовленной для IR камеры - то есть ч/б изначальное, чтобы камера увидела вас. Тем более не стоит использовать систему с обычной вебкамерой, для неё хватит даже телефона с себяшкой. Так как IR камеры не могут "видеть" обычные экраны устройств.
- Даже IR камеры для Windows Hello™ работают проверки реальности, по словам автора программы: В оригинале используется два ИК-излучателя для создания трехмерного изображения вашего лица, что является гораздо более безопасным. Для этого камера подсвечивает ваше лицо левым излучателем на четных кадрах и использует правый излучатель на нечетных кадрах. При этом лицо будет освещено под немного разными углами по разному, что невозможно подделать, просто распечатав 2D-фотографию. К сожалению HowDy не может контролировать IR для воссоздания даннрй проверки.
Так что крайне не рекомендую использовать данную систему на рабочих компьютерах. И дома быть осторожным с ней из-за п.1
Из плюсов - система работает и работает на удивление быстро и хорошо. Может работать с обычной камерой тоже, но нужно помнить про п.2 и легкость подделки. С одной стороны всё не так плохо, как кажется. Текущей является вторая версия данной программы. В третью версию делают и добавили такие фичи, такие как - кивнуть для подтверждения или подтвердить намерение кнопкой на клавиатуре, что как раз должно решить п.1 безопасности, самый критичный, как по мне. Добавлен GUI интерфейс для удобства настройки лиц и выбора камеры, если у Вас их много, как у меня. Так же в третью версию добавили разные сценарии, а так же написать свои. Одна маленькая ложка дёгтя тут - её пишут уже 2 года и всё никак не допишут.
Установка
Для начала переходим на ссылку из начала статьи ищем свой дистр и как поставить. Устанавливаем согласно инструкциям. Я не буду описывать тут этот процесс у всех есть возможность нажать перевод, если не можете в английский. Главное это дополнительные ссылки для вашего дистрибутива, как добавить howdy в PAM (центральная система аутентификации). Я лишь покажу на примере fedora.
Переходим по ссылке сразу в COPR репозиторий
# Включаем COPR репозиторий
dnf copr enable principis/howdy
# Устанавиливаем
dnf --refresh install howdy
Далее уже можете попробовать запустить
sudo howdy test
И проверить работу. Если всё хорошо, можно прыгнуть сразу на добавление пользователя.
У меня же технически так вышло 4 камеры подключено 2+2 в 2 устройствах. И HowDy не понимал, какую использовать, если у вас так же не распозналось ничего продолжаем.
Первое смотрим все видео устройства
Если мы хотим понять, что есть что. Можно установить
sudo dnf install v4l-utils
v4l-utils и сделать запрос уже по устройствам
Теперь, в моём случае, нужно понять, какой именно нужен. Можно воспользоваться старым добрым перебором. Можно сделать запрос на понимание, что является чем.
Из диаграмм стало понятно, что есть только video2
и video4
, которые мне нужны в реальности. Дальше уже старый добрый перебор помог понять, что камера с активацией IR это video4
, проверял заменой device_path
в блоке [video]
, который можно редактировать, введя команду sudo howdy config
прописываем полный путь. У меня это /dev/video4
И так камера у нас заработала. Ура.
Добавляем пользователя
Добавление происходит простой командой
sudo howdy add
И далее просто смотреть в камеру.
Очистить все лица можно командой sudo howdy clear
Настройка системы для работы
Если вы хотите, чтобы можно было не вводить пароль для sudo
открываем /etc/pam.d/sudo
и вписываем строчку перед всеми.
auth sufficient pam_python.so /lib64/security/howdy/pam.py
Для входа систему делаем так же, только вставим уже в файлы
Gnome - gdm - /etc/pam.d/gdm-password
sddm - /etc/pam.d/sddm
kde - /etc/pam.d/kde
Немного исправлений если они потребуются для входа в систему именно.
Второе это SELinux победить для Fedora
Создать где угодно howdy.te
файл с содержимым:
module howdy 1.0;
require {
type lib_t;
type xdm_t;
type v4l_device_t;
type sysctl_vm_t;
class chr_file map;
class file { create getattr open read write };
class dir add_name;
}
#============= xdm_t ==============
allow xdm_t lib_t:dir add_name;
allow xdm_t lib_t:file { create write };
allow xdm_t sysctl_vm_t:file { getattr open read };
allow xdm_t v4l_device_t:chr_file map;
А дальше выполнить компиляцию и применение данного правила
checkmodule -M -m -o howdy.mod howdy.te
semodule_package -o howdy.pp -m howdy.mod
semodule -i howdy.pp
Итог
Система работает и работает не плохо, используйте её с умом.
Из интересного, howdy работает на базе библиотеки dlib, больше возможностей данной библиотеки можно увидеть тут
Из интересных проектов которые могут вас заинтересовать