当前位置:首页 > ELSE > 正文内容

[MifareClassic]利用PN532完成射频卡扇区解密与校验分析

Luz1年前 (2020-06-23)ELSE720


写在前面:仅供安全测试用,请勿用作非法用途!!!


一、射频卡基础

MifareClassic的射频卡,一般内存大小有3种:


1K: 16个分区(sector),每个分区4个块(block),每个块(block) 16个byte数据


2K: 32个分区,每个分区4个块(block),每个块(block) 16个byte数据


4K:40个分区,每个分区4个块(block),每个块(block) 16个byte数据


对于所有基于MifareClassic的卡来说,每个区最后一个块叫Trailer,16个byte, 主要来存放读写该区的key,可以有A,B两个KEY,每个key长6byte,默认的key一般是FF 或 0,最后一个块的内存结构如下:


Block 0  Data 16bytes

Block 1  Data 16 bytes

Block 2  Data 16 bytes

Block 3  Trailer 16 bytes


M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,)存贮结构如下表所示

image.png

2K、4K卡布局规律与1K(M1)卡相同


第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改(也存在可以修改0扇区的卡,一般以嗅探卡居多,常用来干坏事)。


每个扇区的块0、块1、块2为数据块,可用于存贮数据。


每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下:


image.png



每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制;

密码位每种密码分别占6字节,每个扇区都可以设置独立的密码。

存取控制为4个字节,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的。



工作原理:

读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与讯写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。


密码的验证是在卡内部进行的,读写器只负责给卡提供电并和卡通讯,读写器发送加密的密码到卡,卡内部进行解密验证并发返回值,读写器根据卡的返回值来判断验证是否通过.

每个区中的控制位决定验证密码通过后能进行的操作.如果控制块中已将某区锁死,即使密码验证通过也读写不了卡中的数据。默认的控制位数据是无论那个密码验证通过,都可读写区中的数据,KeyA是永远不可读的,KeyB在默认控制块的情况下,可以读,条件是密码必须验证通过。



备注:

在校园卡中,一般来说KeyA是难以推算的加密密码,KeyB是类似FF FF FF FF FF FF之类的默认密码,使用KeyB可以读出卡片内容,同时使用KeyA和KeyB才能对卡片进行写入。



二、所需硬件

pn532读卡器(几十块钱)

image.png

电脑一台

校园卡一张


三、解密步骤

读卡器连接电脑,使用nfc上位机读卡片

image.png

软件可以自动嗅探密码,半加密卡的破解效率还是很高的,大概在半个小时


image.png

完成后会显示扇区的信息,每个扇区的最后一行的前六字节和后六字节存放该扇区的keyA和keyB,当同时知道这两个密钥时才能对扇区进行写入修改操作。


四、水卡数据分析

主要还是靠猜,提取同一张校园卡的两次不同金额数据,找到被修改的部分

image.png

这里发现29扇区第1、2行的前两字节和最后一个字节被修改,猜测前两字节存储金额,最后一字节是校验位(此时水卡剩余金额13.85元)

image.png

参照网上一些例子,发现前两字节倒置后/100就是水卡金额


五、校验位分析

这里发现0xE5=(本行前面各位数相加) mod 0x100

即校验位=各行每个十六进制数相加并和0x100取余数

image.png

金额修改测试--成功


六、一卡一密分析

多收集数据样本

本人比较菜,只看出前几位的规律

image.png

密钥的前4位基本上只是用卡号做加减运算

后面两位没找到什么规律,看起来跟卡号的一四位有关,似乎是彩虹表?

(或者其实每位都是彩虹表,但测试数据中前几位正好符合一些规律)


分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。