首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NFC核心在NTAG216 13上对NFC NTAG216标记进行密码保护

如何使用NFC核心在NTAG216 13上对NFC NTAG216标记进行密码保护
EN

Stack Overflow用户
提问于 2020-08-01 14:59:01
回答 2查看 3.1K关注 0票数 0

我试图使用NTAG216 13来保护NFC标签。我需要NFC标签可以被任何人读懂,但是我想把写入限制在NFC标签上,除非你有预设的密码。根据标签的规格,这应该是可能的,但用于编写NDEF标记的API似乎非常有限。我发现NDEF标记的API主要局限于编写完整的消息有效负载。我还发现,根据Apple,NFCISO15693Tag API确实允许一些低级操作。

有人能告诉我如何使用NDEF216 13中的NFC来密码保护iOS标记吗?看到NTAG216规范表,我们应该使用PWD和PACK参数,但是我不知道如何在只有编写完整消息有效负载选项的情况下将这些写到标签上?

我想要的行为:

  1. 用户接收空的NFC标记。
  2. 用户使用ios应用程序将数据写入NFC标记。
  3. 用户可以选择密码来保护标签不被覆盖。

然后过一段时间,用户将需要自己更新标记,所以我想要这种行为。

  1. 用户输入密码以解锁NFC标记
  2. 用户通过点击芯片上的电话解锁芯片。
  3. 用户现在将新数据写入芯片。
  4. 用户现在再次使用相同或新的无密码选择锁定芯片。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-05 05:38:15

您可以在iOS中使用以下方法向NTAG发送任何命令:

代码语言:javascript
复制
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标记中:

  1. 密码( FF ):写cmd: CMD :CMD\CMD/地址/ -> A2 E5 E5 FF
  2. 邮包(01 02):写cmd: CMD \x\x{e76f}地址(地址) -> A2 E6 01 02 RFU RFU

注意:代替RFU,您只需编写00h,也可以通过以下步骤保留值:

  • 读取页E6h

激活保护

一旦密码和包值配置到NFC标记上,下一步将是通过定义读写访问必须需要身份验证的页面来激活保护。为了做到这一点:

  • 读取页面E3h
  • 在索引3处覆盖AUTH0值,第一个用户页编号为04h,这意味着从04h开始的任何页面都需要身份验证才能进行读取(默认情况下)访问。

访问受保护的读取页

  1. 用户进入PWD & PACK以解锁标签
  2. 使用输入的数据验证标记,使用以下命令:
    • 身份验证:命令(1 1Bh)\ PWD -> 1B FF FF
    • 该标记将使用PACK值进行响应,可以通过将其与您所拥有的用于额外安全性的PACK值进行匹配来验证该值。

  3. 现在标记处于身份验证状态,可以将数据写入标记。**注:一旦标签离开字段,身份验证状态就会被重置。因此,您必须在同一会话中验证和写入数据。
  4. 除非需要更改PWD/PACK,否则不需要进一步的操作,因为每次会话完成时,即走出字段时,标记都返回到受保护状态。

您可以参考NTAG 213/215/216数据表

票数 2
EN

Stack Overflow用户

发布于 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设置密码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63206619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档