M1卡破解密码控制位及控制规则(DOC)_第1页
M1卡破解密码控制位及控制规则(DOC)_第2页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、、主要指标l 容量为 8K 位 EEPROMl 分为 16 个扇区,每个扇区为 4 块,每块 16 个字节,以块为存取单位 l 每个扇区有独立的一组密码及访问控制l 每张卡有唯一序列号,为32 位l 具有防冲突机制,支持多卡操作l 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路l 数据保存期为 10 年,可改写 10 万次,读无限次l 工作温度:-20 C 50 Cl 工作频率:13.56MHZl 通信速率:106KBPSl 读写距离:10mm 以内(与读写器有关)二、存储结构1、M1 卡分为 16 个扇区,每个扇区由 4 块(块 0、块 1、块 2、块 3)组成,(我们也将 16 个扇区的

2、 址编号为 063,存贮结构如下图所示:块 0数据块0扇区 0块 1数据块1块 2数据块2块 3密码 A 存取控制 密码 B控制块3块 0数据块4扇区 1块 1数据块5块 2数据块6块 3密码 A 存取控制 密码 B控制块764 个块按绝对地0数据块60扇区 151数据块612数据块623密码 A 存取控制 密码 B控制块632、 第 0 扇区的块 0 (即绝对地址 0 块),它用于存放厂商代码,已经固化,不可更改。3、 每个扇区的块 0、块 1、块 2 为数据块,可用于存贮数据。数据块可作两种应用:用作一般的数据保存,可以进行读、写操作。用作数据值,可以进行 初始化值、加值、减值、读值操作。

3、4、 每个扇区的块 3 为控制块,包括了密码 A、存取控制、密码 B。具体结构如下:A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5密码 A( 6 字节)存取控制(4 字节)密码 B( 6 字节)5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为二个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访冋权限(如进行减值操作必须验证 KEY A,进行加值操作必须验证KEY B,等等)。三个控制位在存取控制字节中的位置,以块0 为例:对块 0 的控制:bit 7 6 5 4 3 2 1 0字节 6C20_

4、bC10_b4 个字节,共存取控制中每个块都32 位, 扇区中的每个块 (包括数据块和控制块) 的存取条件是由密码和存取控制共同决定的, 在 有相应的三个控制位,定义如下:块 0 : C10 C20 C30块 1 : C11 C21 C31块 2 : C12 C22 C32块 3 : C13 C23 C33字节 7C10C30_b字节 8C30C20字节 9(注:C10_b 表示 C10 取反)存取控制(4 字节,其中字节 9 为备用字节)结构如下所示:bit 7 6 5 4 3 2 1 0字节 6C23_bC22_bC21_bC20_bC13_bC12_bC11_bC10_b字节 7C13C

5、12C11C10C33_bC32_bC31_bC30_b字节 8C33C32C31C30C23C22C21C20字节 9(注:_b 表示取反)6、数据块(块 0、块 1、块 2)的存取控制如下:控制位(X=0.1.2)访问条件(对数据块 0、1、2)C1XC2XC3XReadWriteIncrementDecrement, transfer,Restore000KeyA|BKeyA|BKeyA|BKeyA|B010KeyA|BNeverNeverNever100KeyA|BKeyBNeverNever110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeverKeyA|

6、B011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever(KeyA|B 表示密码 A 或密码 B,Never 表示任何条件下不能实现)例如:当块 0 的存取控制位 C10 C20 C30= 0 0 1 时,验证密码 A 或密码 B 正确后可读; 验证密码 B 正确后可写;不能进行加值、减值操作。7、控制块块 3 的存取控制与 数据块(块 0、1、2)不同,它的存取控制如下:密码 A存取控制密码 BC13C23C33ReadWriteReadWriteReadWrite000NeverKeyA|BKeyA|BNever

7、KeyA|BKeyA|B010NeverNeverKeyA|BNeverKeyA|BNever100NeverKeyBKeyA|BNeverNeverKeyB1P0NeverNeverKeyA|BNeverNeverNever001NeverKeyA|BKeyA|BKeyA|BKeyA|BKeyA|B011NeverKeyBKeyA|BKeyBNeverKeyB101NeverNeverKeyA|BKeyBNeverNever1111NeverNeverKeyA|BNeverNeverNever例如:当块 3 的存取控制位 C13 C23 C33= 0 0 1 时,表示:密码 A :不可读,验

8、证 KEYA 或 KEYB 正确后,可写(更改)存取控制:验证 KEYA 或 KEYB 正确后,可读、可写。密码 B :验证 KEYA 或 KEYB 正确后,可读、可写。新卡片中的控制字(FF 07 80 69 )密码 A 可用,密码 B 不可用; 推荐的控制字方案一:7F 07 88 69此控制字说明:数据块:用密码 A 或 B 都可以读写;控制块:密码 A :由密码 B 来写,不可读;密码 B :由密码 B 来写,不可读;控制字:用密码 A 或 B 都可读,由密码 B 写;方案二:08 77 8F 69此控制字说明:数据块:用密码 A 读,由密码 B 读写;控制块:密码 A :由密码 B

9、来写,不可读;密码 B :由密码 B 来写,不可读;控制字:用密码 A 或 B 都可读,由密码 B 写;三、卡片卡片的电气部分只由一个天线和ASIC 组成。天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0 卡片中。ASIC :卡片的 ASIC 由一个高速(106KB 波特率)的 RF 接口,一个控制单元和一个8K 位 EEPROM 组成。四、对数据块的操作读(Read):读一个块;写(Write ):写一个块;加(In creme nt ):对数值块进行加值;减(Decreme nt ):对数值块进行减值;存储(Restore ):将块中的内容存到数据寄存器中;传输(Transfer

10、):将数据寄存器中的内容写入块中;中止(Halt):将卡置于暂停工作状态;对于电脑周边编程,主要有两种思路(应该没有第三种了)。【详细说明见我博文作总结】一、利用 windows 系统本身 dll 库。二、利用硬件产家提供的dll。本篇对 M1 卡的编程是利用上述第二种方法。M1 卡最为重要的优点是可读可写并且安全性高的多功能卡。这些优点与其自身的结构密不可分。永和豆浆管理系统基础工M1 结构:M1 卡分为 16 个扇区,每个扇区 4 块(块 03),共 64 块,按块号编址为 063。第 0 扇区的块 0 (即绝对 地址 0 块)用于存放厂商代码,已经固化,不可更改。其他各扇区的块0、块 1

11、、块 2 为数据块,用于存贮数据;块 3 为控制块,存放密码 A、存取控制、密码 B。每个扇区的密码和存取控制都是独立的,可以根据实际需要设定 各自的密码及存取控制。M1 卡运作机理:连接读写器T寻卡T识别卡(获取卡序列号从多卡中选一张卡T向卡中缓冲区装载密码T验证密码T进 行读写T关闭连接即(代码说明)Open_USTrf_requestTrf_anticollTrf_selectTrf_load_keyTrf_authenticationT(/a_hex)Trf_read/rf_writeT(hex_a)TClose_USB如果概括来说的话,主要也就四部分开关连接、寻卡、验证密码、读取。(

12、至于详细程序代码,相信大家自己看过dll 说明文档后,自己会明白的,这里就不写了,因为内容多)M1 卡功能模式:1.寻卡模式:寻卡模式分三种情况:IDLE 模式、ALL 模式及指定卡模式(0, 1, 2 均是 int 类型,是方法参数,下冋)。0表示 IDLE 模式,一次只对一张卡操作;1表示 ALL 模式,一次可对多张卡操作;2表示指定卡模式,只对序列号等于snr 的卡操作(高级函数才有)【不常用】也就是说,我们一次也可以同时操作多张卡。对于多卡操作,其实际真正执行操作的还是一张卡。读写器能识别多张卡的序列号(但注意识别出的顺序是不定的,并且最多也就能识别4 张卡,因为卡叠放的厚度太厚,会超

13、出读写器的识别范围),并一一进行操作。所以由此看出,多卡操作的意义并不大。但我建议大家还是设置为1 好了(原因不说了,自己感受吧,其实无所谓)。2.密码验证模式:0EYSET0 勺 KEYA4EYSET0 勺 KEYBM1 卡可以在验证密码时选择密码类型( A/B )。【其实 M1 卡有 3 套密码(KEYSET0 KEYSET1 KEYSET?,共 6 个密码(用 02、46 来表示这六个密码),目的是为了适应不同读写器。而这里我们用的是KEYSET(的2个密码】M1 卡密码机制:这可以说是 M1 卡的精髓了,也是 M1 卡最为复杂的地方,希望大家耐心看完。(请先看明白 M1 卡结构)如上所

14、说,在 存取控制中每个块都有相应的三个 控制位,它们的定义如下:块 0: C10 C20 C30块 1 : C11 C21 C31块 2 : C12 C22 C32块 3: C13 C23 C33一个扇区的三个数据块,我们可以利用密码机制对它们分别进行权限控制。数据块(块 0、块 1、块 2)的存取控制如下:控制位(X=0. 2)访问条件(对块0、lx 2)C1XC2XC3XReadtriteIncrementDecxenenttransfer Testore000KeyA|BKeyA|bKeyA | BKeyA|B010KeyA|BNeverNeverNever100KeyA|BKeyBNe

15、vexNever110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeveiKeyA011KeyBKeyBHeveiFever101KeyBNeverNevexNever111WevezNeverWeveiNeve(KeyA|B表示密码碱密码B恥苛亡工表示任何条件下不能实现)例如:当块 0 的存取控制位 C10 C20 C30=100 时,验证密码 A 或密码 B 正确后可读;验证密码写;不能进行加值、减值操作。那么 M1 卡修改密码的方法是 rf_changeb3参数:icdev :通讯设备标识符_SecNr:扇区号(015)KeyA 密码 ABk:保留参数,取值为

16、0_KeyB:密码 BB 正确后可B0:块 0 控制字,低3 位(D2D1C30B1:块 1 控制字,低3 位(D2DC31B2:块 2 控制字,低3 位(D2DC32B3:块 3 控制字,低3 位(D2D1C33由上我们看出_B0、_B1、_B2、_B3 分别控制块 0、块 1、块 2、块 3。由图我们可知 _B0、_B1、_B2 的可取值为 0、10、100、110、1、11、101、111。这里大家一定要注意一点:不能装载密码到 M1 卡某一扇区后再更改那扇区的密码(最好连接完读写器后直接更改密码),否则更改密 码会失败而冻结扇区。如果不慎这样了,解决的办法是完成一次读写操作,再更改密码。控制块(块 3)的存取控制与 数据块(块 0、1、2)不同,它的存取控制如下:控制位1密码A存収梓制密码RC13C23C33ReadVriteReadVriteReadVrite000NeveiKeyA|BKeyA|BNeverKeyA|BKeyAB010NeveiNeverKeyA|ENeverKeyA| BNever100NeveiKeyBKeyA|BNeverNeverKeyB110NeveiNeverKeyA|ENeverNeverNevex01NeveiKeyA|BKeyA|BKeyA|BKeyA | BKeyAB0i1N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论