在线商店

MIFARE经典和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经典兼容产品中使用。MAD1位于MAD扇区(00h扇区),如果在内存大于1k字节的产品上使用MAD1,则MAD1只能使用1k字节的内存并寻址。因此,剩余的内存不会用于NDEF存储,而是保持空闲状态。
      2. MIFARE应用目录2 (MAD2): MAD1可用于任何内存大于1kb的MIFARE Classic兼容产品。MAD2不适用于内存小于等于1kb的产品。MAD2位于MAD扇区(扇区00h和10h)

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

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

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

MAD扇区的GPB (General Purpose Byte)应该设置一个等于1b的DA位(DA位是GPB的MAD可用位)。

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

行业准入#

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

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

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

表1。公开密钥MAD扇区的值

字节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 用键A或键B读取Block 0,用键B写入Block 0
C11C21C31 100 b Block 1用A键或B键读取,用B键写入
C12C22C32 100 b Block 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读取Block 0
C11C21C31 010 b 用键A或键B读取Block 1
C12C22C32 010 b 用键A或键B读取Block 2
C13.C23.C33. 110 b 扇形拖车块:

  • A键永远不会写也不会读,
  • 访问位是用A键或B键读取的,永远不会写入,
  • B键既不写也不读。
我推荐。价值访问C10C20C30部门0(制造商块)。

电磁阀块#

一个TLV块由一到三个字段组成:

T(tag field,或T field)标识TLV块的类型表9),由一个字节编码一个从00h到FFh的数字组成。标签值01h, 02h, 04h到FCh和FFh保留以后使用。

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

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

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

表4列出本文档指定的TLV块,这些块将在以下部分中描述。

表4。定义电磁阀

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

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

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

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

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

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

NDEF消息TLV#

MIFARE Classic和MIFARE Plus标签中至少有一个NDEF Message TLV。NDEF Message TLV将NDEF消息存储在Value字段中。阅读器设备应能够读取和处理NDEF检测程序发现的NDEF Message TLV(也称为强制性NDEF Message TLV或第一个NDEF Message TLV);无论如何,可能存在更多的NDEF Message 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。Reader设备可能会忽略这个TLV块中包含的数据。专有TLV的3个TLV字段编码如下:

T应等于外佣(见表4).

l应等于valefield中专有数据的字节大小。

V应包含任何专有数据。

空阀#

NULL TLV可以用来填充数据区。一个MIFARE Classic和MIFARE Plus标签可以包含0个、一个或多个NULL TLV。阅读器应该忽略这个TLV块。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