解决方案

M1卡的简介与操作命令

seo靠我 2023-09-25 09:13:25

目录

一、M1卡的简单介绍(S50/S70)

二、M1卡的数据块、数值块

三、M1卡的控制块_存取控制

3.1 数据块的存取控制       

3.2 控制块的存取控制

3.3 存取控制的一个小工具

四、读写器与S50和S70的SEO靠我通讯流程

五、M1卡的指令

六、复旦微的S70卡与NXP的卡的区别

一、M1卡的简单介绍(S50/S70)

Mifare S50和Mifare S70又常被称为Mifare Standard、Mifare CSEO靠我lassic、MF1,是遵守ISO14443A标准的卡片中应用最为广泛、影响力最大的的一员。而Mifare S70的容量是S50的4倍,S50的容量是1K字节,S70的容量为4K字节。读写器对卡片的操SEO靠我作时序和操作命令,二者完全一致。

Mifare S50和Mifare S70的每张卡片都有一个4字节的全球唯一序列号,卡上数据保存期为10年,可改写10万次,读无限次。一般的应用中,不用考虑卡片是否会被SEO靠我读坏写坏的问题,当然暴力硬损坏除外。

Mifare S50和Mifare S70的区别主要有两个方面。一是读写器对卡片发出请求命令,二者应答返回的卡类型(ATQA)字节不同。Mifare S50的卡类型SEO靠我(ATQA)是0004H,Mifare S70的卡类型(ATQA)是0002H。另一个区别就是二者的容量和内存结构不同。

Mifare S50把1K字节的容量分为16个扇区(Sector0-SectorSEO靠我15),每个扇区包括4个数据块(Block0-Block3,我们也将16个扇区的64个块按绝对地址编号为0~63),每个数据块包含16个字节(Byte0-Byte15),64*16=1024。

如下表所SEO靠我示:

Mifare S70把4K字节的容量分为40个扇区(Sector0-Sector39),其中前32个扇区(Sector0-Sector31)的结构和Mifare S50完全一样,每个扇区包括4个数SEO靠我据块(Block0-Block3),后8个扇区每个扇区包括16个数据块(Block0-Block15)。我们也将40个扇区的256个块按绝对地址编号为0~255),每个数据块包含16个字节(Byte0SEO靠我-Byte15),256*16=4096。如下表所示:

二、M1卡的数据块、数值块

每个扇区都有一组独立的密码及访问控制,放在每个扇区的最后一个Block,这个Block又被称为区尾块,S50是每个扇区的SEO靠我Block3,S70的前32个扇区也是Block3,后8个扇区是Block15。

S50和S70的0扇区0块(即绝对地址0块)用于存放厂商代码,已经固化,不可更改,卡片序列号就存放在这里。除了厂商块和控SEO靠我制块,卡片中其余的块都是数据块,可用于存贮数据。数据块可作两种应用:

      (1) 用作一般的数据保存,可以进行读、写操作。

      (2) 用作数值块,可以进行初始化值、加值、减值、读值操作。

数据块和值块有什么区别呢SEO靠我?无论块中的内容是什么,你都可以把他看成普通数据,即使它是一个值块。但是并不是任何数据都可以看成是值,因为值块有一个比较严格的格式要求。值块中值的长度为4个字节的补码,其表示的范围(-21474836SEO靠我48~2147483647),值块的存储格式如下:

        带下划线表示取反。VALUE是值的补码,addr是块号(0-63).只有具有上述格式,才被认为是值块,否则就是普通的数据块。

三、M1卡的控制块_存取控SEO靠我

        每个扇区的区尾块为控制块,包括了6字节密码A、4字节存取控制、6字节密码B。例如一张新出厂的卡片控制块内容如下:

A0 A1 A2 A3 A4 A5   FF 07 80 69    B0 B1 B2SEO靠我 B3 B4 B5密码A       存取控制        密码B

新卡的出厂密码一般是密码A为A0A1A2A3A4A5,密码B为B0B1B2B3B4B5,或者密码A和密码B都是6个FF。存取控制用以SEO靠我设定扇区中各个块(包括控制块本身)的存取条件,这部分有点复杂。

存取控制指符合什么条件才能对卡片进行操作。

S50和S70的块分为数据块和控制块,对数据块的操作有“读”、“写”、“加值”、“减值(含传输和SEO靠我存储)”四种,对控制块的操作只有“读”和“写”两种。

S50和S70的每个扇区有两组密码KeyA和KeyB,所谓的“条件”就是针对这两组密码而言,包括“验证密码A可以操作(KeyA)”、“验证密码B可以SEO靠我操作(KeyB)”、“验证密码A或密码B都可以操作(KeyA|B)”、“验证哪个密码都不可以操作(Never)”四种条件。

这些“条件”和“操作”的组合被分成8种情况,正好可以用3位二进制数(C1、C2SEO靠我、C3)来表示。

3.1 数据块的存取控制       

数据块(每个扇区除区尾块之外的块)的存取控制如下表所示:

从表中可以看出,

            C1C2C3=000(出厂默认值)时最宽松,验证密码A或密码B后可以进行任何操作;

C1CSEO靠我2C3=111无论验证哪个密码都不能进行任何操作,相当于把对应的块冻结了;

C1C2C3=010和C1C2C3=101都是只读,如果对应的数据块写入的是一些可以给人看但不能改的基本信息,可以设为这两种模SEO靠我式;

            C1C2C3=001时只能读和减值,电子钱包一般设为这种模式,比如用S50做的公交电子车票,用户只能查询或扣钱,不能加钱,充值的时候先改变控制位使卡片可以充值,充完值再改回来。

3.2 控制块的存取SEO靠我控制

控制块(每个扇区的区尾块)的存取控制如下表所示:

从表中可以看出,

密码A是永远也读不出来的,如果用户的数据块指定了验证密码A却忘了密码A,也就意味着这个数据块作废了,但本扇区其他数据块和其他扇区的数SEO靠我据块不受影响;

       存取控制总是可以读出来的,只要别忘了密码A或密码B;

       存取控制的写控制在设置时一定要小心,一旦弄成了“Never”,则整个扇区的存取条件再也无法改变,后悔都找不到地方,只能仰天长叹了;

C1SEO靠我C2C3=001(出厂默认值)时最宽松,除了密码A不能读之外,验证了密码A其他读写操作都可以进行;

       还有一个有意思的现象是当C1C2C3=000、C1C2C3=010和C1C2C3=001时,所有的操作SEO靠我都不使用密码B,这时候密码B占据的6个字节可以提供给用户作为普通数据存储用,相当于每个扇区增加了6字节的用户可用存储容量。

由于卡片出厂的默认值C1C2C3=001,所以对于新买来的卡片,不要使用密码BSEO靠我进行认证,否则会导致区尾块和数据块都无法进行任何操作。我测试过不同厂家的新卡片,有的验证密码B后确实扇区内的所有块都无法操作,但有的卡片不能操作区尾块,却可以操作数据块,本文以NXP的原装卡为准。当然SEO靠我用户可以放心,新卡不让你验证密码B而你却验证了,不会对卡照成什么伤害,改回用密码A验证,卡片还是可以正常使用的。

      S50的每个扇区有4个块,这四个块的存取控制是相互独立的,每个块需要3个bit,四个块共SEO靠我使用12个bit。在保存的时候,为了防止控制位出错,同时保存了这12个bit的反码,这样一个区的存储控制位在保存时共占用24bit的空间,正好是3个字节。我们前面说存取控制字有四个字节(区尾块的BytSEO靠我e6~Byte9),实际上只使用的Byte6、Byte7和Byte8,Byte9没有用,用户可以把Byte9作为普通存储空间使用。各块控制位存储格式如下:

由于出厂时数据块控制位的默认值是C1C2C3=SEO靠我000,控制块的默认值是C1C2C3=001,而Byte9一般是69H,所以出厂白卡的控制字通常是FF078069H.

S70的前32个数据块结构和S50完全一致。后8个数据块每块有15个普通数据块和一SEO靠我个控制块。显然如果每个数据块块单独控制将需要8字节的控制字,控制块中放不下这么多控制字。解决的办法是这15个数据块分为三组,块0~4为第一组,块5~9为第二组,块10~15为第三组,每组共享三个控制位SEO靠我,也就是说每组控制位C1C2C3控制5个数据块的存取权限,从而与前32个扇区兼容。

3.3 存取控制的一个小工具

下载链接:【控制位】M1卡控制字算法程序.zip

四、读写器与S50和S70的通讯流程

卡片选SEO靠我择和三次相互认证在前面已经介绍过。其他操作如下:

      (1) 读 (Read):读取一个块的内容,包括普通数据块和值块;

(2) 写 (Write): 写数据到一个块,包括普通数据块和值块,值块中写入了非法格SEO靠我式的数据,值块就变成了普通数据块;

      (3) 加(Increment):对值块进行加值,只能对值块操作;

      (4) 减(Decrement):对值块进行减值,只能对值块操作;

(5) 中止(Halt):将卡置于SEO靠我睡眠工作状态,只有使用WAKE-UP命令才能唤醒。

事实上加值和减值操作并不是直接在Mifare的块中进行的。这两个命令先把Block中的值读出来,然后进行加或减,加减后的结果暂时存放在卡上的易失性数据SEO靠我寄存器(RAM)中,然后再利用另一个命令传输(Transfer)将数据寄存器中的内容写入块中。与传输(Transfer)相对应的命令是存储(Restore),作用是将块中的内容存到数据寄存器中,不过这SEO靠我个命令很少用到。

五、M1卡的指令

六、复旦微的S70卡与NXP的卡的区别

      复旦和NXPS70的芯片比较

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2