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 之后就不再变化。 这个数字足够大了。

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

NTAG 标签的更多相关文章

  1. 【转】安全加密(三):RFID标签防伪为生活开启安全模式

    本文导读 随着RFID技术的快速发展和RFID电子标签的生产成本不断降低,RFID标签防伪技术的应用也得到了极大的普及,逐步出现在各行各业当中,如交通出行.票务安全.商品防伪等领域. RFID技术简介 ...

  2. CGameConfig类

    #ifndef __GAMECONFIG_H__ #define __GAMECONFIG_H__ #include "GameFrameHead.h" #include &quo ...

  3. DedeCMS标签 PHP判断语句写法

    缩略图标签的判断写法,如果有图片就显示,没图片就显示别的. {dede:field name=litpic runphp='yes'} if(!empty(@me)) { @me="< ...

  4. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  5. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  6. 百度MIP页规范详解 —— canonical标签

    百度MIP的规范要求必须添加强制性标签canonical,不然MIP校验工具会报错: 强制性标签<link rel="/^(canonical)$/"> 缺失或错误 这 ...

  7. 【CSS进阶】伪元素的妙用--单标签之美

    最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...

  8. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  9. 最新 去掉 Chrome 新标签页的8个缩略图

    chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...

随机推荐

  1. BZOJ 4818 [Sdoi2017]序列计数 ——矩阵乘法

    发现转移矩阵是一个循环矩阵. 然后循环矩阵乘以循环矩阵还是循环矩阵. 据说还有FFT并且更优的做法. 之后再看吧 #include <map> #include <cmath> ...

  2. BZOJ3697 采药人的路径 【点分治】

    题目 采药人的药田是一个树状结构,每条路径上都种植着同种药材. 采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的. 采药人每天都要进行采药活动.他选择的路径 ...

  3. Qtree

    Qtree Ⅰ 题意:https://vjudge.net/problem/SPOJ-QTREE 带修路径查询最大边权 sol :树链剖分,之后每条重链就是一个连续的区间,拿线段树维护即可  简单讲讲 ...

  4. chromedriver对应的支持的Chrome版本(更新至Chrome64)

    很多网友在配置chromedriver的时候会遇到很多麻烦,在网上找了很多资料觉得这个表格不错,就给大家分享出来,希望对大家配置chrome的时候有帮助: chromedriver版本 支持的Chro ...

  5. svn不是内部或外部命令?

    svn不是内部或外部命令? 我的系统是Win7, [计算机]-->右键[属性]-->[高级系统设置]-->[环境变量]-->[系统变量 (S)]-->[Path]--&g ...

  6. getID3类的学习使用

    getID3类的学习使用 网上描述: getID3()这个PHP脚本能够从MP3或其它媒体文件中提取有用的信息如:ID3标签,bitrate,播放时间等. (格式包括:Ogg,WMA,WMV,ASF, ...

  7. UPC 2219: A^X mod P

    题形:另类快速幂 题意: f(x) = K, x = 1 f(x) = (a*f(x-1) + b)%m , x > 1 Now, Your task is to calculate ( A^( ...

  8. What is pseudopolynomial time? How does it differ from polynomial time?

    To understand the difference between polynomial time and pseudopolynomial time, we need to start off ...

  9. Delphi GDI对象之绘制位图

    http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579334.html 绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难, ...

  10. 实验一 Java实验环境搭建

    一 :搭建Java环境 (1)打开IE浏览器,输入网址”https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads ...