前言#
随着 NFC 技术越来越广泛的运用于生活中的各方各面,如 NFC 感应支付,NFC 门禁卡,NFC 音乐标签,以及智能手机越发广泛的支持了 NFC 功能,通过向手机内写入 NFC 标签以便利日常的需求不断增加。本文针对传统的 Mifare Classic® EV1 类型卡片(后文简称 M1)提供复制写入教程。更加先进的 CPU 卡,其他类型卡片不在本文讨论范围
关于设备,你需要准备一台 Windows 电脑,一块 pn532 模块,以及目标卡片和源卡片
请确认你的手机有可以添加 nfc 卡片的系统钱包
如果你手机有钱包,但是难以添加你需要的门禁卡,这篇文章或许可以帮到你。如果你已经 dump 出数据,可跳转到最后一节
概述#
市面上大多数卡片都是运行于 13.56 MHz 的标准 NFC 卡片,如一些小区的门禁卡,而我们的安卓设备所搭载的正是这一频率的 NFC 芯片。
要想完整的复制一张 NFC 卡片,主要有两个部分:1 是卡号(既 0 扇区内容),二是数据。
关于卡号#
在正常符合规范的 M1 UID 卡中,0 扇区被锁死,要解决此问题必须使用支持写 0 扇区的 CUID 卡,利用手机内置的模拟芯片等等
如利用 CUID 卡,直接通过写卡器写入文件即可自然完成,不多做赘述
利用手机模拟的过程因人而异,后文将介绍
本文将利用来自xcicode
的MifareOneTool
进行破解和写卡(后文简称为 M1T)
A GUI Mifare Classic tool on Windows(停工/最新版v1.7.0)
关于数据#
以下是一张 M1 卡的结构
卡片有0-15
共 16 扇区,每个扇区都有0-3
四块,0~2
块为数据块,3
块为控制块,控制块内存储KeyA
,KeyB
,以及该块的控制字
,控制字,既标志两个密钥对块的访问权限的字符,M1 卡中每个扇区的权限都是独立的
我们需要复制的卡片大多数都会经过加密,将之分为以下三种卡片:
- 非加密卡:所有扇区密钥均为
FFFFFFFFFFFF
- 半加密卡:部分扇区密钥为
FFFFFFFFFFFF
- 全加密卡:所有扇区密钥均不为
FFFFFFFFFFFF
非加密卡可以直接添加
假如你需要复制的 M1 卡恰好有加密(无论全加密还是半加密都可以破解),且符合SAK08/18/28
,则本文适合你。
破解卡内数据#
首先通过上文提供的存储库下载 M1T,并将你的 PN532 正确连接到电脑,点击 "检测设备" 按钮
不出意外的话,你已经连接上了设备
再将你需要破解的卡片放置在 PN532 上,依次点击扫描卡片 -> 检测加密(这一步可以判断卡是半加密还是全加密)-> 一键解原卡,不出意外的话此时你已经获得了你的半加密卡的数据,可以跳转到下一节进行写入了。
图为成功解锁时的界面,此时应当弹出文件管理器要求为保存的文件命名
倘若是全加密卡呢?
点击下载 mfcuk(工具来自互联网)
解压,双击打开MFCUK
,输入 1 并回车
之后理论上可以经过超级漫长的等待获取密钥了(笑)
(其实是笔者尝试复刻当时的运行结果失败了没法接着写,有空再补,至少我确定全加密卡可破)
写入手机#
到这一步已经很简单了,只需要一个简单的写入思路就行:
对于一部分手机内置钱包,选择写入空白卡时第一步会要求复制卡号,之后要求使用写卡器写入数据
先放置原卡获得卡号,再用 M1T 写入获得的数据即可
而对于另一部分手机内置钱包 (如 VIVO),在创建空白卡时会得到随机卡号,必须更换思路:
根据这一信息,我们就得到了复制卡片的另一个思路:先复制一张注定失败的卡片,再写入数据。
手机上选择添加实体门禁卡,复制本来的卡片,此时手机内的卡片应为有卡号而全空(即使有数据,所有密钥已知)
再 M1T 打开高级功能选项卡先执行一次清 M1,得到空白数据后写入 dump 出的原卡数据即可。
至此,你的手机已写入你所预期的门禁卡。
如果你想要写入一些其他功能数据,比如打开某个链接,播放音乐,连接 WiFi...... 可以搜索NFC Tools Pro
进行个性化编辑
未能完成的实验#
在给我自己手机刷入类原生系统后,我一直在受苦于无法完美的模拟 NFC 卡片,刷不动小区门禁,现在换回原系统了又没法实验,以下提供关于类原生一项实验思路,希望可以研究出类原生系统复制门禁的办法。
- 安装Card Emulator Pro
- 利用该软件复制一次 UID,激活卡片并尝试在 M1T 上读取卡片信息
- 类似上述无法直接写入 UID 的解决办法所得结论,尝试直接写入数据
本人并非专业,不了解钱包模拟 NFC 的实现原理,只能留一个悬念了。