【问题标题】:NFC tag user memory binary [duplicate]NFC标签用户内存二进制[重复]
【发布时间】:2017-11-14 23:03:38
【问题描述】:

我正在尝试从一些 NTAG213 和 NTAG216 NFC 标签中读取 NDEF 记录,但我似乎在用户内存中获得了一些我没想到的额外字节。

基于spec,用户内存应该从块 4 开始,但是当我从 NTAG213 标签读取时,我看到 NDEF 记录开始前有 7 个额外字节,而 NTAG216 标签有 2 个额外字节。

下面是 NTAG213 内存的例子:

01| 04 ae f4 d6 
02| 0a d7 49 80 
03| 14 48 00 00 
04| e1 10 6d 00
05| 03 db 91 01 <-- NDEF starts at 91?
06| 1a 54 02 65 
07| 6e 43 4f 43 
08| 4f 4e 55 54 
09| 20 42 4f 44 
10| 59 20 4d 49
11| ...

NDEF 记录似乎以块 05 中的标头字节 (91) 开始,而不是从块 04 开始。

有谁知道额外的字节是做什么用的,或者我如何知道仅读取 NDEF 数据的偏移量应该是多少?

这些字节看起来有点像“交付时的内存内容”。但我不确定目的是什么。

【问题讨论】:

    标签: nfc rfid ndef


    【解决方案1】:

    2 类标签上的 NDEF 数据存储由 NFC 论坛 2 类标签规范定义。该规范定义了用户内存的前四个字节(第四页)描述了标签的 NDEF 功能,随后的字节包含一系列类型-长度-值 (TLV) 构造,其中之一 (T=3)是包含实际 NDEF 数据的 NDEF 消息 TLV。其他 TLV 描述了包含标记特定数据(如锁定字节)的内存位置,并且在读取或写入 NDEF 数据时必须跳过。

    您的示例内容是 NTAG216(不是 NTAG213)。

    第四页的内容是一个魔术字节(0xE1),表示NDEF格式,后面是NDEF映射版本(0x10 => Version 1.0),后面是8的倍数的原始标签容量(0x6D * 8 = = 872 字节用户数据),后跟读/写权限(0x00 => 可读可写,无限制)。

    第五页以 NDEF TLV 类型(0x03 => NDEF 消息)开头,然后是 TLV 长度(0xDB == 219 字节),它给出了 TLV 值字段大小。以下字节是实际的 NDEF 消息数据,但请注意,对于某些标签,这可能不是连续的内存(其他 TLV 可能指示在读取或写入时必须跳过的内存字节)。

    对于所有的花里胡哨,您可以研究 ndef readndef write 或从 NFC Forum specifications page 获取类型 2 标签规范的副本。

    【讨论】:

    • 谢谢斯蒂芬。 TLV 是拼图中缺失的部分。正如您所指出的,我在示例(NTAG216)中放置了错误标签中的内容。我还从 1 开始对行进行编号,而不是 0。我拥有的 NTAG213 实际上在用户内存空间中有两个 TLV 块,这也让我感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多