基于Philips MF RC522的ISO14443A标准卡读写

好久没写点什么了,前一阵子做了14443A标准卡的读写,底层驱动都已经写好了,所以主要是一些搭积木的工作,但是也应该记点下来。

---------------------------------------------------无知的分割线----------------------------------------------------

笔者用的标准卡是mifare MF1 IC S70,具有4Kb的EEPROM,分为32个sector(每个sector有4个block)和8个sector(每个sector有16个block),工作频率13.56MHz,这里得说一下,S70比S50的EEPROM大,其余没有区别。

首先来看下卡片手册里面的读写流程图:

基于Philips MF RC522的ISO14443A标准卡读写

可见从Power On Reset开始,依次是 Answer To Request(寻卡)、Anticollision Loop(防冲撞处理并读出卡片ID)、Select Card(选定卡片)、3 Pass Authentication(验证密码)、具体操作。

再来看具体操作:

基于Philips MF RC522的ISO14443A标准卡读写

有读、写卡片,增钱减钱(block为value模式下),存储和转移。

下面是卡片EEPROM的存储格式:

基于Philips MF RC522的ISO14443A标准卡读写

从下至上的地址依次为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的存储格式和相应代表的意思:

基于Philips MF RC522的ISO14443A标准卡读写

基于Philips MF RC522的ISO14443A标准卡读写sector控制block

基于Philips MF RC522的ISO14443A标准卡读写普通block

需要注意的是每次读写都需验证密钥。

你可能感兴趣的:(ISO)