非接触式会员卡 M1卡具体操作

M1卡最为重要的优点是可读可写并且安全性高的多功能卡。这些优点与其自身的结构密不可分。
M1结构:
M1卡分为16个扇区,每个扇区4块(块0~3),共64块,按块号编址为0~63。第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改。其他各扇区的块0、块1、块2为数据块,用于存贮数据;块3为控制块,存放密码A、存取控制、密码B。每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
M1卡运作机理:
连接读写器→寻卡→识别卡(获取卡序列号)→从多卡中选一张卡→向卡中缓冲区装载密码→验证密码→进行读写→关闭连接
即(代码说明)
Open_USB→rf_request→rf_anticoll→rf_select→rf_load_key→rf_authentication→(/a_hex)→rf_read/rf_write→(hex_a)→Close_USB
如果概括来说的话,主要也就四部分 开关连接、寻卡、验证密码、读取。
(至于详细程序代码,相信大家自己看过dll说明文档后,自己会明白的,这里就不写了,因为内容多)
M1卡功能模式:
1.寻卡模式:
寻卡模式分三种情况:IDLE模式、ALL模式及指定卡模式(0,1,2 均是int类型,是方法参数,下同)。
     0——表示IDLE模式,一次只对一张卡操作;
     1——表示ALL模式,一次可对多张卡操作;
     2——表示指定卡模式,只对序列号等于snr的卡操作(高级函数才有)【不常用】
也就是说,我们一次也可以同时操作多张卡。
对于多卡操作,其实际真正执行操作的还是一张卡。读写器能识别多张卡的序列号(但注意识别出的顺序是不定的,并且最多也就能识别4张卡,因为卡叠放的厚度太厚,会超出读写器的识别范围),并一一进行操作。
所以由此看出,多卡操作的意义并不大。但我建议大家还是设置为1好了(原因不说了,自己感受吧,其实无所谓)。
2.密码验证模式:
     0——KEYSET0的KEYA
     4——KEYSET0的KEYB
M1卡可以在验证密码时选择密码类型(A/B)。【其实M1卡有3套密码(KEYSET0、KEYSET1、KEYSET2),共6个密码(用0~2、4~6来表示这六个密码),目的是为了适应不同读写器。而这里我们用的是KEYSET0的2个密码】
 
M1卡密码机制:
这可以说是M1卡的精髓了,也是M1卡最为复杂的地方,希望大家耐心看完。
(请先看明白M1卡结构)如上所说,在存取控制中每个块都有相应的三个控制位,它们的定义如下:
     块0:   C10   C20   C30
     块1:   C11   C21   C31
     块2:   C12   C22   C32
     块3:   C13   C23   C33
一个扇区的三个数据块,我们可以利用密码机制对它们分别进行权限控制。数据块(块0、块1、块2)的存取控制如下:
M1卡编程
例如:当块0的存取控制位C10 C20 C30=100时,验证密码A或密码B正确后可读;验证密码B正确后可写;不能进行加值、减值操作。
那么M1卡修改密码的方法是rf_changeb3
参数:
     icdev:通讯设备标识符
     _SecNr:扇区号(0~15)
     KeyA:密码A
     _B0:块0控制字,低3位(D2D1D0)对应C10、C20、C30
     _B1:块1控制字,低3位(D2D1D0)对应C11、C21、C31
     _B2:块2控制字,低3位(D2D1D0)对应C12、C22、C32
     _B3:块3控制字,低3位(D2D1D0)对应C13、C23、C33
     _Bk:保留参数,取值为0
     _KeyB:密码B
由上我们看出_B0、_B1、_B2、_B3分别控制块0、块1、块2、块3。
由图我们可知_B0、_B1、_B2的可取值为 0、10、100、110、1、11、101、111。
这里大家一定要注意一点:
不能装载密码到M1卡某一扇区后再更改那扇区的密码(最好连接完读写器后直接更改密码),否则更改密码会失败而冻结扇区。如果不慎这样了,解决的办法是完成一次读写操作,再更改密码。
控制块(块3)的存取控制与数据块(块0、1、2)不同,它的存取控制如下:
M1卡编程
_B3的取值与_B0相同。
 

好了关于M1卡的编程我就介绍到这里了,大家如果有什么不明白的地方,可以和我联系交流。


M1卡补充内容:

一般把可读可写,频率是13.56MHz的射频卡称为IC卡,而只能读,频率是125KHz的射频卡称为ID卡,可以简单的理解为,IC卡可以写入数据,而ID卡则只能读卡芯片内的UID号,也就是内码号,M1卡是NXP公司的S50卡的一种叫法,国内的复旦F08,达华的TKS50...

NXP的S50容量为1024byte,官方资料

S50及S70是NXP的Mifare1系列芯片中的两种型号 全称是Mifare1 S50和Mifare1 S70 这两种芯片除掉容量分别为1K及4K以外,其他无太大区别

S50芯片厂商代码对应表,0扇区0块的内容 2014-11-10 17:19 提问者悬赏:5分 | 匿名 | 分类:硬盘 可以根据0扇区0块的内容判断出这个芯片是哪个厂家的...

所谓的M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列,常用的有S50及S70两种型号,目前都有国产芯片与其兼容,利用PVC封装M1芯片、感应天线,然后压制成型后而制作的卡即是智能卡行业所说的M1卡,属于非接触式IC卡...

2016年11月02日 来源:大新软件

标签:
分享到:

产品注册与防伪查询 | 法律声明 | 在线客服 | 联系我们

版权所有:久智大新软件(成都)有限公司© 2006 - 2016 DahSing Soft Inc. 蜀ICP备14021816号-6

大新软件
大新软件 版权所有