本文转载:https://blog.csdn.net/zmq5411/article/details/52042457
M1卡的工作原理
本篇对M使用上述第二种方法编程1卡。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的KEYBM1卡在验证密码时可以选择密码类型(A/B)。【其实M1卡有3套密码(KEYSET0、KEYSET1、KEYSET2)共6个密码(用0~2、4~6表示这6个密码),以适应不同的读写器。我们在这里使用它KEYSET0的2个密码】M1卡密码机制:这可以说是M一卡的精髓,也是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、11、11、101、11111。这里一定要注意一点:密码到不能装载M1卡在某个区域后更改该区域的密码(最好在连接读写器后直接更改密码),否则更改密码将失败并冻结风扇区域。如果你不小心这样做了,解决办法是完成读写操作,然后更改密码。与数据块(块0、1、2)不同,其存取控制如下:M1卡编程_B3的取值与_B0相同。一、主要指标容量为8K位EEPROM分为16个扇区,每个扇区4块,每块16个字节,以块为存取单位每个扇区都有一组独立的密码和访问控制每张卡有一个唯一的序列号,32位具有防冲突机制,支持多卡操作无电源,自带天线,包括加密控制逻辑和通信逻辑电路数据保存期为10年,可重写10万次,读无限次工作温度:-20℃~50℃(温度为90%)工作频率:13.56MHZ通信速率:106KBPS读写距离:10mm内部(与读写器有关)二、存储结构1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成(我们也按绝对地址将16个扇区的64块编号为0~存储结构如下图所示:块0数据块0扇区0块1数据块1块2数据块2块3密码A 存取控制 密码B控制块3块0数据块4扇区1块1数据块5块2数据块6块3密码A 存取控制 密码B控制块7 ∶ ∶ ∶ 0数据块60扇区15 1数据块61 2数据块62 3密码A 存取控制 密码B控制块632.第0扇区块0(即绝对地址0块)用于存储制造商代码,已固化,无法更改。3.每个扇区块0、块1、块2为数据块,可用于存储数据。数据块可用于两种应用:作为一般数据保存,可以读写。作为数据值,可进行初始化值、加值、减值、读值操作。4.每个扇区的块3是控制块,包括密码A、存取控制、密码B。具体结构如下: 密码A(6字节) 存取控制(4字节) 密码B(6字节)5.每个风扇区域的密码和访问控制是独立的,可根据实际需要设置自己的密码和访问控制。访问控制为4个字节,共32个字节。风扇区域内每个块(包括数据块和控制块)的访问条件由密码和访问控制决定。访问控制中每个块有三个相应的控制位置,定义如下:减值操作必须验证KEY A,加值操作必须验证KEY B,等等:三、工作原理卡片的电气部分只有一个天线和ASIC组成。天线:卡的天线只有几组绕线,非常适合包装IS0卡片中。ASIC:卡片的ASIC高速(106)KB波特率)的RF接口、控制单元和8K位EEPROM组成。工作原理:读写器方向M卡片中有一组固定频率的电磁波,卡片中有一LC在电磁波的激励下,串联谐振电路的频率与电磁波相同,LC谐振电路产生共振,使电容器中有电荷。在电容器的另一端,连接一个单向导通电子泵,将电容器中的电荷送到另一个电容器中储存。当累计电荷达到2时V时,该电容器可以作为电源为其他电路提供工作电压,发射卡内数据或接收读写器数据。复位应答(Answer to request)M1.定义了射频卡的通信协议和通信波特率。当卡进入读写器的操作范围时,读写器通过特定的协议与其通信,以确定卡是否为M1射频卡,即验证卡型。防冲突机制 (Anticollision Loop)当多张卡进入读写器的操作范围时,防冲突机制选择其中一张进行操作,未选择的卡将在空闲模式下等待下一张卡,过程将返回被选卡的序列号。选择卡片(Select Tag)选择被选卡的序列号,同时返回卡的容量代码。三次相互确认(3) Pass Authentication)选择要处理的卡片后,读写器将确定要访问的风扇区域号,并对风扇区域密码进行密码验证。三次相互认证后,可通过加密流通信。(在选择另一个区域时,必须验证另一个区域的密码。操作数据块读 (Read):读一个块;写 (Write):写一个块;加(Increment):加值数值块;减(Decrement):减值数值块;存储(Restore):将块中的内容存储在数据寄存器中;传输(Transfer):将数据寄存器中的内容写入块中;中止(Halt):卡在暂停工作状态;