《M1卡破解密码控制位及控制规则.doc》由会员分享,可在线阅读,更多相关《M1卡破解密码控制位及控制规则.doc(9页珍藏版)》请在三一办公上搜索。
1、一、主要指标l 容量为8K位EEPROMl 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位l 每个扇区有独立的一组密码及访问控制l 每张卡有唯一序列号,为32位l 具有防冲突机制,支持多卡操作l 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路l 数据保存期为10年,可改写10万次,读无限次l 工作温度:-2050l 工作频率:13.56MHZl 通信速率:106KBPSl 读写距离:10mm以内(与读写器有关)二、存储结构1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为063,存贮结构如下图所示:块0数据块
2、0扇区0 块1数据块1块2数据块2块3密码A 存取控制 密码B控制块3块0数据块4扇区1块1数据块5块2数据块6块3密码A 存取控制 密码B控制块70数据块60扇区15 1数据块612数据块623密码A 存取控制 密码B控制块632、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。数据块可作两种应用: 用作一般的数据保存,可以进行读、写操作。 用作数据值,可以进行初始化值、加值、减值、读值操作。4、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:A0 A1 A2 A3 A4 A5 FF 07
3、 80 69 B0 B1 B2 B3 B4 B5密码A(6字节) 存取控制(4字节) 密码B(6字节) 5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:块0: C10 C20 C30块1: C11 C21 C31块2: C12 C22 C32块3: C13 C23 C33待添加的隐藏文字内容2三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如 进行减值操作必须验证KEY A,进行加值操
4、作必须验证KEY B,等等)。三个控制位在存取控制字节中的位置,以块0为例:对块0的控制:bit 7 6 5 4 3 2 1 0字节6C20_bC10_b字节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字节7C13C12C11C10C33_bC32_bC31_bC30_b字节8C33C32C31C30C23C22C21C20字节9( 注: _b表示取反 )6、数据块(块0、块1、块2
5、)的存取控制如下:控制位(X=0.1.2)访 问 条 件 (对数据块 0、1、2)C1XC2XC3XReadWriteIncrementDecrement, transfer,Restore000KeyA|BKeyA|BKeyA|BKeyA|B010KeyA|BNeverNeverNever100KeyA|BKeyBNeverNever110KeyA|BKeyBKeyBKeyA|B001KeyA|BNeverNeverKeyA|B011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever(KeyA|B 表示密码A或密码B
6、,Never表示任何条件下不能实现)例如:当块0的存取控制位C10 C20 C30= 0 0 1时,验证密码A或密码B正确后可读;验证密码B正确后可写;不能进行加值、减值操作。7、控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下:密码A存取控制密码BC13C23C33ReadWriteReadWriteReadWrite000NeverKeyA|BKeyA|BNeverKeyA|BKeyA|B010NeverNeverKeyA|BNeverKeyA|BNever100NeverKeyBKeyA|BNeverNeverKeyB110NeverNeverKeyA|BNeverNe
7、verNever001NeverKeyA|BKeyA|BKeyA|BKeyA|BKeyA|B011NeverKeyBKeyA|BKeyBNeverKeyB101NeverNeverKeyA|BKeyBNeverNever111NeverNeverKeyA|BNeverNeverNever例如:当块3的存取控制位C13 C23 C33= 0 0 1时,表示:密码A:不可读,验证KEYA或KEYB正确后,可写(更改)。存取控制:验证KEYA或KEYB正确后,可读、可写。密码B:验证KEYA或KEYB正确后,可读、可写。 新卡片中的控制字(FF 07 80 69)密码A可用,密码B不可用; 推荐的控
8、制字方案一:7F 07 88 69此控制字说明:数据块:用密码A或B都可以读写; 控制块:密码A:由密码B来写,不可读;密码B:由密码B来写,不可读;控制字:用密码A或B都可读,由密码B写;方案二:08 77 8F 69此控制字说明:数据块:用密码A读,由密码B读写;控制块:密码A:由密码B来写,不可读;密码B:由密码B来写,不可读;控制字:用密码A或B都可读,由密码B写;三、卡片卡片的电气部分只由一个天线和ASIC组成。天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个8K位EEPROM组成。四
9、、对数据块的操作读 (Read):读一个块;写 (Write):写一个块;加(Increment):对数值块进行加值;减(Decrement):对数值块进行减值;存储(Restore):将块中的内容存到数据寄存器中;传输(Transfer):将数据寄存器中的内容写入块中;中止(Halt):将卡置于暂停工作状态;对于电脑周边编程,主要有两种思路(应该没有第三种了)。【详细说明见我博文永和豆浆管理系统基础工作总结】一、利用windows系统本身dll库。二、利用硬件产家提供的dll。本篇对M1卡的编程是利用上述第二种方法。M1卡最为重要的优点是可读可写并且安全性高的多功能卡。这些优点与其自身的结构
10、密不可分。M1结构:M1卡分为16个扇区,每个扇区4块(块03),共64块,按块号编址为063。第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改。其他各扇区的块0、块1、块2为数据块,用于存贮数据;块3为控制块,存放密码A、存取控制、密码B。每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。M1卡运作机理:连接读写器寻卡识别卡(获取卡序列号)从多卡中选一张卡向卡中缓冲区装载密码验证密码进行读写关闭连接即(代码说明)Open_USBrf_requestrf_anticollrf_selectrf_load_keyrf_authentication(
11、/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的卡操作(高级函数才有)【不常用】也就是说,我们一次也可以同时操作多张卡。对于多卡操作,其实际真正执行操作的还
12、是一张卡。读写器能识别多张卡的序列号(但注意识别出的顺序是不定的,并且最多也就能识别4张卡,因为卡叠放的厚度太厚,会超出读写器的识别范围),并一一进行操作。所以由此看出,多卡操作的意义并不大。但我建议大家还是设置为1好了(原因不说了,自己感受吧,其实无所谓)。2.密码验证模式:0KEYSET0的KEYA4KEYSET0的KEYBM1卡可以在验证密码时选择密码类型(A/B)。【其实M1卡有3套密码(KEYSET0、KEYSET1、KEYSET2),共6个密码(用02、46来表示这六个密码),目的是为了适应不同读写器。而这里我们用的是KEYSET0的2个密码】M1卡密码机制:这可以说是M1卡的精髓
13、了,也是M1卡最为复杂的地方,希望大家耐心看完。(请先看明白M1卡结构)如上所说,在存取控制中每个块都有相应的三个控制位,它们的定义如下:块0: C10 C20 C30块1: C11 C21 C31块2: C12 C22 C32块3: C13 C23 C33一个扇区的三个数据块,我们可以利用密码机制对它们分别进行权限控制。数据块(块0、块1、块2)的存取控制如下:例如:当块0的存取控制位C10 C20 C30=100时,验证密码A或密码B正确后可读;验证密码B正确后可写;不能进行加值、减值操作。那么M1卡修改密码的方法是rf_changeb3参数:icdev:通讯设备标识符_SecNr:扇区号
14、(015)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)不同,它的存取控制如下:_B3的取值与_B0相同。目前m1卡已经可以成功解密,没有安全保密可言,已经有软件可以测试出密码,也有空白m1卡可以写uid号码,如有不明白或者需要技术交流加我qq:63965970