前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RFID入门:Mifare1智能水卡破解分析

RFID入门:Mifare1智能水卡破解分析

作者头像
FB客服
发布于 2018-02-05 06:45:51
发布于 2018-02-05 06:45:51
9.5K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

文章的最开始,先来致敬RadioWar。一直手痒RFID这个领域,准备了一段时间,开始入门RFID。

先来普及一下基础知识:

RFID即为射频识别。NFC近场通信。很多人把NFC和RFID混为一谈,但实际上NFC可以理解为“以RFID技术为基础的一种产品”。

RFID技术中所衍生的产品大概有三大类:无源RFID产品、有源RFID产品、半有源RFID产品。根据RFID Tag的工作方式,有可分为被动,主动、半主动三种。最常见的就是被动式的了。我们目前接触的多的就是无源、被动式产品,其中最为广泛常见的就是MIFARE Classic 1K卡,简称M1卡、S50卡。M1卡有从0-15共16个扇区,每个扇区配备了从0-3共4个段,每个段可以保存16字节的内容。每个扇区的03段是用来保存KeyA,KeyB和控制位的,因为M1卡允许每个扇区有一对独立的密码保护,这样能够更加灵活的控制数据的操作,控制位就是这个扇区各种详细权限计算出来的结果。每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的00扇区的00段,也称为厂商段,其中前4个字节是卡的UID,第5个字节是卡UID的校验位,剩下的是厂商数据。并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,当然也有例外,有种叫UID卡的特殊卡,UID是没有设置保护的,其实就是厂家不按规范生产的卡。

更多的资料请百度、谷歌之,就目前来说我们简单了解下就够了,有了这些大体的了解,我们就开始今天尝试破解一张水卡(洗澡用,宿舍常见)试试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
工具:ACR122U-A9UID可写白卡,待破水卡
平台&软件:Win7x64、XP:RadioWar的NFCGUI-Pro,简化版的mfocgui。
Kali平台:mfoc,,nfc-mfclassic。

0x00开头

关于ACR122U-A9这个读卡器,虽然比不上PM3那么神通广大,但是对于入门学习来说绝对算得上神器了。某宝上一搜一堆,很多店都卖165元左右(爆个内幕;其实都是一家)。然后就是UID可写的卡了,大约3元一张。平台选择这两个是因为入门来说自然首选Win平台,但是其中出现了一些问题,虽然失败但也贴出来供大家查错。

0x01分析、确定卡片

首先确定卡片是M1卡,且数据是保存在卡里而不是服务器上的。通过图1,我们可以看到机器只有电源线,没有网线,且机器已经很老了,肯定不能是无线方式联接。

我想到了一种“非正式”的一种鉴别方法,大多数注明“不记名不挂失”的卡片都是数据存放在本地的IC卡,否则他们完全可以提供记名挂失的功能的,对吧?

所以我们有把握这肯定就是IC卡,金额数据存放在卡里的了。那么对于这种卡,我们有两种让钱“无限”的方式:1.直接复制现有的卡,因为金额可以任意复制,C/V模式,但是这样太没有技术含量,而且成了纯粹的为了利益了;2.尝试了解卡片内数据块的实际意义作用,找到数据加密方法。对应的写出解密方法,这样卡内余额就我们随意控制了。当然,第二种方式是以第一种方式为基础的,所以我们一步一步来尝试。

0x02Win尝试

根据网上提供的资料(http://bobylive.com/static/1491),我们尝试使用验证漏洞,也就是利用mfocgui破解M1卡的密钥。先是Win7 x64,点击按钮即可一键自动破解,但是出现了问题。当试到05扇区的时候,程序就开始报错,然后ACR122U莫名与PC断开联接。网上搜索无果。尝试RadioWar的NFCGUI-PRO,同样的问题。同样的软件,后来换到XP,问题依旧。说明在Win平台上还是多少有点问题。不如Linux上的兼容性好。

0x03Kali尝试

值得一提的是,Kali原生支持ACR122U的,而且里面内置了很多的NFC安全研究的工具,极大的方便了我们的工作。(注意尽量不要用Win上的Kali虚拟机,因为USB口还是通过Win平台,所以兼容性问题还是可能存在,我的就会出现Usb Timeout错误)

进入Kali我们能看到很多RFID/NFC的工具。我们用到的是mfoc和nfc-mfclassic这两个工具。Mfoc是利用验证漏洞破解key的一个工具,而nfc-mfclassic则是对卡片进行读写的工具,我们可以从卡片里dump出来数据到本地,然后利用hexeditr分析编辑,再将数据导入到卡里去。

由于网上很少有这类工具的中文使用说明,我在此一并给大家介绍了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mfoc: invalid option -- '-'
Usage: mfoc [-h] [-k key]... [-P probnum] [-Ttolerance] [-O output]
  h      打印帮助
  k      将一个新的密钥添加到密钥表里
  P      每扇区测试多少个密钥(默认20T      随机和随机范围
  O      输出到的文件

为了以后使用方便,我们将破解的命令写成shell脚本:crack2file

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if [ $# -lt 1 ]
then
echo "Usage:"
echo " readto dumpFile"
else
mfoc -k ffffeeeedddd -O $1 #这句是我们真正用到的命令,这里的key以后可以换成我们破解出来的key,加快速度
fi

我们连接上ACR122U到电脑,输入./crack2file tmp/unknow.mdf,就会开始自动破解了。

如果这张卡存在默认密码的话,理论上我们就能得到全部密钥。稍等几分钟,我们看到mfoc提示成功,dump文件已经得到,保存备份几次。然后我们再次去水机处刷卡,消费1元之后余额为8.00。因为我们已经有卡的加密密钥了,所以我们不必再次破解,我们通过使用nfc-mfclassic工具,使用已经有的导出文件再次导出卡内数据。

同样再给些中文使用帮助:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r|R|w|W 从卡片中读取数据到文件中(r),读取文件然后写入到卡片中(w)。或者如果你是使用uid可写卡,使用强制读取R,
强制写入W可以改写uid。
a|A|b|B  使用keyA还是keyB,当有错误的时候就停止(a,b)或者忽略错误(A|B)
<dump.mfd> dump到的文件
<keys.mfd>  key文件
F           如果UID不一样的话也继续

我们使用命令:nfc-mfclassic r A 600.mfd tmp/unknow.mfd f(建议写成脚本)。

0x04分析导出的Dump文件

成功导出变化了的dump文件。然后我们用hexeditor(这个会自动变成正常阅读顺序,当然某些数据不懂时我们可以尝试使用hexdump,这个是反端的顺序,可能会有新的发现)。打开分析。通过对比文件变化,我们发现有一部分内容变化了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
04 0A 52 18 7B EF 03 20 00 6A C8 01 00 3C00 1E
4F 4B 18 7B EF 03 20 00 6A C8 01 00 3C 001E 00
04 0A 4B 18 7B EF 03 20 00 6A C8 01 00 3C00 1E  8.00
 
04 0A 52 18 7B EF 03 84 00 7C EB 01 00 3C00 1E
4F 4B 18 7B EF 03 84 00 7C EB 01 00 3C 001E 00
04 0A 4B 18 7B EF 03 84 00 7C EB 01 00 3C00 1E  9.00

这其中hex(900)=0x384,hex(800)=0x320,所以这三行的对应数值就是金额。后面7C EB 01和6A C8 01是变化的内容。然后拿这张卡我再去刷一次,确定金额已经正确分析出来,但是后面的6A C8 01变为了6A C8 02。既然这三次变化没有规律,为了确认后面的变化部分是否与时间有关,我同一个数据复制了两张卡,然后先后到机器上刷了一样的钱,然后回来再dump出来,发现两张卡内的数据一模一样,所以推断与时间无关。但是!就因为最开始下的这个结论,导致我在解密的路上越走越偏。那么我猜测可能是金额与UID或者某部分内容通过异或,或,与等常见的运算。我尝试算了很长时间很多种可能性,最终没能算出来。暂时只好将卡多复制几次,继续慢慢尝试。

0x05转折点

接连刷了几天,得到了很多数据。直到12月2号中午,再次把所有数据放在一起对比时,忽然发现卡里面内容有点奇怪。当我用变化的6A C8这部分数值与UID异或的时候,组成的内容再加上后面的01好像有点规律了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
最开始测试          继续测试   昨天       今天
112701   112702    112901    120101    120201

怎么忽然从1127变成1201然后是1202了?今天是12月2号!也就是说我前几天测试的时候应该是11月27日。112701,112702,是指第一次刷卡,第二次刷卡。然后至于那次单独测试是不是与时间有关,因为我是在同一天测试的数据,而它只记录日期。所以自然数据就一样了。

知道了这些,我们就把卡上所有信息都掌握了。其他字段都是些无关紧要且不会变的东西,因为卡是匿名买的,不记名不登记。

了解了这些,我们修改为8888即为88.88元试试,hex(8888)=0x22b8。然后写入卡内,去刷,成功了!

如下图

但是,当我再次刷准备拍照的时候发现卡失效了,换一个机器,发现刷一次之后卡就失效了。经过多次测试发现,卡内余额只要大于50元钱,当前卡就临时失效,而我们购买单张卡时,单张卡内有的余额正好就是50。也就说机器内固化了检测卡内余额的功能,实在是想不通为什么要这样的鸡肋功能,对于机器的可升级维护性造成了负担。

至此,这张卡我们就彻底弄清楚如何修改金额了。虽然这只是一个较为简单的数据存放案例,但是作为M1卡入门还是不错的教程。希望这篇文章能为大家在RFID安全方向上起一个抛砖引玉的作用!

[本文作者diigu,本文属FreeBuf黑客与极客(FreeBuf.COM)独家文章,未经许可禁止转载]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RFID 破解基础详解
在我们平时生活中有各种各样的卡,比如 ID 卡、IC 卡、RFID 卡、NFC 卡、Mifare 系列卡(可能银行卡、公交卡、饭卡、水卡、门禁卡、电梯卡......我们更亲切些)这么多称呼是不是把自己都搞糊涂了?最重要的还是卡的安全问题像贩卖水卡、盗刷银行卡这些安全问题我们可能都有所耳闻,然后我就这方面进行了简单的学习和实践测试。在网上查资料的时候发现了很多相关文章,但什么还要再写呢?因为这些技术虽然比较古老,但是对像我这种刚接触的新人还是感觉很新奇的,所以就想把自己了解到的一些知识尽可能全面地写出来和大家分享一下,一来是为了整理一下自己所得,二来也希望能够给刚接触这方面的同学一些参考。因此有什么写得不对的地方敬请大家原谅和指出!有什么学习建议也欢迎提出。
信安之路
2019/08/20
7.3K0
RFID 破解基础详解
M Tools:移动端rfid校验计算工具
Mifare Classic card 提供 1k-4k 的容量,我们经常见到的是 Mifare Classic 1k(S50),也就是所谓的 M1 卡。M1 卡有从 0 到 15 共 16 个扇区,每个扇区配备了从 0 到 3 共块个段,每个段分为 b0 到 b15 共 16 个区块,并且可以保存 16 字节的内容。
FB客服
2019/05/09
1.9K0
M Tools:移动端rfid校验计算工具
如何利用Nexus 5伪造一张门禁卡
以前在社区看见各种关于RFID的帖子,但是一直没花时间尝试。 近期物业重新安装了小区大门,以前绕一绕,或者钻一下还是能进去的- -, 然而物业说,门禁卡最多只能办五张,有人说假装掉了重新去办五张.
逸鹏
2018/04/10
2.9K0
如何利用Nexus 5伪造一张门禁卡
RFID技术|门禁卡破解|IC卡破解学习过程
安全不仅仅包含网络上的安全,在我们实际生活中也同样存在很多个安全相关的事物,可以说跟科技扯上关系的事物都会有安全问题,无线,蓝牙,手机,无人机,汽车。真正有问题的不是安全,而是人心。很多事物的设计之初都是没有考虑安全问题的,因为人心的不坏好意迫使去考虑它的安全问题。
安恒网络空间安全讲武堂
2018/08/17
112.1K2
低成本安全硬件(二) | RFID on PN532
引言 鉴于硬件安全对于大多数新人是较少接触的,而这方面又非常吸引我,但是部分专业安全研究设备较高的价格使人望而却步。在该系列中,笔者希望对此感兴趣的读者在花费较少金钱的情况下体会到硬件安全的魅力所在。 本系列计划分成四个部分:BadUSB on Arduino; RFID on PN532; GSM on Motorola C118 ; SDR on RTL2832U(电视棒)。 背景 早在2007年,Mifare M1 RFID卡片就被研究人员破解了出来。NXP公司在M1卡上使用了未公开的加密算法,然而密
FB客服
2018/02/23
4.2K0
低成本安全硬件(二) | RFID on PN532
RFIDHacKing频射硬件入门
RFIDHacKing频射硬件入门 From ChaMd5安全团队核心成员 MAX丶 鉴于硬件安全对于大多数新人是较少接触的,而这方面又非常吸引我,但是部分专业安全研究设备较贵贵贵!
ChaMd5安全团队
2018/03/29
1.2K0
RFIDHacKing频射硬件入门
RFID实战应用之常见射频卡扇区数据分析及破解
上篇文章我们已经介绍了ID卡的工作原理与破解方法。这篇文章在此介绍IC卡的原理及破解方法。IC不同于ID卡的是其卡内数据不仅仅是一串写死的ID序列号,其内部有扇区以储存IC卡内包含的大量数据,且可经过反复擦写。即IC卡可支持读取与写入。IC卡可以分为:接触式IC卡、非接触式IC卡和双界面IC卡。
FB客服
2020/04/21
8K0
RFID实战应用之常见射频卡扇区数据分析及破解
使用python读取银行卡信息
之前网上有所谓专家认为,NFC手机有可能成为黑客的“提款机”;也有分析认为,手机只有紧贴着银行卡才能读出有限的卡内信息,也并不能进行转账操作,因此风险并不大。看了这么多,不如自己用python读取一下,看看到底能读取到什么信息呢?
天钧
2019/07/25
3.9K1
使用python读取银行卡信息
加密门禁卡复制
最近发现补一张要50,成本的话白卡2块钱一张,读卡器可以白嫖也可以24多买一个不带壳pn532模块。
全栈程序员站长
2022/09/12
4.1K0
RFID 低频卡安全分析
低频非接触卡主要用于门禁丶考勤等等在日常生活中使用非常的广泛,但他也具有比较大的安全隐患,他没有一些密钥安全认证这类安全机制,所有我们只要对低频卡有所研究就可以对这些卡进行破解和复制。
信安之路
2018/08/08
2.4K0
RFID 低频卡安全分析
小区RFID电卡的那些事儿
炎炎夏日,很快发现每天骑车出去电动车电卡的消费惊人呀( ▼-▼ )... 环境及工具 Win xp pro sp3 M1卡破解工具 NFCGUI-Pro.exe HexCmp.exe 先来看看我们的
FB客服
2018/02/06
1.1K0
小区RFID电卡的那些事儿
RFID Hacking②:PM3入门指南
0x00 前言 Proxmark3是由Jonathan Westhues在做硕士论文中研究Mifare Classic时设计、开发的一款开源硬件,可以用于RFID中嗅探、读取以及克隆等相关操作,如:PM3可以在水卡、公交卡、门禁卡等一系列RFID\NFC卡片和与其相对应的机器读取、数据交换的时候进行嗅探攻击,并利用嗅探到的数据通过XOR校验工具把扇区的密钥计算出来,当然PM3也能用于破解门禁实施物理入侵。 0x01 环境搭建 1.1 windows环境 PM3的固件和软件通常是配套使用,也就是说每
用户1631416
2018/04/12
3.6K0
RFID Hacking②:PM3入门指南
STM32F103+RFID-RC522模块 实现简单读卡写卡demo「建议收藏」
本文不含任何广告性质,仅供学习参考。写卡需谨慎!!!,不然可能会玩崩了。血的教训!!!
全栈程序员站长
2022/07/23
3.4K0
STM32F103+RFID-RC522模块 实现简单读卡写卡demo「建议收藏」
一步步教你制作移动式银行卡信息读取器
背景:半年前,我从网上看到一个视频,讲的大概是一个人站在了一个人的旁边,待了几秒,然后就知道了那个人的银行卡信息了,而且不仅是银行卡信息,甚至连持卡人的姓名,身份证号都有。我看完之后,当时就惊呆了。现在的人都这么牛了吗?于是不假思索的也从网上买了一个一模一样的NFC读卡器,幻想着自己也可以这么厉害。可是货一到,热情就没了,因为当时以为很简单,哪知研究了一下竟不知从哪下手。不过好在也没浪费,拿着它配了个钥匙。就这样一晃半年过去了……最近我又看到了这个NFC读卡器,然后还找到了自己大学时期买的树莓派,心想着,是不是可以结合一下。最终功夫不负有心人,花了好几天的时间,终于把它们拼起来了!
物联网安全小编
2020/07/01
3.7K2
一步步教你制作移动式银行卡信息读取器
RFID-MFRC522射频识别模块,S50卡M1
1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:
全栈程序员站长
2022/09/14
1.4K0
RFID-MFRC522射频识别模块,S50卡M1
手机NFC模拟M1门禁卡、写CUID白卡的一些研究记录
近来小区安装了智能门禁,但只配发了一张门禁卡,不方便使用,于是产生了用手机模拟门禁卡,或者复制一张门禁卡的想法。
全栈程序员站长
2022/06/28
27.1K0
手机NFC模拟M1门禁卡、写CUID白卡的一些研究记录
【实战】RFID Hacking(1):看我如何突破门禁潜入FreeBuf大本营
某天,偶然间拿到了FreeBuf Pnig0s同学的工卡信息,终于有机会去做一些羞羞的事情了ಥ_ಥ…… … 事了拂衣去,深藏功与名…… 引子 以下故事纯属虚构,如有雷同,纯属巧合。 我应聘了一个大型
用户1631416
2018/04/12
4.6K0
【实战】RFID Hacking(1):看我如何突破门禁潜入FreeBuf大本营
通过一道CTF题目学习M1卡的AES认证机制 | 技术创作特训营第一期
随着射频识别技术的发展,射频卡被广泛应用在了门禁控制、金融支付、库存管理等场景。在此背景下,各种安全认证机制应运而生,为保护个人隐私和敏感数据提供了可靠的保障,本文将通过一道 CTF 题目介绍 M1 卡采用的 AES(Advanced Encryption Standard)认证机制,揭示其背后的原理。
yichen
2023/08/08
1K1
通过一道CTF题目学习M1卡的AES认证机制 | 技术创作特训营第一期
Proxmark3 PM3 简单入门操作
偶然在 c0sMx 的博文中看到有关 Proxmark3 的相关科普文章,对这方面比较感兴趣,了解到身边也有这类需求随即购买了 pm3 实践探讨一下..
2Broear
2024/03/12
2.4K0
Proxmark3 PM3 简单入门操作
ssh-keygen生成的id_rsa文件的格式
Your identification has been saved in /home/gemfield/.ssh/id_rsa. Your public key has been saved in /home/gemfield/.ssh/id_rsa.pub
战神伽罗
2019/11/26
5.1K0
相关推荐
RFID 破解基础详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验