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 之后就不再变化。 这个数字足够大了。
这个计数器就给了每张卡一个独立变化的变量。
NTAG 标签的更多相关文章
- 【转】安全加密(三):RFID标签防伪为生活开启安全模式
本文导读 随着RFID技术的快速发展和RFID电子标签的生产成本不断降低,RFID标签防伪技术的应用也得到了极大的普及,逐步出现在各行各业当中,如交通出行.票务安全.商品防伪等领域. RFID技术简介 ...
- CGameConfig类
#ifndef __GAMECONFIG_H__ #define __GAMECONFIG_H__ #include "GameFrameHead.h" #include &quo ...
- DedeCMS标签 PHP判断语句写法
缩略图标签的判断写法,如果有图片就显示,没图片就显示别的. {dede:field name=litpic runphp='yes'} if(!empty(@me)) { @me="< ...
- a标签点击跳转失效--IE6、7的奇葩bug
一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 百度MIP页规范详解 —— canonical标签
百度MIP的规范要求必须添加强制性标签canonical,不然MIP校验工具会报错: 强制性标签<link rel="/^(canonical)$/"> 缺失或错误 这 ...
- 【CSS进阶】伪元素的妙用--单标签之美
最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...
- TODO:Laravel 使用blade标签布局页面
TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...
- 最新 去掉 Chrome 新标签页的8个缩略图
chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...
随机推荐
- BZOJ 4554 [Tjoi2016&Heoi2016]游戏 ——二分图
出原题,直接二分图匹配即可. #include <cstdio> #include <vector> #include <cstring> using namesp ...
- BZOJ3990 [SDOI2015]排序 【搜索】
题目 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1<=i<=N),第i中操作为将序列从左到 ...
- SJTU Summer Camp
Day -2,-1 提前坐飞机来到了上海,在旁边的酒店住下来,晚上去了外滩,在黄浦江边吹着晚风,依旧感慨万千,在衡中高三的一年竟然已经过去,经常出现在噩梦中的高考也已成为历史,然而命运可能并未就此改变 ...
- java集合四种遍历方式
package conection; import java.util.Iterator;import java.util.LinkedList;import java.util.List; publ ...
- 計算 battery impedence
Origin 一顆電池被拉載後,會產生電流及電壓如下圖, 如何計算其電池內阻呢 其公式為 R = |delta(V) / delta(I)| 公式推導如下: V1 = 10 - I1R --- 左圖 ...
- 在tomcat发布项目遇到的问题
今天从SVN上把系统导入本地发生了异常,问题如下: java.math.BigInteger cannot be cast to java.lang.Long 百度一番后发现是因为使用Mysql8.0 ...
- PHP文件函数
PHP文件函数 函数 描述 PHPbasename() 返回路径中的文件名部分. 3chgrp() 改变文件组. 3chmod() 改变文件模式. 3chown() 改变文件所有者. 3clearst ...
- Android中沉浸式状态栏的应用
在Android5.0版本后,谷歌公司为Android系统加入了很多新特性,刷新了Android用户的体验度.而其中的一个新特性就是沉浸式状态栏.那么问题来了,很多非移动端的小伙伴就要问了,什么是沉浸 ...
- zookeeper源码 — 四、session建立
目录 session建立的主要过程 客户端发起连接 服务端创建session session建立的主要过程 用一张图来说明session建立过程中client和server的交互 主要流程 服务端启动 ...
- PHP平均小数红包算法
<?php function RandMoney( $money,$num ){ $arr = array();//存放金额 $total_money = 0;//红包总金额 $thisMone ...