Дано: невелике Windows .NET додаток з яким працюють до 5 користувачів
Потрібно: для входу в додаток замість традиційного введення пароля використовувати сканер відбитків пальців
трохи теорії
Загалом у використанні сканера відбитків немає нічого складного. Спочатку додаток сканує один або кілька відбитків пальців і виділяє якісь особливості малюнка. Надалі ця інформація дозволяє перевірити, чи та людина намагається сканувати палець, який надав зразки відбитків або хтось інший. Процес отримання зразків відбитків іменується Enroll. Процес подальшої перевірки відбитків Verify. Процедура пошуку користувача по його слідах - Identification. Так як процес перевірки користувача по суті не може дати однозначної відповіді чи дійсно це той самий користувач, який нам потрібен існує якась величина, кількість балів, яку показує наскільки ймовірна помилка при ідентифікації користувача (MatchingThreshold, score).
Переходимо до практики
Виробники сканерів як правило надають SDK, що дозволяють працювати з їх пристроями. Але на жаль, стоять ці SDK чималих грошей (
$ 1000). Що цікаво, для роботи з Linux часто є і безкоштовні версії SDK на відміну від бібліотек під Windows. Є й сторонні рішення, що дозволяють використовувати безліч різних пристроїв за допомогою одного і того ж SDK, але для кожного конкретного сканера потрібно дивитися, чи підтримується він. Ціна сторонніх рішень порівнянна з ціною SDK від виробників пристроїв. Проте, існує безкоштовне рішення, яке працює в Windows від neurotechnology.com. А саме Free Fingerprint Verification SDK. У цій безкоштовної бібліотеці не обходиться і без обмежень. Існує тільки версія, що працює з 32 розрядними операційними системами від Microsoft. Дані про користувачів зберігаються тільки в спеціальному форматі, наданому виробником. Зберегти можна дані не більше ніж по 10 відбитками. Чи не підтримується Identification. Як бачимо, обмеження досить жорсткі, але за умовами завдання нам цього достатньо (будемо вважати, що у нас 32 розрядна Windows). У повній версії всі ці обмеження зняті - працює вона в будь-який ОС, зберігає дані про відбитки в будь-якій базі даних. Але і ціна відповідно становитиме приблизно $ 1000 ...
Досить слів, давайте вже почнемо
Почнемо ми трохи пізніше, для початку потрібно скачати з сайту Neurotechnology дистрибутив FFV SDK за цим посиланням. Розмір файлу немаленький, 140 мб. Але до складу крім власне файлів SDK (для декількох популярних мов програмування, включаючи .NET) входить і набір драйверів для великої кількості сканерів різних виробників. Я використовував в роботі сканер UPEK Eikon. Часто сканер відбитків вбудований в корпус ноутбука, такий сканер також цілком підходить для використання. Перед тим, як почати експериментувати з SDK переконайтеся, що на вашому комп'ютері не запущені ніякі додатки, що працюють зі сканером. Наприклад в моєму випадку додаток Protector Suite, яке надається виробником обладнання не давало тестовому додатку працювати нормально. При спробі доступу до сканера виникав конфлікт і обидва додатки закривалися з помилкою. Для перевірки того, що ваш сканер насправді підтримується і для підтвердження працездатності SDK запустіть додається приклад з папки FreeFingerprintVerificationSDK \ bin \ Win32_x86 \ CSharpSample.exe. Виберіть у вікні зі списком підтримуваного устаткування ваш сканер.
Зверніть увагу на поля введення внизу форми. Перше поле (fingerprint database) служить для вказівки імені файлу, в якому буде зберігатися інформація про сканованих відбитках.
Друге поле (password) дозволяє закрити зберігаються дані паролем (кого це зупиняло 🙂)
Третє поле (user database) містить назву файлу, в якому зберігаються деякі додаткові дані про користувача, наприклад його ім'я і т.п.
Після вибору сканера ми переходимо в основне вікно програми.
Як можна помітити додаток підтримує основні операції, представлені в SDK: Enroll, Verify, Delete. У правій частині екрана представлений список користувачів, які зареєстровані в програмі.Крім того, можна очистити базу даних повністю (clear database) або задати параметри розпізнавання (кількість балів, яку повинен набрати відбиток щоб визнати відповідність його параметрів певному користувачеві)
А ось так виглядає вікно програми після сканування відбитку
Необхідний набір файлів в .NET додатку
Для нормальної роботи програми необхідно скопіювати в папку з виконуваним додатком два файли: NffvServer.exe і Nffv.dll. Крім того потрібно додати в папку fpsmm (щодо виконуваного файлу) кілька файлів, специфічних для вашого обладнання. Список цих файлів можна знайти в документації, що поставляється в складі SDK або використовувати утиліту з папки redistributable, яка скопіює всі необхідні файли в вказану вами папку.
Приклад: FFVSDKRedistributable.exe / DOTNET / Eikon / D = c: \ temp
Ключові методи SDK
Даний SDK містить всього кілька методів, які ми можемо використовувати для роботи з даними користувачів.
Перший метод здійснює ініціалізацію сканера
Параметри виклику: ім'я файлу з даними користувача, пароль на файл, назва плагіна для використовуваного сканера (повний список плагінів можна отримати за допомогою виклику
Метод для виклику Enroll
В змінної stat буде зберігатися результат операції. Якщо stat == NffvStatus.TemplateCreated то все пройшло відмінно і в змінної user зберігаються дані користувача. Найголовніше поле user.ID. Його ми можемо запам'ятати і використовувати де то в своїй базі даних.
Для подальшої валідації користувача потрібно викликати такі методи:
Якщо stat == NffvStatus.TemplateCreated сканування відбитків і перевірка користувача пройшла нормально. поле score містить кількість балів, яку набрав користувач при перевірці. Нульове значення розглядається як невдала перевірка. Значення більше нуля умовно означають що перевірка пройдена. Поріг, при якому перевірку потрібно вважати успішною встановлюєте ви самі. Мій досвід показав, що значення score> 35-40 вже можна вважати достатніми. Виробники рекомендують використовувати значення від 48 і більше
Для видалення користувача з бази потрібно видалити його з колекції користувачів
(Не дуже зручний підхід, але нічого іншого не пропонується)
Повне очищення бази даних відповідно виконується так:
Щоб зупинити операції зі сканером можна використовувати метод _engine.Cancel (); виклик методу негайно припиняє операцію і продовжує виконання потоку роботи зі сканером.
Хочу зауважити, що всі методи, описані вище, є синхронними, тому потрібно використовувати окремий потік для роботи з ними щоб не блокувати роботу основного потоку. Вихідні тексти прикладу наведені в SDK, там же можна бачити реалізацію роботи в окремому потоці.
Ще одне зауваження - коли инициализируется SDK додаток відразу ж переводить сканер в монопольний режим. Це наочно видно по індикатору на корпусі сканера - якщо при старті додатка індикатор загорівся - все відмінно, всі потрібні бібліотеки завантажені, пристрій знайдено і готове до роботи.
висновок
Навігація по публікаціям
Дуже цікаво, буду пробувати зі своїм ноутбуком. Хотілося б ще вихідні вашого прикладу.
Вихідні тексти є в SDK, я думаю немає сенсу їх викладати ... або є? Без SDK вони не приносять користі, як мені здається.
Вперто не бачить мій сканер. Винда каже що це AuthenTec Inc. AES2501A.
Шкода, а хотілося побавитися.
Взагалі, AES2501A в списку підтримуваних сканерів немає ... але я б спробував
1. Перевірити не блокує чи яке-небудь додаток сканер (скажімо рідне додаток від Authen Tec Inc.), можливо його деінсталювати.
2. Поставити драйвер зі складу SDK і перевірити з ним.
3. Уважніше до галкам вибору завантаження модуля - деякі конфліктують між собою
Дякуємо! Нещодавно теж назріла необхідність (а точніше, я зрозумів що якщо це буде, то не буде надмірністю) в такий ось аутентифікації.
Залишилося струму купити сканер і погратися.
Інформація застаріла: зараз є VeriFinger 7.1 Standard SDK це програма сканера відбитків пальців універсальна - підтримує дуже багато залізяк і х64 розряду Win 8.1, Win 10.