由于学校出入部分门禁需要刷卡,但是本人经常忘记带实体校园卡,于是决定复制校园卡至手机NFC卡包。
开始前工作
硬件准备
请自行购买PN532、CH340并安装CH340驱动
硬件连线按照RX->TX、TX->RX、VCC->VCC、GND->GND连接即可(如下图)
下载MifareOneTool工具
破解原卡片
打开M1T,点击“检测连接”,待检测到PN532后,将卡片放到PN532线圈上。点击“扫描卡片”,成功检测到卡片后,点击一键解原卡。解密约耗时10分钟,解密后,保存DUMP文件至本地。
修剪DUMP文件
由于手机模拟的NFC卡片基本为S50(SAK08),直接写入破解获得的DUMP文件会报错写入失败,报错“加载的s50卡文件大小异常”。
本修剪方法仅适用于卡片数据大小小于1KB(即数据全在卡片前1KB空间),否则修剪后卡片可能无法正常使用
使用WinHex打开DUMP文件
在WinHex中导入DUMP文件
裁剪DUMP文件大小
点击“编辑”->“定义选块”,在弹出的输入框中的结束位置输入3FF(表示截取前1KB)
保存新的DUMP文件
点击“编辑”->“复制选块”->“另存为新文件”,将修改后的文件保存至电脑(注意:后缀最好以DUMP或者MFD结尾,否则可能无法被M1T找到)
写入到手机NFC
手机复制卡号
在手机中复制一张带卡号的空白卡(不要创建空白卡再写入,因为手机的空白卡卡号是无法修改的)
修改M1T设置
取消选中M1T软件设置的“自动判断Key(Beta)”选项,此选项可能导致写入卡时报错“错误: 卡片被移开”
经后期重复实验,发现不取消选择此选项也能正常写入。故判断应无需进行此步操作,仅需对DUMP文件进行裁剪即可。上述报错可能因DUMP文件与卡片实际大小不符导致的报错。
写入到卡片数据
在M1T软件首页点击“写C/FUID卡”,弹窗选择取消即可
写入成功
最后在门禁上测试是否写入成功(可能会出现部分区块写入失败,比如提示62/64、63/64等,可以忽视,只要功能正常即可)
附录:如何将S70卡片内容复制到S50实体卡片
如果你直接将上述裁剪过的S70数据写入到S50卡片中,第一次写入将会成功,但如果后续使用M1T再次写入,M1T可能因卡片数据问题而错误的将卡片识别为S70卡片,拥有4096-byte大小的ROM空间,而导致写入失败。
对于此问题,最简单的方法即为将S70数据先写入到手机NFC卡包中,然后使用已知密钥将手机NFC卡片数据读出。此时读出的卡片数据为标准的S50卡片数据。再将此卡片数据写入S50卡片即可。
注意,在操作时,请注意密钥选择,否则可能导致写入/读取失败。最笨的方法可以将KeyA、KeyB、默认密钥全部尝试一遍。