仅允许来自RFID阅读器C ++的输入

时间:2012-10-18 12:37:20

标签: c++ security usb rfid

是的,我还没有对此进行任何编码,但这是我的计划:

  1. 用户扫描带有唯一ID的RFID卡
  2. 读取ID,如键盘输入
  3. ID与DB / flat文件有关,并且检索相关信息
  4. 现在这很容易,我可以做到这一点,我只是想知道如何阻止任何其他输入,例如我的键盘被读取而不是仅仅连接附带RFID阅读器(键盘楔)的USB端口。

    非常感谢任何帮助。

    谢谢,

    尼克

2 个答案:

答案 0 :(得分:4)

您可以使用RawInput区分多个设备的输入。它允许检索设备VendorID和ProductID,这对于diffrenet设备是唯一的,但它对于相同的设备(例如两个相同的键盘)将是相同的,但它也提供设备GUID(在系统中,它对于系统是唯一的,因为我理解或类似这和其他一些数据有助于区分两个相同设备的输入。

您可以检索RFID扫描仪的VID和PID,并将所有输入消息与其进行比较,仅捕获设备中的符号。

另外我认为您的RFID扫描仪可以快速输入数据,因此您可以只测量用于输入符号的整个行程的时间,并在不知道它的VID和PID对的情况下区分RFID扫描仪和键盘。

要删除不需要的输入,您可以使用窗口挂钩。

几乎忘记了,微软为POS设备开发了一些框架,但它适用于.NET,它被称为POS for .NET。也许它会有所帮助,在我的情况下我不能使用它。

P.S。:我现在正在解决这个难题,但是使用条码扫描器(Reading barcode scanner input without knowing VID&PID

答案 1 :(得分:1)

我们工作的公司的RFID阅读器遇到了同样的问题,我们为它设立了一个库来获取rfid卡ID。现在该库成为开源(LGPL许可证),我相信它可以被视为您的问题的答案。 它使用Ivan0x32建议的RawInput,并在需要时通过模拟启动当前活动控制台上的挂钩进程(因为会话0隔离,以防您正在开发Windows服务)。 转到LibLogicalAccess项目并查找“键盘”阅读器。