赞
踩
这里描述NTAG213/215/216只是容量不同,其它功能一样。每个page地址4 bytes。
产品序列号UID(serial number)有7 bytes。上图中有9 bytes的serial number,其中有2 bytes是check byte。
地址0h(page 0): SN0 SN1 SN2 CB0
地址1h(page 1): SN3 SN4 SN5 SN6
地址2h(page 2): CB1 RSV L0 L1
其中CB0为CT SN0 SN1 SN2的校验,CB0为SN3 SN4 SN5 SN6的校验;RSV为内部预留字节;L0和L1为用户数据区page4h-Fh 的静态锁,用来设置这些用户数据区内容只读操作,详情见“2.3 静态锁(操作用户数据只读)”。
2.2 卡片容量信息
地址3(page 3)存了卡容量信息,在生产时固化,符合 NFC Forum Type 2 Tag 规范。其中 byte2 表示芯片型号和容量:
这 4 个字节都是 OTP 的,且按位进行或操作,用户可以改写。只能把某位置 1,不能置0。出厂时都有预置的值,不是全为0x00。(注意不要随便改写,否则无法识别,需要写保护,在静态锁里说明block byte 0的第3位)
地址2h(page 2): CB1 RSV L0 L1
L0 L1该部分lock byte可以把一些用户数据page设置成只读,默认值为00 00(注意:锁定只读后是不可逆的,就是不可修改回可写模式,注意使用)
其中L0和L1为用户数据区page4-15 的静态锁,用来设置这些用户数据区内容只读操作。
L0的第0位和第3为用来设置地址3h(page 3)容量信息内容为只读。
L是locking,负责单个 page 的锁定状态,位置1后,对应的page为只读,且是不可逆的。
BL是block-locking,锁定多个page,位置1后,对应的 page 为只读,且是不可逆的。
这两个lock byte的写操作是 tearing-proof 的。tearing现象,卡离开读卡器时,供电突然消失。对 Flash 的写操作会中断,造成 data-tearing现象。tearing-proof就是会保证对卡内的这两个字节的写操作是独立完整的
地址10h: L2 L3 L4 RSV
L2 L3 L4为dynamic lock bytes,默认值00 00 00h,RSV为保留字节,控制序号用户数据区page10h-27h 的只读。
2.4 用户数据区
page 4h-27h 这一片连续的 page 可供用户使用。出厂时, 有些page会有预置的值。
最后4个page用于一些功能的配置。(本人未涉及使用,无法详讲,只给出对应的功能解释)
MIRROR:功能可以把卡的 UID 和 NFC Counter 以 ASCII 的格式映射到某个 page 开始的区域。
MIRROR_CONF:
- 00: 禁止 MIRROR 功能
- 01: 映射 UID
- 10: 映射 NFC Counter
- 11: 映射 UID 和 NFC Counter
MIRROR_BYTE:指定从 page 内的第几个 byte 开始
STRG_MOD_EN:调制模式是否开启
MIRROR_PAGE:指定映射到哪个 page
AUTH0:表示需要密码校验访问的起始页。初始值为 FF。比如,AUTH0 为 5,则表示从 page5 开始的页访问都需要校验密码。
ACCESS:
PROT:
- 0:写保护(不允许写)
- 1:读保护+写保护(不允许读和写)
CFGLCK:控制 CFG0, CFG1 这两页是否可写
- 0:配置区可写
- 1:配置区不可写(PWD 和 PACK 除外)
NFC_CNT_EN:开启此功能之后,每次卡 power on reset 之后的第一次读操作,24 bits 的计数器会自增。计数器增至 FF FF FF 之后就不再变化。 这个数字足够大了。这个计数器就给了每张卡一个独立变化的变量。
- 0: 禁止 NFC 计数器功能
- 1: 开启 NFC 计数器功能
NFC_CNT_PWD_PROT:
- 0: 读 NFC Counter 不需要验证
- 1: 读 NFC Counter 之前需要密码校验通过
AUTHLIM:密码尝试次数。当密码连续错误超过这个值时,就再也无法校验成功了。
而在到达这个次数之前如果校验对了密码,则它的计数会清零
PWD为密码
PACK 校验密码命令的响应内容
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。