好久没写点什么了,前一阵子做了14443A标准卡的读写,底层驱动都已经写好了,所以主要是一些搭积木的工作,但是也应该记点下来。
---------------------------------------------------无知的分割线----------------------------------------------------
笔者用的标准卡是mifare MF1 IC S70,具有4Kb的EEPROM,分为32个sector(每个sector有4个block)和8个sector(每个sector有16个block),工作频率13.56MHz,这里得说一下,S70比S50的EEPROM大,其余没有区别。
首先来看下卡片手册里面的读写流程图:
可见从Power On Reset开始,依次是 Answer To Request(寻卡)、Anticollision Loop(防冲撞处理并读出卡片ID)、Select Card(选定卡片)、3 Pass Authentication(验证密码)、具体操作。
再来看具体操作:
有读、写卡片,增钱减钱(block为value模式下),存储和转移。
下面是卡片EEPROM的存储格式:
从下至上的地址依次为1、2、3、4、5、6。。。每个sector的灰色block为这个扇区存储密钥、访问方式和普通block模式的控制block。
默认情况下卡片的A密钥和B密钥都为0xff,0xff,0xff,0xff,0xff,0xff,当block设置为data block时,每个block的16个字节都可改写成数值;当设置为value block时,就有固定格式了:
下面这个表显示了Access Bits的存储格式和相应代表的意思:
sector控制block
普通block
需要注意的是每次读写都需验证密钥。