zoukankan      html  css  js  c++  java
  • NTAG 标签

    NTAG 标签

    这里描述针对 NTAG213。而 NTAG215/216只是容量不同,其它功能都一样。

    UID

    UID 有 7 bytes。上图中有 9 bytes 的 serial number,其中有 2 bytes 是 check byte。

    check byte 0 校验:CT, SN0, SN1, SN2
    check byte 1 校验:SN3, SN4, SN5, SN6

    static lock byte

    lock byte 可以把一些 page 设置成只读。

    page 2 里有两个字节的 lock byte,可以控制 page3~page15 是否只读。NTAG210 型号的卡,user memory size 就是 12 个 page。猜想可能这个设计最初就是为了适应这个容量大小的卡。

    L 是 locking,负责单个 page 的锁定状态。L 位置 1 后,对应的 page 就变为只读,除非更改 L 位为 0

    BL 是 block-locking,可以锁定多个 page

    这两个 lock byte 的写操作是 tearing-proof 的。

    tearing 现象,卡离开读卡器时,供电突然消失。对 Flash 的写操作会中断,造成 data-tearing 现象。tearing-proof 就是会保证对卡内的这两个字节的写操作是独立完整的。

    参考链接:Tearing-proof method for writing data in a nonvolatile memory

    dynamic lock bytes

    控制序号 10h 及后面的 page 的锁定,就用到了 dynamic lock bytes。

    CC

    page 3 存了卡容量信息,在生产时固化,符合 NFC Forum Type 2 Tag 规范。其中 4 个字节,byte2 表示容量:

    这 4 个字节都是 OTP 的,且按位进行或操作。把某位置 1,不能置 0。

    这 4 个字节出厂时都有预置的值,不是 00。

    数据区

    page 4 以后一片连续的 page 可供用户使用。

    出厂时,page 3, page4, page 5 会有预置的值。page 5 以后的内容就不确定了。也许可以根据这里的信息来判断一张卡是否被使用过。

    功能配置页

    最后 4 个 page 用于一些功能的配置。

    MIRROR

    MIRROR 功能可以把卡的 UID 和 NFC Counter 以 ASCII 的格式映射到某个 page 开始的区域。

    MIRROR_CONF

    - 00: 禁止 MIRROR 功能
    - 01: 映射 UID
    - 10: 映射 NFC Counter
    - 11: 映射 UID 和 NFC Counter
    

    MIRROR_PAGE 指定映射到哪个 page
    MIRROR_BYTE 指定从 page 内的第几个 byte 开始

    AUTH

    PROT

    - 0:写保护(不允许写)
    - 1:读保护+写保护(不允许读和写)
    

    CFGLCK 控制 CFG0, CFG1 这两页是否可写

    - 0:配置区可写
    - 1:配置区不可写(PWD 和 PACK 除外)
    

    NFC_CNT_EN

    - 0: 禁止 NFC 计数器功能
    - 1: 开启 NFC 计数器功能
    
    开启之后,每次 power on reset 后第一次读操作时,计数器会增加 1
    

    NFC_CNT_PWD_PROT

    - 0: 读 NFC Counter 不需要验证
    - 1: 读 NFC Counter 之前需要密码校验通过
    

    AUTHLIM 密码尝试次数。当密码连续错误超过这个值时,就再也无法校验成功了。而在到达这个次数之前如果校验对了密码,则它的计数会清零

    PACK 校验密码命令的响应内容

    AUTH0 表示需要密码校验访问的起始页。初始值为 FF。比如,AUTH0 为 5,则表示从 page5 开始的页访问都需要校验密码。

    NFC counter

    开启此功能之后,每次卡 power on reset 之后的第一次读操作,24 bits 的计数器会自增。

    计数器增至 FF FF FF 之后就不再变化。 这个数字足够大了。

    这个计数器就给了每张卡一个独立变化的变量。

  • 相关阅读:
    python_函数设计
    python_自定日历
    python_日历
    python_选择结构
    python_集合
    python_code list_3
    Oracle 游标使用全解
    JavaWeb中验证码的实现
    oracle 存储过程和函数例子
    Oracle中的存储过程简单例子
  • 原文地址:https://www.cnblogs.com/sammei/p/NTAG-biao-qian.html
Copyright © 2011-2022 走看看