1、前言

通过本文你可以了解到PN523的通信协议,并且能够对RFID卡进行读写和复制操作。这里不会深度探讨理论,而是重点展示如何使用。

2、PN523串口通信协议

2.1 唤醒模组

按照模组的文档来看,在每次上电的时候需要唤醒,让他退出休眠模式。
对其发送:

55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00

将会收到回复

00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00

这帧没啥变化,就不进行解析了

2.2扫描卡

先举例一帧数据

00 00 FF 04 FC D4 4A 01 00 E1 00

其中 00 00 FF 04 FC 属于包头

数据

说明

00 00 FF

固定头

04

数据包长度

FC

包长度校验(04+FC=0X10)

其中 D4 4A 01 00 属于数据包

数据

说明

D4 4A

指令标识码

01

寻卡数量

00

通信速率 106kbps

其中E1 00 属于包尾

数据

说明

E1

校验(0x100-(0xD4+0x4A+0x01+0x00))

00

固定尾巴

发送之后模组会回复两帧,一帧是应答,一帧是回复

00 00 FF 00 FF 00 
00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 94 8A 3B 0B 6A 00

数据

说明

00 00 FF

固定头

0C

数据包长度

F4

包长度校验

D5 4B

指令的标识码(是主机发送的指令 加 1,主机发的 D4 AA,回 D5 4B)

01

目标卡 1

01

找到目标卡的数量

00 04

Mifare S50 卡,00 44是UltraLight卡

08

卡的容量 08=1K

04

UID 的字节数

94 8A 3B 0B

卡的 UID

6A

(0X100—累加和)校验

00

包尾

2.3 授权

这里就是对数据包进行修改,完整请求如下:

00 00 FF F F1 D4 40 01 60 03 FF FF FF FF FF FF C8 70 47 E9 26 0

上文讨论过的包头包尾去掉,仅仅看数据包

D4 40 01 60 03 FF FF FF FF FF FF C8 70 47 E9

数据

说明

D4 40

命令格式

01

数据大于6字节这里为1

60

验证密码A(命令字节,具体含义见下表)

03

在第三块存储密码

FF FF FF FF FF FF

密码

94 8A 3B 0B

UID

命令类别

数据

说明

0x60 / 0x61

Authentication A / Authentication B

0x30

16 bytes reading

0xA0

16 bytes writing

0xA2

4 bytes writing

0xC1

Incrementation

0xC0

Decrementation

0xB0

Transfer

0xC2

Restore

返回帧数据:

00 00 FF 03 FD D5 41 00 EA 00

这里只关注 D5 41 00中的最后一位,如果是00则表示验证成功。
补充说明一下,上面举例帧是验证的块3,也就是我们仅能对扇区0进行操作,如何想对其他块操作需要先进行授权哟,但是UltraLight卡不需要授权就可以直接读写。

2.4 读

同样首先来看一帧完整请求

00 00 FF 05 FB D4 40 01 30 02 B9 00

其中数据包是D4 40 01 30 02

数据

说明

D4 40

命令格式

01

数据大于6字节这里为1

30

命令字,读16字节数据

02

从第二块开始读

返回两帧数据

00 00 FF 00 FF 00

00 00 FF 13 ED D5 41 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 72 00

提取数据帧

D5 41 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

数据

说明

D5 41

命令格式

00

成功

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

读取结果

2.5 写

完整请求

00 00 FF 15 EB D4 40 01 A0 02 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F D1 00

数据

D4 40 01 A0 02 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

数据

说明

D4 40

命令格式

01

大于 6 字节

A0

16字节写数据指令

02

往第 02 块写

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

写入数据

返回数据:

00 00 FF 03 FD D5 41 00 EA 00

D5 41 返回的指令标示符,00 说明写入成功

3、M1卡、UID卡和UltraLight卡

MI卡的0块是保存UID的不能进行修改,也就是如果你想复制什么卡的话,最好不要选用M1卡,而是选择能够修改任何位置的UID卡。UltraLight卡是没有密码的,并且每块大小只有四个字节,也就是在写入的时候选择命令请选择0xA2来写哦。

4、使用软件进行读写

这里简单介绍下使用上位机软件进行读写卡的操作

rfid 卡空间 加密 加密rfid复制_数据


首先将你的模块和串口模块连接,然后把串口模块插上电脑,再打开软件。之后按照2-3-4的点就好了,UltraLight的话是点不动4的。

rfid 卡空间 加密 加密rfid复制_串口_02


这时就可以进行读写操作咯,读和写的右边都有一个下拉菜单,用来选择读写的块,我只写了前面几个块,并且没有给输入功能。读一次读16个字节,无论哪种卡都是这样,但是写会根据卡的不同,写入16字节或是4字节。卡的类型在左下角可以看到。例如我对块2进行写和读,额对了,授权哪里我只对第一个扇区授权了,之后软件版本迭代会弄个下拉框的。。。忘记了 - -|.

下面三个图分别是,先读块2,写块2,再读块2

rfid 卡空间 加密 加密rfid复制_上位机_03


rfid 卡空间 加密 加密rfid复制_RFID_04


rfid 卡空间 加密 加密rfid复制_串口_05

5、使用软件进行复制

这里是使用网上别人编写的程序进行复制,界面如下

rfid 卡空间 加密 加密rfid复制_数据_06


先点击PN532来串口连接,然后点击读整卡来把M1卡所以类容读取出来,读取出来后点击左边的三角可以保存。

rfid 卡空间 加密 加密rfid复制_rfid 卡空间 加密_07


将读取的文件保存起来,换一个白卡后,再点击写整卡

rfid 卡空间 加密 加密rfid复制_数据_08

就可以复制卡的类容了,但是0块由于是UID的位置M1卡是不能被改写的,如果你需要复制门禁卡的话,可以写在UID卡里面而不是M1卡,价格十几块钱20张的样子。

6、下载

PN532上位机读写程序
PN532上位机读写winfrom源码
PN532对RFID复制工具.