безопасность — разрешить ввод только из RFID-считывателя. Переполнение стека

Да, мне еще не нужно ничего кодировать, но вот мой план:

  1. Пользователь сканирует RFID-карту с уникальным ID на ней
  2. Идентификатор читается как ввод с клавиатуры
  3. Идентификатор относится к БД / плоскому файлу и извлекает относительную информацию

Теперь это довольно просто, и я могу это сделать, мне просто интересно, как я могу предотвратить любой другой ввод, например, с моей клавиатуры, а не только с USB-порта с подключенным считывателем RFID (клавиатурный клин).

Любая помощь будет принята с благодарностью.

Спасибо,

Ник

2

Решение

Ты можешь использовать Сырой ввод чтобы отличить ввод от нескольких устройств. Он позволяет получить VendorID и ProductID устройства, которые являются уникальными для устройств diffrenet, но они будут одинаковыми для тех же устройств (например, двух идентичных клавиатур), хотя также он предоставляет GUID устройства (в системе, он уникален для системы, как я понимаю, или что-то подобное это) и некоторые другие данные, которые помогут отличить ввод даже от двух идентичных устройств.

Вы можете получить VID&PID вашего RFID-сканера и сравните все входящие сообщения с ним, только ловя символы с вашего устройства.

Кроме того, я полагаю, что ваш RFID-сканер вводит данные очень быстро, так что вы можете просто измерить время, которое использовалось для ввода всего набора символов, и отличить RFID-сканер от клавиатуры, не зная, что это VID&ПИД-пара.

Для удаления нежелательного ввода вы можете использовать оконные хуки.

Почти забыл, Microsoft разработал некоторые рамки для POS-устройств, но это для .NET, он называется POS для .NET. Может быть, это поможет, в моем случае я не могу это использовать.

П.С .: Я сейчас решаю эту головоломку самостоятельно, но с помощью сканера штрих-кода (Чтение ввода сканера штрих-кода без знания VID&PID)

4

Другие решения

У нас была такая же проблема со считывателями RFID в компании, где я работаю, и мы сделали библиотеку, чтобы получить идентификатор карты RFID. Теперь, когда библиотека стала открытым исходным кодом (лицензия LGPL), я считаю, что это можно рассматривать как ответ на вашу проблему.
Он использует RawInput, как это было предложено Ivan0x32, и запускает подключаемый процесс на текущей активной консоли с олицетворением, если требуется (из-за изоляции сеанса 0, в случае, если вы разрабатываете службу Windows).
Идти к LibLogicalAccess Проект и искать «Клавиатура» читателей.

1

По вопросам рекламы [email protected]