M1 S50的存储器结构:http://www.cnblogs.com/worldsing/archive/2013/05/09/3068256.html,访问时以块为单位进行读写。
M1卡的每一个扇区都可以设置两个独立的密码,用来保护本扇区的数据,只有根据本扇区第3块的控制字要求配合指定的密码才能对本扇区进行读写。
出厂的每个扇区的第3块数据为:
按照S50非接触式IC卡 学习笔记 的内容用户程序可对M1卡的操作权限为:
所以M1卡出厂时各区第0~2数据块操作权限为:
解读:新卡操作时只要对该区的任意块进行密码A或是密码B的验证,就可以对该区的0~2块进行读写
所以M1卡出厂时各区第3控制块操作权限为:
解读:只有验证密码A正确了,才能做以下操作:
1、修改密码A;
2、修改控制字;
3、修改密码B,读出密码B。
改密码时先读出之前的控制字,组合成一个数据块后写到数据块3里。
实验:
给M1卡输入错误的密码,经过20多次的验证,M1并没有出实锁死情况,而读出各区的第3块数据时(即读出密码A、控制字、密码B)结果是一直是:
0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0x06 0x80 0x69 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
与上述控制字的访问权限相符;