我试图使用NTAG216 13来保护NFC标签。我需要NFC标签可以被任何人读懂,但是我想把写入限制在NFC标签上,除非你有预设的密码。根据标签的规格,这应该是可能的,但用于编写NDEF标记的API似乎非常有限。我发现NDEF标记的API主要局限于编写完整的消息有效负载。我还发现,根据Apple,NFCISO15693Tag API确实允许一些低级操作。
有人能告诉我如何使用NDEF216 13中的NFC来密码保护iOS标记吗?看到NTAG216规范表,我们应该使用PWD和PACK参数,但是我不知道如何在只有编写完整消息有效负载选项的情况下将这些写到标签上?
我想要的行为:
然后过一段时间,用户将需要自己更新标记,所以我想要这种行为。
任何帮助都是非常感谢的。
发布于 2020-08-05 05:38:15
您可以在iOS中使用以下方法向NTAG发送任何命令:
func sendCommand(data: CmdData, completionHandler: @escaping(Data?, Error?) -> Void) {
tag?.sendMiFareCommand(commandPacket: data, completionHandler: { (data, error) in
completionHandler(data, error)
})
}其中,参数数据是命令APDU,tag对象的类型为NFCMiFareTag。
命令APDU将密码和包写到NFC标记中:
注意:代替RFU,您只需编写00h,也可以通过以下步骤保留值:
激活保护
一旦密码和包值配置到NFC标记上,下一步将是通过定义读写访问必须需要身份验证的页面来激活保护。为了做到这一点:
访问受保护的读取页
您可以参考NTAG 213/215/216数据表
发布于 2020-08-01 16:48:11
NTAG 216是Mifare超光速标签
使用https://developer.apple.com/documentation/corenfc/nfcmifaretag/3043838-sendmifarecommand
如果您查看数据表216.pdf
第8.8.1节
32位PWD和16位包需要编程到配置页面中,参见8.5.7节。
https://stackoverflow.com/a/44546511/2373819详细介绍了如何在相同类型的标记上设置和使用密码,而这对于Android来说是相同的概念。
使用普通的超低写入命令A2h将PWD写入到E5h页面(页地址为NTAG 216),并将包写入E6h的0&1字节。
再次使用普通的对页E3h的字节3的超低写入命令来配置受密码保护的第一页(您可能希望4h作为第一页)。
再次使用普通的超低写入命令在页E4h中写入正确的位,以启用正确级别的保护和其他参数(您可能希望先阅读此页以获得当前值)
Apples网站上的Doc似乎错了,参见https://stackoverflow.com/a/60463724/2373819中的一个例子,用于发送到iOS上的Mifare超光速标签。
只是我还没有试着用iOS设置密码。
https://stackoverflow.com/questions/63206619
复制相似问题