2023.5更新:
技术日新月异啊,现在模拟0扇区已经是一个公开的技术了
小米手环8已经支持手机(包括iPhone)控制手环自动模拟加密卡卡号啦,对于开门禁的需求,仅模拟全加密卡的卡号就够用啦,再也不需要下面繁琐步骤diy啦
原文写于2021.3:


模拟加密卡想法由来已久,但由于网络上方法步骤参差不齐,看了很多很多资料最近才终于弄清楚了,现进行一个整理,并试图写一个教程。

注意!
本教程仅教学模拟相关知识与如何使用手环模拟全加密校园卡,仅供个人学习,请勿修改数据金额,由此带来的任何非法后果均由个人承担。
本教程只涉及0扇区uid模拟教学,不涉及金额等其他信息修改教学


文章目录

  • 材料准备
  • 模拟原理
  • 模拟教程
  • step0:环境准备
  • step1: 破解加密卡信息(全加密卡)
  • step2:制作空白卡
  • step3:模拟
  • step4:写原卡信息,激活手环
  • 其他模拟校园卡的方式
  • 1.stm32/arduino+RC522
  • 2.小米手机直接模拟
  • 软件下载
  • 参考资料


材料准备

硬件:pn532、USB转串口、4根杜邦线、UID卡(注意本教程不适用于cuid/ufuid卡!)、你要模拟的手环(我的是华为荣耀手环5)+连接手环的手机/含有nfc的手机

nfc复制M1到手机 android开发 nfc复制教程_小米手机


软件:蛐蛐、MifareOneTool、驱动(文末附下载链接)

模拟原理

在学习过程中,我看了许多教程,包括淘宝资料、博客、b站视频。由于每个步骤又有多种实现方式,因此容易把初学小白弄得云里雾里,因此在这里首先说明模拟加密卡的原理。

nfc复制M1到手机 android开发 nfc复制教程_小米手机_02

  • 手环不能直接模拟加密卡,因为加密卡除了扇区0(存uid的扇区)还含有其他信息
  • 为了让手环可以模拟,我们需要制作一张只有扇区0(uid同原加密卡相同)含有信息的空白UID卡
  • 之所以使用UID卡,是因为它可以使用后门特殊指令,达到对uid(卡号)进行修改的目的
    这在软件写uid这一步中会自动执行
#5.写0块后门指令1(7bit模式)
send:40
recv:0A 
#6.写0块后门指令2
send:43 
recv:0A
  • 为了制作这张满足需求的空白卡,我们要先读出原加密卡的0扇区信息,这涉及到使用蛐蛐进行破解(全加密卡)
  • 用手机控制手环,模拟空白卡后的步骤,是为了将原加密卡信息(除了0块之外的63块信息)写入手环中
  • 一些名称:s50卡=加密为sak08的卡=常见的校园卡=MIFARE Classic 1K

模拟教程

step0:环境准备

你需要使用4根杜邦线将usb转串口与pn532连接,当然也有一些商家是直接连接好的
GND ---- GND
VCC ---- +5V/VCC
TXD ---- RXD
RXD ---- TXD
如果你没有安装过驱动,还需要安装usb转串口的驱动:下方软件资料包中有,也可百度搜索ch340驱动下载安装

step1: 破解加密卡信息(全加密卡)

首先我们来测试环境是否搭好以及卡是否是全加密卡

打开MifareOneTool,点击检测连接,应该出现以下信息

nfc复制M1到手机 android开发 nfc复制教程_pn532_03


然后将校园卡放在pn532上,点击扫描卡片,这一步可以帮助我们了解卡片的信息,如果是sak08则大概率可以复制

nfc复制M1到手机 android开发 nfc复制教程_手环模拟_04


然后点击一键解原卡,如果是全加密卡,你将会看到以下内容:

nfc复制M1到手机 android开发 nfc复制教程_手环模拟_05


不用着急,接下来我们就开始破解它!

关闭MifareOneTool,打开蛐蛐,仍然将原卡放置在pn532上,点击右上角:全加密卡破解秘钥

然后将开始进行嗅探破解,耐心等待,这个过程需要30-60分钟的时间,当右侧出现3个以上的相同秘钥时,则很有可能是正确的。

以下是我放着卡破解出去吃了个烧烤再回来看到的结果:

nfc复制M1到手机 android开发 nfc复制教程_小米手机_06


那么右侧出现的就很有可能是秘钥,我们先将其保存好,然后复制黏贴到上方已知秘钥中,再点击使用秘钥读取

nfc复制M1到手机 android开发 nfc复制教程_小米手机_07


读取也需要30分钟左右的时间,读取完成后显示如下:

nfc复制M1到手机 android开发 nfc复制教程_门禁卡_08


原卡信息将保存为蛐蛐同目录下的key.dump,为了防止被覆盖,强烈建议你复制出来保存好!我们复制出来把它命名为原卡.dump

step2:制作空白卡

关闭蛐蛐,再次打开MifareOneTool,如下依次点击高级操作模式——hex编辑器——文件——打开,打开前面保存的原卡.dump

nfc复制M1到手机 android开发 nfc复制教程_小米手机_09


上下切换扇区以显示信息

我们将扇区0的第0块信息复制出来,然后点击文件——新建——先点击一下扇区1然后点击扇区0(这一步的目的是初始化新文件)——再将信息黏贴到新文件的扇区0的第0块——点击修改扇区——然后另存为空白卡.dump,注意是另存为!是dump文件!接下来,我们将空白的UID卡放到pn532上,选择写UID卡,打开空白卡.dump文件,将其写入uid卡中,达到写入卡号的目的。

nfc复制M1到手机 android开发 nfc复制教程_pn532_10


当如下显示时,即代表写入成功:

nfc复制M1到手机 android开发 nfc复制教程_pn532_11

step3:模拟

将手环连接手机,选择模拟卡功能,模拟我们刚刚写好的UID卡(注意是模拟,不是创建空白卡!)

ps:通常加空白卡功能只有安卓手机的APP里面才有,苹果手机里面被阉割了找不到,记得用安卓手机哦,我使用的是华为运动健康APP。

nfc复制M1到手机 android开发 nfc复制教程_pn532_12


等待一段时间后模拟成功即可

step4:写原卡信息,激活手环

在step3中我们模拟了0扇区0块,相当于已经写入了uid,现在还需要写入另外的63块信息(加密数据),使得手环完全模拟原卡
我们打开蛐蛐,把uid卡放在pn532上,点击“使用默认密钥读取”

这一步的目的是使得与蛐蛐同目录下的key.dump文件中的秘钥(原卡的秘钥)被蛐蛐软件识别并加载,这样知道了秘钥才可以等下写入手环加密卡数据

nfc复制M1到手机 android开发 nfc复制教程_nfc_13


然后拿走uid卡,放上手环,浏览文件选择原卡.dump,点击写入,当看到下面的信息时,就说明写入成功了!

nfc复制M1到手机 android开发 nfc复制教程_手环模拟_14


如果是其他信息,则说明写失败,记得多试几次,或者从手机端删除此卡,再重复上述步骤。

接下来你就可以快乐地去刷手环了!

其他模拟校园卡的方式

1.stm32/arduino+RC522

该方法需要在stm32上建立工程,使用rc522的库函数向522发送指令,实现修改白卡uid的目的。我们在博客上仍旧可以搜索到很多资料,这种方法的自由度大,适合理解原理和高级diy玩家。见:

522长这样

nfc复制M1到手机 android开发 nfc复制教程_nfc_15

2.小米手机直接模拟

据舍友测试,MIUI12下带有NFC功能的小米手机可以直接模拟全加密卡了,当时我弄了一个晚上还没模拟出来,而舍友直接模拟就解决了,看得我那叫一个气啊……
注意,这是手机,如果想弄到手环上,还是按上面的步骤来吧

软件下载

我把需要用到的软件打包上传了,点击这里即可免费下载,不需要积分