首页 > 解决方案 > 是什么让 RFID 向卡授予“访问权限”?

问题描述

我有兴趣将RFID1356MIFAREESP32-EVB集成,并将其用作 UART 上的读卡器。基本上读取 UID,将命令写入 UART 串​​行并根据读取器输出的内容授予或不授予访问权限。最初我尝试使用这个库:https ://github.com/elechouse/PN532但我发现 RFID1356MIFARE 固件与它不兼容。

我想了解 RFID 阅读器如何授予对卡的访问权限,例如打开一扇门。感谢这个线程:Mifare 1K authentication keys我开始了解这两个身份验证密钥是如何工作的。

我仍然没有得到的是:

我遇到的最重要的问题是:是什么让读卡器向卡授予“访问权限”?

我在 Mifare Authentication 上找到了这些文档,它们提到了针对特定读者的命令Load Authentication KeysAuthentication我使用的阅读器没有这样的命令。查看这个线程Mifare card security也让我意识到我的读卡器缺少一些命令,或者它们的文档记录非常差。

我还阅读了NXP 的 MIFARE 文档,但其中没有我真正需要的内容。

标签: rfidesp32mifarepn532

解决方案


好的,这是您相应查询的答案:

  1. KEY A 和 KEY B 由卡制造商设置为默认值(0xFF...)。这可以由用户稍后更改。
  2. 默认情况下,它们对于每张卡都是相同的。
  3. 两个密钥都存储在 Card 中。读卡器还需要知道这些密钥才能读取您的卡片。
  4. 不,除非您至少有一把钥匙,否则您无法从卡中读取钥匙。即使您可以访问任何密钥,也可以同时禁用对密钥的读取。
  5. 不,这些钥匙不授予对门的访问权限。它们用于授予对相应扇区的读取器的读/写访问权限。
  6. 这些密钥是身份验证的一种形式,通常用于阅读器。
  7. UID 对于大多数身份验证情况几乎没有用,因为任何人都可以读取和更改它们。
  8. 每个扇区有 3 个数据块和最后一个扇区的一对密钥。需要这些密钥来读取前三个扇区块上的数据。

所以总的来说,首先您创建一个身份验证/标识字符串并将其存储在任何扇区的数据块中(比如说扇区 4)。然后你需要改变那个扇区的KEY A/B,这样除了你自己的门禁设备外,没有人可以从那个扇区读取数据。现在只有知道您的特定密钥的读卡器才能读取扇区 4 上的数据,从而防止卡克隆。您的阅读器将从第 4 扇区读取数据并使用您存储的字符串来检查该卡是否可以访问。希望我已经清除了您的查询。Mifare 经典 1k数据表有大量关于此的信息,请查看第 8.7 节内存访问。


推荐阅读