Note

M1卡

浅谈M1卡(水卡、饭卡、开水卡和门禁卡等)的破解与复制——理论知识篇

声明:破解卡片只为科学研究所用,并探讨数据加密升级的必要性。

本文只作技术研究、学习交流之用,切勿用于非法用途,否则后果自负!!!

前言
最近一直在研究单片机及硬件相关的知识(非本专业,纯属个人爱好),偶然间看到网友发了破解学校水卡相关的帖子。于是就想着研究(破解)一下学校的一卡通安全,顺便记录一下过程。

注:全文分为6个篇章,本文为[理论知识篇],后续我会持续更新。

由于篇幅较长,重点部分我已[加粗标出]。

1.概述
首先,在破解卡片之前,有必要先了解一下目前市面上常见卡片的相关知识,即IC卡与ID卡。

1)IC卡(Integrated Circuit Card),也称智能卡(Smart Card)、微芯片卡。常见的IC卡有二代身份证、手机SIM卡、校园一卡通等。分为非接触式IC卡与接触式IC卡。本文中M1卡为非接触式IC卡。

M1卡

2)ID卡(Integrated Circuit Card),即身份识别卡。ID卡无法写入数据,只有固定的ID编号,无任何保密功能 。

总结:ID卡是只读的,仅仅记录卡号,无法加密,故安全性低;IC卡可以读写,可以加密,IC卡数据的读取、写入等操作需相应的密码认证,卡片内每个区块有不同的密码保护(后文会详细讲解)。

2.IC卡的分类
作为准备工作,首先需要确认卡片的类型,这关系到卡片是否能破解。

此处采用手机App查看卡片数据最为方便,前提是手机支持NFC功能。或者直接使用PN532、ACR122u读卡器(后续破解用到的设备)。当然,可以采取简单粗暴的方式——通过观察卡片的外观来判断(方法请自行上网搜索,不再赘述),不过不一定准确。

通过SAK,可以判断卡的类型,如下图所示:

红色方框内即为SAK信息
(使用Mifare Classic Tool软件查看,文末会给出下载链接)
其中:

SAK:08为M1卡或S50卡——通常可以破解

SAK:18 为S70K卡——通常可以破解

SAK:20 为CPU卡——无法破解

SAK:28 为CPU模拟卡——模拟M1卡结构,极少部分可解

本文中所提到的M1卡,全称NXP Mifare1系列卡片,属于非接触式IC卡,常用于一卡通,公交等系统。常见的有卡式和钥匙扣式。如下图所示:

左为卡式,右为钥匙扣式
M1卡的容量通常为1KB(注意这里的单位是bytes,而非bit,换算为位的话应该是8Kb)。虽然存储空间比较小,但M1卡的结构仍较为复杂。

3.扇区与块
M1卡共有16个扇区(015扇区),每个扇区有4个块(03),每个块可以保存16字节的内容。即16(扇区)*4(每个扇区有4个块)*16(每块为16字节)=1024bytes=8192bits;

如下图所示:

某空白M1卡的第4、5扇区
其中第0、1、2个块用来存放数据,第3个块用来存放密钥。如上图所示,块的序号已用红色字体标注。密钥分为密钥A与密钥B,密钥A、B中间的为控制位。

[控制位决定该块的访问权限,读者可自行查阅相关资料,本文不再赘述]

例如扇区5中块3:其中”FF078069”为控制位,左右侧密钥A与B相同,即”000000000000”(本例中所用的M1卡为空白卡,无任何数据和密钥)。

通常情况,只要知道了某扇区的块3,就可以掌握本扇区的控制权限(读、写数据等)。同时,M1卡的每个扇区都可以设置不同的密钥。

还有,每个M1卡都有唯一的序列号(UID),存放在0扇区0块中。其中,前4个字节为卡的UID,第5个字节是校验位,剩下则为厂商数据,并且该块无法被修改(也有可修改的卡片,后文中将会提到)。

所以,若要读取和修改M1卡数据,首先必须先获得各个扇区的密钥,除非该卡片未加密。具体方法后文会详细阐述。

由此可见,能否破解M1卡密钥是破解整卡的关键因素。

0
0
...
...
...
Avatar