首页
社区
课程
招聘
[原创]从NFC卡破解分析看ACR122U读写原理
发表于: 2018-7-29 09:47 29283

[原创]从NFC卡破解分析看ACR122U读写原理

2018-7-29 09:47
29283

       本文介绍一个NFC卡简单破解的全部流程,并对破解过程中的读写原理进行探讨。在逆向分析中,我们会接触多种多样的工具,在使用工具的同时,希望大家思考一下原理,便于更深入的进行了解和学习。

注:本文内容仅做技术研究,请勿用于非法用途,否则后果自负

目录:

        0x1.工具及卡片介绍

        0x2.卡片信息读取

        0x3.卡片数据分析及修改

        0x4.卡片信息写入


接下来步入正题,先从背景介绍开始。之前购得ACR122U之后闲置了一段时间,最近办理了一张餐饮消费会员卡,于是忍不住拿来分析一下。

0x1.工具及卡片介绍

先说一下会员卡,该卡片是M1卡。

所谓的M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列,常用的有S50及S70两种型号,截止到2013年11月4日,已经有国产芯片与其兼容,利用PVC封装M1芯片、感应天线,然后压制成型后而制作的卡即是智能卡行业所说的M1卡。



工具是读写器硬件设备ACR122U以及配套的用于读写的PC软件。

    ACR122U NFC读写器是一款基于13.56 MHz非接触(RFID)技术开发出来的连机非接触式智能卡读写器。它符合ISO/IEC18092近场通信(NFC)标准,支持Mifare®卡、ISO 14443 A类和B类卡、以及全部四种NFC标签。

为了确定该读写器的主芯片,将其拆解,确认读写的主芯片为NXP(恩智浦)的PN532:

0x2.卡片信息读取

    0x2.1  卡片信息读取

该设备的提供的读取程序为M1卡服务程序:

电脑安装驱动以后,连接读卡器,卡片靠近读卡器,选择读卡器后,点击开始破解,即可等待破解完成。完成后我们就可以拿到M1卡的二进制文件信息,文件扩展名为dump,大小为1KB。

下图为读取到的dump文件及分析结果标注:

0x3.卡片数据分析及修改

分析过程我们需要取多组数据,进行分析来确认不同数据所代表的的意义,此处我们仅分析第10及第11两个扇区。



根据上图内容,我们可以看到,10扇区的块0没有数据,10扇区块2和11扇区块0相同,11扇区的块1和块2相同,所以我们仅仅分析10扇区块1,11扇区块0和块1。

接下来我们对比不同余额时对应的数据:

我们继续看下扇区10块1

0x4.卡片信息写入

0x1.工具及卡片介绍

先说一下会员卡,该卡片是M1卡。

所谓的M1芯片,是指菲利浦下属子公司恩智浦出品的芯片缩写,全称为NXP Mifare1系列,常用的有S50及S70两种型号,截止到2013年11月4日,已经有国产芯片与其兼容,利用PVC封装M1芯片、感应天线,然后压制成型后而制作的卡即是智能卡行业所说的M1卡。



工具是读写器硬件设备ACR122U以及配套的用于读写的PC软件。

    ACR122U NFC读写器是一款基于13.56 MHz非接触(RFID)技术开发出来的连机非接触式智能卡读写器。它符合ISO/IEC18092近场通信(NFC)标准,支持Mifare®卡、ISO 14443 A类和B类卡、以及全部四种NFC标签。

为了确定该读写器的主芯片,将其拆解,确认读写的主芯片为NXP(恩智浦)的PN532:



为了确定该读写器的主芯片,将其拆解,确认读写的主芯片为NXP(恩智浦)的PN532:



0x2.卡片信息读取

    0x2.1  卡片信息读取

该设备的提供的读取程序为M1卡服务程序:



电脑安装驱动以后,连接读卡器,卡片靠近读卡器,选择读卡器后,点击开始破解,即可等待破解完成。完成后我们就可以拿到M1卡的二进制文件信息,文件扩展名为dump,大小为1KB。

下图为读取到的dump文件及分析结果标注:



我们先了解一下M1卡的存储结构,M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,存储结构如图所示:
                                                   

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-1-11 19:30 被kanxue编辑 ,原因:
收藏
免费 2
支持
分享
打赏 + 4.00雪花
打赏次数 2 雪花 + 4.00
 
赞赏  yjmwxwx   +2.00 2019/03/05
赞赏  junkboy   +2.00 2018/07/29
最新回复 (32)
雪    币: 201
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
标记,学习一下
2018-7-29 12:32
0
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持
2018-7-29 13:09
0
雪    币: 1694
活跃值: (253)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
junkboy 支持
感谢
2018-7-29 13:15
0
雪    币: 47147
活跃值: (20420)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
感谢分享!
2018-7-29 16:34
0
雪    币: 3712
活跃值: (1401)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
MARK
2018-7-29 17:52
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
2018-7-29 23:14
0
雪    币: 2719
活跃值: (1589)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
硬件设备充值之后都是用这种办法写入数据的么?
2018-7-30 09:28
0
雪    币: 1694
活跃值: (253)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
Vn小帆 硬件设备充值之后都是用这种办法写入数据的么?
卡还有CPU卡等多种类型,校验方式还有滚动码或者联网验证等方式,文章所分析的是比较简单的场景
2018-7-30 09:37
0
雪    币: 2719
活跃值: (1589)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
黯夏子风 卡还有CPU卡等多种类型,校验方式还有滚动码或者联网验证等方式,文章所分析的是比较简单的场景
本来想找个来改数据的  后来想想 别人不会那么傻  会做联网校验的
2018-7-30 09:48
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
2018-7-30 10:06
0
雪    币: 13
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
MARK
2018-7-30 10:12
0
雪    币: 413
活跃值: (637)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
好东西,写的详细。留存
2018-8-4 22:03
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最后一张图,从数据上看Key应该是6661而图上写成了6662不知道是否手误写错了?
2018-8-8 18:15
0
雪    币: 1694
活跃值: (253)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
15
newmean 最后一张图,从数据上看Key应该是6661而图上写成了6662不知道是否手误写错了?
手误,已更正
2018-8-8 19:08
0
雪    币: 3
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
吧软件也给了吧
2018-8-19 02:48
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
起步阶段的文章写的很详细,对于初学者一目了然
2018-8-21 13:29
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
18
黯夏子风 感谢[em_1]
好像重要环节没讲到,
1.在不知道M1扇区密钥的情况下,是怎么破解出密钥,原理?
2.如果M1所有的扇区的密钥都被修改了(不为默认全0xFF或全0x00)的情况下,按你的方法是否还可以破解出所有扇区的密钥?
2018-8-21 14:11
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
mark,慢慢学习
2018-8-21 14:17
0
雪    币: 220
活跃值: (18)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
20
秘钥破解原理是什么?
2018-8-28 09:46
0
雪    币: 1694
活跃值: (253)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
21
yegu 好像重要环节没讲到, 1.在不知道M1扇区密钥的情况下,是怎么破解出密钥,原理? 2.如果M1所有的扇区的密钥都被修改了(不为默认全0xFF或全0x00)的情况下,按你的方法是否还可以破解出所有扇 ...
1. 一般采用简单秘钥验证某扇区秘钥正确后,利用M1卡的验证漏洞进行非简单密码扇区的秘钥破解
2. 如果所有扇区秘钥均被修改,则验证漏洞无法直接利用,一般采用暴力破解某扇区秘钥后,再行利用验证漏洞进行其他扇区秘钥的破解
2018-8-29 13:55
0
雪    币: 1694
活跃值: (253)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
22
kingdog 秘钥破解原理是什么?
卡与读卡器之间第一次建立通信时,会发送随机数,但产生的随机数并非是真的随机数,而是伪随机。
所以一般可以利用默认密码验证出某扇区秘钥后,利用该漏洞从其他扇区的加密后的伪随机数中得到对应扇区秘钥
2018-8-29 14:00
0
雪    币: 279
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
佩服佩服!
2018-9-4 15:52
0
雪    币: 144
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
标记,学习一下 ,手环的蓝牙接口有研究没
2018-11-23 21:08
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
问下怎么知道666164696c38就是秘钥的?
2018-11-23 22:36
0
游客
登录 | 注册 方可回帖
返回
//