AS3992超高频UHF RFID读写器关于EPC GEN2标签的读写保护总结(上)

为了更好说明,下面带有实物操作。

硬件:

1)AS3992读写器套件

包含:

l AS3992超高频无源读写器,此读写器可以读写符合IS018000-6C(EPC GEN2)协议标签,同时兼容IS018000-6A/B协议。

l EPC GEN2电子标签。使用标签有三张,标签芯片分别是Impinj,Alien,NXP。前两种是透明可贴标签,NXP的是白卡。

l 8dBi UHF RFID板状天线

l 3.3V/2A电源适配器

l Mini usb线

2)UART转USB转接板

软件:

1)AS399x Reader Suite

2)串口调试助手

为了省去手写指令发送,我先用USB版本的读写器,直接通过rfid模块的usb接口发送指令,软件使用AUMS公司的上位机软件“AS399x Reader Suite v1.4”。当然usb版本和uart版本的API指令是完全一样的,下面软件的每个按键都可对应于一条指令,可在uart版本时直接用串口调试助手发送指令。下面会在图片下注明相应指令。

97696544gd8b9ca8ea2d2amp69

我们的AS3992读写器现有指令可实现对NXP的EPC GEN2标签芯片的读保护和写保护,对其它厂家标签如IMpinj,Alien的可以只实现标签所有存贮体的写保护,读保护只对保留区。

那么如何对超高频标签读写保护呢?就是完成加密过程,加密后使其他人无法读写我的标签。

1. 我们先了解下标签的存贮体和访问口令

从逻辑上来说,一个电子标签被分为四个存贮体,每个存储体可以由一个或一个以上的存储器字(2 个字节)组成。对于每个厂商生产的电子标签,其存贮器的结构是相同的,但会存在存贮器容量大小的差别。

97696544gd8b9cf61a8c1amp69

从以上结构图中可以看到,一个电子标签的存贮器分成四个存贮体,分别是:

存贮体0:保留区(Reserver)

存贮体1:EPC 存贮器(EPC)

存贮体2:TID 存贮器(TID)

存贮体3:用户存贮器(User)

这四个存储体的定义是:

a) 保留内存 保留内存为电子标签存贮密码(口令)的部份。包括灭活口令(Kill Password)

和访问口令(Access Password)。

灭活口令和访问口令都为4 个字节。

其中: 灭活口令的地址为00H—03H(以字节为单位);

访问口令的地址为04H—07H。

上面提到密码,就是访问口令,这个可以重新设置。一般标签的访问口令是4个字节,默认为00 00 00 00。在锁标签或写标签存贮体时都会需要。灭活口令只用于灭活指令,一旦灭活,标签将不再可用。

97696544gd8b9c99b2932amp69

指令(十六进制):

1)   先选一张标签(0x33):33 0F 0C+EPC号(一般是12个字节),如上是:33 0F 0C 0D B0 FB 63 AC 1F 36 81 EC 88 04 68,返回34 03 00表示选中此标签了。

2)   读标签寄存器(0x37):37 05 00 02 02,就可读出保留区的当前访问口令了。

注:命令的第二个字节都是表示发送的命令字节数;读寄存器的0x00表示选择保留区;第四字节0x02表示读到起始字地址,即第4个字节读起;第五字节0x02表示要读的字数,即4个字节。一般访问口令是4个字节,如果你输入要读的字节数大于4,会报错。返回数据的第3个字节是错误码,0x00表示无错。

b) EPC 存储器 EPC 存储器用于存贮电子标签的EPC 编号、PC(协议-控制字)以及本存贮

块数据的CRC—16 校验码。

其中:CRC—16:存贮地址为00—01H,2 个字节,CRC-16 为本存贮体中存贮数据的CRC

校验码。

PC:电子标签的协议-控制字,存贮地址为02—03H,2 个字节。

PC 是指本电子标签的控制信息,包括如下内容:

PC 为2 个字节,16 位,其每位的定义为:

00-04 位:电子标签的EPC 号的数据长度.

=000012:EPC 为一个字,16 位

=000102:EPC 为两个字,32 位

=000112:EPC 为三个字,48 位

……

=111112:EPC 为31 个字,496 位

05–07 位:RFU=000

08—0F 位: =000000002

EPC 编号: 若干个字,由PC 的值来指定。

EPC 为本标签的编码。EPC 存储在以04h 字节存储地址开始的EPC 存储器内,

MSB 优先。

每类电子标签(不同厂商或不同型号)的EPC 号长度可能会不同。

用户通过读该存贮器内容命令读取EPC 号。

在发行标签时,可通过改写EPC 编号,使该值在系统中唯一,以标明每个商

品的ID 号。

一般地,EPC 号为96 位,12 个字节。

97696544gd8b9cb556ca2amp69

点击Scan开始扫描区域内的标签,指令:0x43 0x03 0x31,带有RSSI值的盘存命令,还有不带RSSI值的盘存命令:0x31 0x03 0x01。

c) TID 存储器该存贮器是指电子标签的产品类识别号,每个生产厂商的TID 号都会不同。

标签生产厂商会在该存贮区中存贮其自身的产品分类数据及产品供应商的

信息。

一般来说,TID 存贮区的长度为4 个字,8 个字节。但有些电子标签的生产

厂商提供的TID 区会为2 个字或5 个字。

该TID 值在标签出厂时,往往是由厂商写好,用户无法再作修改。

用户在使用时,需根据自己的需要选用相关厂商的产品。

97696544gd8b9cd26a88c69

d) 用户存储器该存贮区用于存贮用户自定义的数据。用户可以对该存贮区进行读、写操作。

该存贮器的长度由各个电子标签的生产厂商确定。每个生产厂商提供的电子标签,其用

户存贮区的容量会不同。存贮容量大的电子标签会贵一些。用户应根据自身应用的需要,

来选择符合要求的电子标签,以减低标签的成本。

许多电子标签为低成本的,可能会不包括该用户存贮器。

97696544gd8b9cf262818amp69

1.      如何实现读写保护

从上面可以看出,标签中我们可以用来修改存储数据的是EPC区和用户区,有些标签会没有用户区。那么我们开始操作如何来实现读写保护。

1)针对一般EPC GEN2标签的读写保护

在读写器的操作指令中都会有锁定标签命令(lock tag,这个锁标签过程是加密过程,它可以实现对标签所有区的写保护,但同时也实现了对保留区的读保护(也就是访问口令和灭火口令的读保护),而其它3个区在锁标签后依然可以被读到,对所有的EPC GEN2标签都一样。也就是说这个指令没有实现EPC,TID,User区的读保护。

“锁定标签命令用于将标签的各个存贮器的读/写控制位进行锁定。对于己被锁定的标签,则只有在符合锁定状态的条件下,其相应存贮器内容才能被访问,否则会提示出错。

对于锁定,共分为5个存贮区:访问密码、灭活密码、EPC区、TID区、USER区。

其中:访问密码、灭活密码可以设置“读/写控制”位及“永久锁定控制”位。

EPC区、TID区、USER区可以设置为“写控制”位及“永久控制”位。”(见“ElecKits AS399X读写模块使用手册.pdf”2.8.3.5)

97696544gd8b9cbbeb001amp69

97696544gd8b9ccd97403amp69
97696544gd8b9cc869ca7amp69

注:

1)锁定标签命令,是对标签的每个区单独锁定,如我锁定EPC区,那么再写此标签EPC区时需要当前的访问口令,而其他区不用。所以在锁定标签前,我们会先重新设置访问口令。单独修改访问口令这个过程不会实现读写保护,它只是使除了默认访问口令外增加了一个可用于写存贮体时的密码。而锁标签所需的访问口令需是你当前设置的密码,锁定后,实现只有在设置的密码下才可写标签存贮体。

2)不管是锁定标签,还是读写标签,只要是对某张标签的操作,都要在发送这些命令前先选择这张标签(select command), 这个过程是为了唤醒标签用于使一张符合条件的标签处于开放状态或保护状态下,从而用户可以对该标签作进一步的访问操作。即使区域内只有一张标签,也要先选择。

写保护指令顺序:扫描标签——》选择标签——》读当前访问口令——》设置新访问口令——》锁某个区(如访问口令,EPC,用户区)

扫描标签:0x43 0x03 0x01 或 0x31 0x03 0x01

选择标签:0x33+命令字节数+EPC号

读当前访问口令:0x37 0x05 0x00 0x02 0x02

设置新访问口令:0x35 0x0D 0x00 0x02+当前访问口令+0x02+新密码(4个字节)

锁标签:0x3B 0x08+Lock/Unlock+选择的区+当前口令(4个字节)

注:具体命令格式查看指令集。锁定里还有一个永久锁定,一旦永久锁定就无法解锁了。选择某张标签,最好记住它的EPC号,方便以后写它的存贮体。

2) NXPEPC GEN2实现读写保护

此读写器有针对NXP EPC GEN2标签的特殊指令(0x45),有3个:读保护开启/关闭,电子产品防盗系统(EAS)功能开启/关闭,执行标签测试功能。这个指令对其它厂家标签没有作用。

97696544gd8bb0a32a002amp69

97696544gd8b9cbd67e8aamp69

97696544gd8b9cc03999famp69

读保护置位后,再扫描标签,读出数据为全为0。而且此时在上面软件中右击该标签的EPC,打开“Advanced Tag Settings”框,已无法成功打开,也就是说这个软件无法对已读保护的标签操作了。执行这条指令后NXP标签就无法被读写了,只有解除读保护后才可被再读写。那怎么办?

97696544gd8b9cc2a9a10amp69

此时我们需要手动发送指令解除读保护。目前没有usb接口软件直接发送指令。所以我将板子烧写成UART版本,用串口调试助手发送指令。API指令和usb的完全一样,只是通信接口不一样。

97696544gd8b9cb261e9damp69

如下图,串口中发送扫描标签指令,也是读到12个0x00。

发送解除指令前,我们需要选择这个标签EPC,这个时候选择指令后的EPC号不是原本的数据,而是直接发送(十六进制):33 0f 0c 00 00 00 00 00 00 00 00 00 00 00 00,

返回:34 03 00,表示选中了。

发送解除读保护指令:45 08 02 00 00 00 01 02,返回:46 05 00 00 00表示解除成功。

发送命令格式:

命令码:0x45

命令字节:0x08

命名选择:见下表

位状态:0-reset,1-set

访问口令:当前口令

字节3用于命令选择可有:

value Description

0x01 EAS Command Bit set/reset

0x02 Read Protect Bit set/reset

0x04 EAS Alarm execute

0x08 Calibrate

97696544gd8b9cd5a1bdb69

97696544gd8b9cddbc7d3amp69

97696544gd8b9ce33fc16amp69

97696544gd8b9ce7c971d69

最后,上面存在两个问题需要后续解决。

一是读写器实现了对NXP标签的读写保护,对其它标签(Impinj,Alien ect.)是否可以实现读保护?

二是NXP的EPC GEN2标签读保护后,如果同时有两张及以上被读保护,解除读保护时,是随机解除一张,然后一张一张解除?还是同时?还是其他情况?这个将在下篇教程中提到。

完全兼容AMS官方价值RMB 4000元的Roger开发板。适合客户做RFID的二次开发。我们是模块产品,可以通过普通Uart接口把模块集成到您的项目中。我们的价格只是原厂的四分之一!!!!!

Uart串口UHF RFID读写器 915M 无源GEN2超高频读写模块 AS3992

http://item.taobao.com/item.htm?spm=a1z10.1.w4004-3535073336.7.rTV2tL&id=15138367983

RFID 读写器系统包括如下部分:

电源适配器+3.0~3.3V/2A       一个      赠送

RFID 读写模块 一块

RFID 读写天线 (单独选配)

1、3dBi PCB MMCX口 UHF 天线:尺寸 4.5cm*4.1cm

http://item.taobao.com/item.htm?spm=a1z10.5.w4002-3535073328.12.Dejdh5&id=13640879646

2、5dBi PCB MMCX口 UHF 天线:尺寸 10cm * 10cm

http://item.taobao.com/item.htm?spm=a1z10.5.w4002-3535073328.18.Dejdh5&id=23426460127

3、【推荐!!】8dBi 板状定向圆极化 MMCX口 UHF 天线:尺寸 22.5cm*22.5cm

http://item.taobao.com/item.htm?spm=a1z10.5.w4002-3535073328.15.Dejdh5&id=22075632296

与PC 机连接的通信电缆 一条     赠送

EPC UHF GEN2 电子标签 一个    赠送

RFID 读写器开发资料SDK及应用程序    赠送

更多资料、手册,在 http://arm.eleckits.com    下载频道 UHF RFID页面可以直接下载。

您还可以登陆 http://rfid.eleckits.com 下载更多相关资料。

Print Friendly, PDF & Email
标签: , , , ,

发表评论