微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是什么让 RFID 赋予卡片“访问权限”?

如何解决是什么让 RFID 赋予卡片“访问权限”?

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

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

我仍然没有得到的是:

  • 谁设置身份验证密钥?
  • 这些密钥对每张卡都是唯一的吗?
  • 这些密钥是否存储在阅读器中?
  • 我可以从卡上读取密钥吗?如果是,如何?
  • 这些钥匙是否是授予访问权限的钥匙,比如说,一扇与读卡器相连的门?如果没有,是什么让卡可以访问或不能访问?
  • 这些密钥是唯一的身份验证形式吗?
  • UID 是否仅用于识别?
  • 如果第一个扇区中的所有信息都可用,为什么会有 16 个扇区?能够为每个扇区设置不同的密钥的目的是什么?

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

我在 mifare Authentication 上找到了 these docs,他们提到了针对该特定阅读器的 Load Authentication KeysAuthentication 命令。我使用的阅读器没有这样的命令。看了这个帖子 Mifare card security 也让我意识到我的读卡器缺少一些命令,或者它们的文档很差。

我也读过 MIFARE docs from NXP,但里面没有我真正需要的东西。

解决方法

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

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

总体而言,首先您创建一个身份验证/标识字符串并将其存储在任何扇区的数据块中(假设扇区 4)。然后您需要更改该扇区的KEY A/B,以便除了您自己的访问控制设备之外没有人可以从该扇区读取数据。现在只有知道您的特定密钥的读卡器才能读取扇区 4 上的数据,从而防止卡的克隆。您的读卡器将从扇区 4 读取数据并使用您存储的字符串来检查该卡是否可以访问。 希望我已经清除了您的疑问。 Mifare classic 1k datasheet 有很多关于这方面的信息,请查看第 8.7 节内存访问。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?