找回密码
 注册
首页 ≡≡桌面技术≡≡ 非接触式IC卡 Mifare Classic card(M1)卡结构介绍

Mifare Classic card(M1)卡结构介绍

灰儿 2017-1-26 19:16:03
前言
从M1卡的验证漏洞被发现到现今,破解设备层出不穷,所以快速傻瓜式一键破解不是本文的重点,年轻司机将从本文中获得如下技能。
  • 如果你想简单快速的上手,你可以选择ACR122-like,Proxmark3等容易购买到的操作简单的设备,或者有个带有NFC功能并安装有安卓Mifare Classic Tool (MCT)软件的手机也是个不错的选择。
  • 本文基于树莓派加RC522,PN532模块试验,如果你是刚入门的Geek爱好者不妨读读本文,我将简明地叙述SPI接口协议和部分RC522驱动代码。
  • 本文破解皆指针对Mifare Classic卡获得KeyA,KeyB,实现扇区数据读取。
  • 本文旨在抛砖引玉,才疏学浅,如有错误还请不吝赐教。

M1卡结构
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包括Mifare S50、Mifare S70、Mifare UltraLight、Mifare Pro、Mifare Desfire等。Mifare S50的容量为1K字节,常被称为Mifare Standard,又被叫做Mifare 1,是遵守ISO14443A标准的卡片中应用最为广泛、影响力最大的的一员。S50的卡类型(ATQA)是0004H。
640760-20160809005736762-1470334789.gif

在带有NFC功能的手机上使用MCT读取空白卡Mifare Classic 1k(S50),我们可以直观地看到卡片的存储结构。

640760-20160809010138559-1164639992.png

M1卡有从0到15共16个扇区(Sectors),并且每个扇区都有独立的密码,每个扇区配备了从0到3共4个块(Block),16个扇区的64个块按绝对地址编号为0~63,每个块可以保存16字节byte的内容,共有16X4X16=1024byte。
每个扇区的第4段用来保存KeyA,KeyB和控制位(ACs控制读写权限)。
0扇区0块是特殊的数据块,用于存放制造商代码,包括芯片序列号,此块只读。

灰儿 楼主 2019-1-7 21:59:29
最简要介绍下M1卡数据结构


目前能看到的有2种M1卡,分别为S50 S70,其实就是容量不一样, S50为1Kbyte  S70为4Kbyte
主要介绍S50 即1K卡   4K卡很少见


S50容量1Kbyte,16个扇区(Sector),每个扇区4块(Block)(块0~3),共64块,按块号编址为0~63。
每个扇区有独立的一组密码及访问控制。
第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改。
其他各扇区的块0、块1、块2为数据块,用于存贮数据;块3为控制块,存放密码A、存取控制、密码B。
<ignore_js_op>

以上大概说了下结构,其实我们只需要关心图中红框的数据就行了,其他的想了解自己百度吧!
<ignore_js_op>

========================我是快乐的分割线=========================


举几个简单的例子说明下吧,省得老有人问.


有些卡用的是明码,如下图所示
没错,这张卡是17年7月7日到期
<ignore_js_op>


这张卡用的16进制表达的,也算是明码
0E 0C 12  14年12月18日到期   
<ignore_js_op>


以上是2种比较简单的例子


还有些卡 这些数据带校验位 还有整个区块的数据表示了日期 楼层等等信息,这些数据是通过某种算法计算得来的
还有就是滚动码,刷一次卡,卡里的特定区块数据就变化一次,数据有的有规律,有的毫无规律...
还有的系统带有黑名单功能,就是如果数据验证无法通过,它会将你的卡列到黑名单中,你的卡直接报销,当然通过物业也许会恢复.所以不要乱改数据,轻则无法使用,重则卡片报废,还能被物业们抓到.
至于金融卡,想免费吃饭的话,你就改吧!

========================我是快乐的分割线=========================


有人问这个,大概说下吧


宝宝上卖的UID卡的第0扇区的所有块都可以更改。而且该型卡有后门,可以绕过密码,直接读取数据,这卡的密码就是装饰,没用!
FUID 是一次性可写ID号的卡,也就说,空白的时候可以写入一次ID好,以后就不能改了.这是对付读卡器有防复制功能的一种办法,也有叫穿透防火墙...
CUID ID号可以做到反复擦写使用,再也不用担心用一次之后报废掉的问题
还有各种空白卡,其实功能都差不多了.


========================我是快乐的分割线=========================


发个工具吧,不过是套个了GUI,哈...只是为了方便用而已,没什么技术含量...用不用在你了~~
前段时间有人发了PN532-mfoc-mfcuk-windows 这个工具,是编译了开源的库,不过在DOS下用,操作实在是不太方便,于是用了点时间做个GUI.
使用VS C#  framework2.0  如无法运行 需要安装framework2.0以上

程序图标 在PN532-mfoc-mfcuk-windows 文件夹中,挺显眼的吧!


一般使用流程
1.使用默认密钥读取 如果卡用默认密钥加密的话 直接可以读出数据 然后把数据保存为key.bump

2.全加密卡破解密钥  如果是全加密卡的话,用用这个功能,也许能得到密钥,成功率不是太高,我手里的一堆卡中,能有个5 6个能解吧,有人说这个运气和时间有关,不过我没试出来,能解得什么时候都没问题,不能解的,不同时间试了好多次,还是解不开.

3.使用已知密钥读取 得到密钥或者知道密钥的话,将密钥填到已知密钥中,然后点击就可以读出数据了,数据保存为key.bump

4.写卡 写卡之前先要把复制卡的数据先读出来,然后浏览原始卡的数据,点击写卡按钮就可以了.

5.全部停止 强行终止程序运行,由于本程序只是个GUI,所以当比如全加密卡破解的时候,需要停止,最好使用本功能,否则容易出错或者出现其他未知的问题.
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。