最近做了非接触式IC卡方面的调查,非接触式IC卡一般用的是ISO 14443 Type A标准。
一,一张IC卡有16个扇区,扇区编号从0,1,2到15,第0个扇区是系统扇区,是不能进行写操作的。
二,每个扇区有4个块,从第0块到第3块,第3块是密码区。每个扇区单独进行密码管理,扇区之间互不影响。
块号=扇区号*4 + 第几个块。一个块里可以存储16字节的数据,一个扇区可以存储3*16=48字节的数据。一张卡可以存储48*15=720字节。
三,读写卡器操作IC卡。
①,激活卡片。包含寻卡、防冲突、选择卡片操作。结果是获得4个字节的卡片序列号,验证密码的时候要用到该序列号。
②,密码验证。密码区的密码分为A密码和B密码,各6个字节,出厂的密码一般为0xFFFFFF或者0x000000。存储格式为A密码(6字节) + 控制位(4字节) + B密码(6字节),一共16个字节。做密码验证的时候,只要A密码或者B密码验证通过就算是这个扇区通过密码验证了,不需要两个密码都通过验证。验证A密码或B密码,都需要分别先做①步骤。
③,写卡。要提供写的块号和16字节要写的数据。
④,读卡。要提供读取的块号,返回16字节的数据。
⑤,修改密码。修改密码相当于对密码区做写操作,写的数据为A密码(6字节) + 控制位(4字节) + B密码(6字节),一共16个字节。注意中间的4个字节的控制位是不能修改的,要是修改了这个扇区就废了。一般是先对密码区域做读操作,获取到控制位(4字节),修改密码时原封不动的把这4个字节写回去。
以上读卡写卡修改密码都需要先做①和②步骤。