使用PN532向小米手环写入加密卡(复制门禁卡)

基本流程图

基本流程图

所需准备的材料

  1. 原加密卡一张 ,新卡一张(如果是加密卡推荐买CUID);
  2. windows系统安装MifareOneTool软件 (不行用虚拟机跑Windows系统;文末会给MifareOneTool软件的下载方式);
  3. 接口转换器 PL2303或CH340
  4. 读卡模块 PN532
  5. 杜邦线若干;

PL2303(或CH340)与PN532的连接方式

实物连接如图:

实物连接图片(不要动PN532下方的拨码开关)

连接示意如图:

请添加图片描述(这里实际上是UART的连接,只是PN532的丝印给的是I2C的,为了方便新手画了个简易的图片)

门禁卡复制门禁卡

请添加图片描述

图片步骤已经很详细了,这里补充几点注意事项

  1. 2步骤说的放门禁卡是放要解密的门禁卡,不是新卡;
  2. 检测卡牌 SAK=08 就说明有戏;
  3. 第五步,是拿下原卡,放上新卡,然后点击
    扫描卡牌后有效界面

手环复制门禁卡

这里面原理不多讲,感兴趣可以自己搜,跟着步骤来就行。

1、重复<门禁卡复制门禁卡>教程的前四步

请添加图片描述

2、修改并保存后缀为.mfd文件

打开编辑器
1、在上方菜单栏中,点击高级操作模式->Hex编辑器

打开之前保存的文件
2、打开之前保存的后缀为.dump文件(否则直接点击0扇区出现的是乱码,是错误的);
复制序列码
3、点击扇区0,后选中第0块的前8位数字,复制(右击或ctrl+c);

请添加图片描述
4、之后点击文件->新建,新建一个文件

请添加图片描述
5、点击工具->修改UID,并在弹窗界面内粘贴复制的8位序列号
请添加图片描述
6、点击另存为(此文件为.mfd为后缀的文件)

利用后缀为mfd文件开卡,用dump文件写全卡密

这一步较为简单,就不再一一粘贴图片了。

1、在高级操作模式中点击CUID写,将后缀为mdf的文件写入新卡;
请添加图片描述
2、将手环放置新卡上,在手机APP界面(例如:小米运动)选择卡包->添加新门卡->模拟门卡,用于开卡。
3、开卡完成后,请将手环放置在PN532读卡模块上,进行<门禁卡复制门禁卡>教程的第五步,如图,点击CUID写->选择后缀为dump的文件写全卡密。
在这里插入图片描述

一些注意事项

1、在使用PN532过程中,请保证该模块不受干扰。即模块旁边不要出现不相干的其他物品,或将该模块放置于金属物品之上。
2、除手环复制门禁卡最后一步,只能写入63/64个块。其他写入过程都应该是64/64。如果没有写入完成,再次写入一次(或多次)即可。
写入成功

附件

1、MifareOneTool软件
链接:https://pan.baidu.com/s/183vNFiJsvz5zb2oqo48FUQ?pwd=y8qg
提取码:y8qg
2、CH340和PL2303驱动
链接:https://pan.baidu.com/s/1sLshQmFnQn7kVCYwaZh0Lg?pwd=fi5f
提取码:fi5f

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,我可以为您提供一些指导。 首先,您需要将PN532连接到STM32单片机上。PN532可以通过SPI或I2C接口与STM32通信。您需要根据您的PN532模块和STM32单片机的硬件接口来选择相应的接口方式。 接下来,您需要编写代码来初始化PN532和STM32之间的通信接口,并使用PN532库读取IC。以下是一个简单的示例代码: ```c #include <PN532_SPI.h> #include <SPI.h> PN532_SPI pn532spi(SPI, 10); // 创建 PN532_SPI 实例 void setup() { Serial.begin(9600); while (!Serial); // 等待串口打开 pn532spi.begin(); uint32_t versiondata = pn532spi.getFirmwareVersion(); if (! versiondata) { Serial.print("Didn't find PN53x board"); while (1); // 程序停止 } Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC); Serial.println(); // 配置 PN532 为读取 IC 模式 pn532spi.SAMConfig(); } void loop() { uint8_t success; uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // 存储 UID uint8_t uidLength; // UID 长度 // 等待 IC 的到来 success = pn532spi.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength); if (success) { Serial.println("Found an ISO14443A card"); Serial.print("UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes"); Serial.print("UID Value: "); for (uint8_t i=0; i < uidLength; i++) { Serial.print(" 0x");Serial.print(uid[i], HEX); } Serial.println(""); } delay(1000); } ``` 这个示例代码使用SPI接口与PN532通信,并读取Mifare ISO14443A协议的IC。如果您的IC不是Mifare协议,您需要根据您的IC类型更改代码中的协议类型。 希望这能帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值