
本文共 1012 字,大约阅读时间需要 3 分钟。
ATR(Answer to Request)
ATR(Answer to Request)是卡片在接收到读写器的命令后所做出的响应。卡片在进入磁场时会处于休闲状态(Idle),读写器通过发送卡请求命令(REQA)唤醒卡片。卡唤醒命令(WAKE-UP)则可以唤醒处于休眠状态或休闲状态的卡片。
卡片接收到命令后,会发送ATQA(Answer To Request)响应。ATQA由两个字节组成,第二个字节的高两位用于表示卡片序列号长度(如“00”表示4字节,“01”表示7字节,“10”表示10字节),低两位则用于防冲突机制。Mifare S50的ATQA通常为0004H,而Mifare S70的ATQA为0002H。
防冲突机制(Anticollision Loop)
在多张卡片同时进入读写器的操作范围时,防冲突机制会通过反冲突算法选择一张卡片进行操作。未被选中的卡片会处于空闲状态等待下一次选卡。该过程会返回被选中的卡片序列号。
卡片序列号通常由5个字节组成,其中前4个字节实际使用,最后一个字节为校验字节。反冲突算法确保在同一工作区域内只有一张卡片被选中,从而避免数据冲突。
选择卡片(Select Tag)
读写器通过发送选择卡命令(Select Command),指定要访问的区并选择密钥A或B。卡片读取区密钥和访问条件,并返回卡片容量代码(Tag Size)。通过ATS码(08h)读写器可以确定被选中的卡片类型。
三次相互认证(3 Pass Authentication)
Mifare卡片的认证机制不仅要求卡片认证读写器的身份,还要求读写器认证卡片的身份。这种相互认证通常采用随机数加密的方式。具体流程如下:
读写器通过比较卡片的回应值,完成认证过程。
存储器操作
经过三次相互认证后,读写器可以执行以下存储器操作:
- 读(Read):读取数据块
- 写(Write):写入数据块
- 减值(Decrement):降低数据块内的数值并存储到内部数据寄存器
- 加值(Increment):增加数据块内的数值并存储到数据寄存器
- 转存(Restore):将内部数据寄存器内容写入数值块
- 暂停(Halt):将卡片置于暂停状态
发表评论
最新留言
关于作者
