在线商店

MIFARE Classic和MIFARE Plus IC内存NDEF数据映射方法

打印友好,PDF和电子邮件
[printfriendly电流= '是的']
打印友好,PDF和电子邮件

MIFARE应用目录

MIFARE Classic和MIFARE Plus IC的内存数据映射NDEF方法采用了MIFARE应用程序目录结构(MAD)。

MIFARE应用程序目录(MAD)标识存储在每个内存扇区中的信息属于哪个应用程序。

已经指定了两个MIFARE应用程序目录:

      1. MIFARE应用程序目录1 (MAD1): MAD1可用于任何MIFARE Classic兼容产品。MAD1位于MAD扇区(扇区00h),对于内存大于1Kbytes的产品,MAD1只能使用和寻址1Kbytes的内存。因此,剩余的内存不用于NDEF存储,保持空闲状态。
      2. MIFARE应用程序目录2 (MAD2): MAD1可以在内存大于1kb的任何MIFARE Classic兼容产品中使用。MAD2不适用于内存小于或等于1Kbytes的产品。MAD2位于MAD扇区(第00h和第10h扇区)

对于每个应用程序,MAD关联一个唯一的应用程序标识符(AID)。应用程序标识符(AIDs)存储在MAD扇区00h中。

AID有两个字节长,分为两个字段,每个字段一个字节:

  1. 函数集群代码(1字节),用于标识应用程序所属的集群
  2. 用于标识集群内应用程序的应用程序代码(1字节)。有关MAD1和MAD2的更多信息。

MAD扇区的通用字节(GPB)应设置一个等于1b的DA位(DA位是GPB的通用可用位)。

所有当前未使用的扇区都应该使用标记颁发者定义的秘密密钥进行写保护,以防止访问条件和密钥的意外重新定义。建议对所有空闲扇区使用不同的键。这使得未来可以向新的服务提供商释放部分扇区,而不需要释放所有的空闲扇区。

MAD扇区访问

存储MAD1和MAD2的内存扇区(参见[MAD]),使用密钥A和密钥b保护。根据[MAD],内存扇区是:

        • MAD1: MAD扇区为00h(0扇区)
        • MAD2:分别为00h和10h(扇区0和16)。

任何人都可以阅读疯狂扇区。通过使用中描述的公钥a来实现表格1(参见[MAD])。

表1。Public Key MAD扇区的A值(s)

字节0 1字节 2字节 3字节 4字节 5字节
A0h A1h A2h A3h A4h A5h

MAD扇区的访问位被设置为:

        • 如在表格2如果MAD扇区已授予读写访问权限,或者
        • 如在表格3.如果MAD扇区被授予只读访问权限(参见[MF1K, MF4K, MFPLUS])。

在这种情况下,授予读写访问权的术语意味着对于先前已使用密钥B进行身份验证的MAD扇区,可以读写除扇区尾部块之外的所有扇区块(参见表格2有关详情)。

相反,授予的术语只读访问权限意味着对于先前已使用公钥A进行身份验证的MAD扇区表格1或密钥B,可以只读取除扇区预告块之外的所有扇区块(参见表5有关详情)。

使用键A,总是只能读取MAD扇区的块。扇区拖车在授予读/写访问或只读访问时具有特定的访问配置(请参阅表格2而且表格3.).

MAD扇区应该通过秘密密钥B(例如,由标记颁发者定义)或使用访问位将MIFARE Classic和MIFARE Plus标记设置为只读来进行写保护。

表2。在授予读和写访问权的情况下,为MAD扇区设置访问位

MAD1或MAD2的0扇区和MAD2的16扇区的访问位设置
访问位 讲话
C10C20C30 100 b Block 0用键A或键B读取,用键B写入
C11C21C31 100 b 块1用键A或键B读取,用键B写入
C12C22C32 100 b 第2块用键A或键B读取,用键B写入
C13.C23.C33. 011 b 扇形拖车块:

  • A键是用B键写的,从来没有读过,
  • 访问位用键A或键B读取,用键B写入,
  • B键是用B键写的,从来不读。
我。推荐价值访问C10C20C30部门0(制造商块)。

表3。为授予只读访问权限的MAD扇区设置访问位

MAD1或MAD2的0扇区和MAD2的16扇区的访问位设置
访问位 讲话
C10C20C30 010 b 用键A或键B读取块0
C11C21C31 010 b 用键A或键B读取块1
C12C22C32 010 b 用键A或键B读取块2
C13.C23.C33. 110 b 扇形拖车块:

  • A键从来没有写过,也没有读过,
  • 访问位是用键A或键B读取的,从不写入,
  • 键B从来没有写过和读过。
我推荐。价值访问C10C20C30部门0(制造商块)。

电磁阀块

TLV块由1 ~ 3个字段组成:

T(标签字段,或T字段)SHALL标识TLV块的类型(参见表9),并且应由编码从00h到FFh的数字的单字节组成。标记值01h, 02h, 04h到FCh和FFh保留以供将来使用。

l(长度字段,或L字段)必须提供值字段的字节大小。它有两种由一个或三个字节组成的不同格式。读取器设备应该理解所有两长字段格式。图5显示两个不同长度的字段结构。然而,根据标签字段的值,长度字段可能不存在。

  • 单字节格式:单字节格式必须将值字段的长度编码在00h到FEh字节之间。如果值在00h和FEh之间,则该字节将被解释为基数。如果它包含FFh,值SHALL被解释为一个标志,指定长度字段由一个以上的字节组成。
  • 三连续字节格式:该格式编码值字段的长度在00FFh和FFFEh字节之间。第一个字节被认为是一个等于FFh的标志,表明两个字节的长度应该被解释为一个单词。如果值在00FFh和FFFEh之间,则此词应被解释为基数。FFFFh值保留给将来使用(RFU)。

V(value字段或V字段)如果length字段等于00h或没有length字段,则不应该有value字段,即TLV块为空。如果存在length字段,并且表示值字段的长度N大于零(N>0),则值字段必须由N个连续的字节组成。

表4列出了本文档中指定的TLV块。

表4。定义电磁阀

TLV块名称 标签字段值 简短的描述
空阀 00 h 它可能用于内存区域的填充,阅读器设备将忽略这一点
消息TLV 03 h 它包含NDEF消息
专用电磁阀 外籍家庭 标签专有信息
终结者电磁阀 FEh 数据区的最后一个TLV块

读写设备应按照以下规则在数据区域内按特定顺序写入TLV块:

  • TLV块应该从NFC扇区(包含NDEF数据的扇区)块0的字节0开始按最小地址顺序写入。
  • TLB块可以跨两个或多个NFC扇区存储。
  • 如果出现,终止TLV是MIFARE Classic和MIFARE Plus标签上的最后一个TLV块。

NULL TLV和Terminator TLV是仅有的1字节长的TLV块(例如,仅由Tag字段组成,见下文)。

读取器设备应该忽略并跳过那些使用保留标签字段值的TLV块(见上文)。为了跳过带有保留标签字段值的TLV块,读取器设备必须读取length字段以了解值字段的长度。

仅由标签字段组成的TLV块的未来定义与本应用程序注释不向后兼容。

消息TLV

在MIFARE Classic和MIFARE Plus标签中至少要有一个NDEF Message TLV。NDEF消息TLV将NDEF消息存储在Value字段中。阅读器设备应能够读取并处理由NDEF检测程序(也称为强制NDEF Message TLV或第一NDEF Message TLV)发现的NDEF Message TLV;无论如何,进一步的NDEF消息TLV块可能会出现。NDEF Message TLV的3个TLV字段的编码如下:

T应等于03h(见表4).

l应该等于存储的NDEF消息的字节大小。

V应该存储NDEF消息。

一个空的NDEF Message TLV应该被定义为L字段等于00h且没有V字段(即V字段中没有NDEF Message,参见[NDEF])的NDEF Message TLV。

一个非空的NDEF消息TLV可以包含空的或非空的NDEF消息。

专用电磁阀

私有TLV包含私有信息。MIFARE Classic和MIFARE Plus标签应包含零个、一个或多个专有TLV。阅读器设备可能会忽略此TLV块中包含的数据。私有TLV的3个TLV字段的编码如下:

T应等于FDh(见表4).

l应该等于Vale字段中私有数据的字节大小。

V应包含任何专有数据。

空阀

NULL TLV可以用于填充数据区域。MIFARE Classic和MIFARE Plus标签可以包含零、一个或多个NULL TLV。阅读器设备将忽略此TLV块。NULL TLV应该由一个1字节的标签字段组成。NULL TLV的标签字段编码如下所示:

T应等于00h(见表4).

l不得出席。

V不得出席。

终结者电磁阀

终止器TLV可以出现在MIFARE Classic和MIFARE Plus标签中,读取器设备应该能够读取/处理它。终结者TLV是数据内存区域中的最后一个TLV块。终止符TLV应该由一个1字节的标记字段组成。终结者TLV的标签字段编码如下:

T应等于FEh(见表4).

l不得出席。

V不得出席。

Baidu
map