uid和cuid的区别

uid和cuid的区别,第1张

uid卡是IC卡的一种,卡片的block可以任意修改,重复修改。cuid卡可以重复写入、重复擦写、可以随意写入信息的IC空白卡,里面不含任何信息的,需要配套机器才能使用。扩展资料

1、uid卡:所有区块可被重复读写,卡片ID可改且使用后门指令更改ID,ID可被重复修改,响应后门指令(意味着可被使用后门指令检测是否为克隆卡的机器发现)。

2、cuid卡:所有区块可被重复读写,卡片ID可改且使用普通写指令更改ID,ID可被重复修改,不响应后门指令(意味着不容易被反克隆系统发现)。

1、序言

先说下简单门禁系统的原理:

(1)IC卡激活:门禁卡管理员将卡片放到读卡器、这时软件读取到IC卡的UID序列号信息(相当于身份z号码),将这个UID录入数据库激活IC卡。

(2)刷卡:刷卡时读卡器读取到UID,查询数据库,如果数据库中存在这个UID则表示有效用户,继而控制继电器断电,此时电磁锁开门。

 

不亦买的RC522模块采用SPI通信、据说也有串口通信的不过成本较高。大家可以看看这个模块的主要配件:卡和读卡器。

2、加载RC522库文件

 Arduino本身有个 *** 作RC5200的库,如下图所示,打开Arduino开发工具中管理库

搜索"RC522",选择"MFRC522"安装即可

点击"More info"可以跳转到github地址https://github.com/miguelbalboa/rfid ,下文会有提及。

安装完毕后,可以看到关于MFRC522的库示例,有读取UID、获取区块信息、修改UID、卡片信息复制等

 

注:一般而言IC卡是不能修改0扇区0区块的UID和厂商信息数据,这些是生产时就确定下来的的(关于IC卡的存储结构有空再发文介绍,小伙伴们可以去网上查阅这方面资料也挺多的),能够全扇区修改的俗称UID卡才支持修改UID,一些不负责的门禁系统厂家仅根据UID来判断用户身份是不可靠的,一个简单的方法是在读之前先写UID *** 作,如果可写那么这张卡就是UID卡即复制卡,判断无效,系统也可记录是哪张IC卡被复制了用于追溯非法行为,仅供交流与学习,请勿用于非法用途哦

3、模块引脚接线

此处是网络上大部分相关文章没有提及的,只告诉了如何接线,却不告诉我们为什么这样接,甚至连Arduino版本都不说清楚。

我们打开ReadNUID的示例里面有各种版本Arduino与RC522的引脚连接图,我们按照这个接线即可。在上文提及的github项目主页也有介绍。

RC522一共8个引脚,如图所示:

3.3V供电、GND接地不用多说,IRQ是中断才用到的此处没有用到可以不接,其余5个引脚接法如下表所示:

/* Typical pin layout used:

* -----------------------------------------------------------------------------------------

* MFRC522 Arduino Arduino ArduinoArduino Arduino

* Reader/PCD Uno/101 Mega Nano v3Leonardo/Micro Pro Micro

* Signal Pin Pin Pin PinPin Pin

* -----------------------------------------------------------------------------------------

* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST

* SPI SS SDA(SS) 1053D1010 10

* SPI MOSIMOSI 11 / ICSP-4 51D11ICSP-4 16

* SPI MISOMISO 12 / ICSP-1 50D12ICSP-1 14

* SPI SCK SCK 13 / ICSP-3 52D13ICSP-3 15

*/

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

 

4、程序代码

此处测试的Arduino型号是Arduino Nano V3.0,其他型号请结合上表修改引脚号。

示例代码读取UID,并将其分别以十进制和十六进制输出到串口,简化版如下:

#include <SPI.h>

#include <MFRC522.h>

#define SS_PIN 10

#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN)//实例化类

// 初始化数组用于存储读取到的NUID

byte nuidPICC[4]

void setup() {

Serial.begin(9600)

SPI.begin()// 初始化SPI总线

rfid.PCD_Init()// 初始化 MFRC522

}

void loop() {

// 找卡

if ( ! rfid.PICC_IsNewCardPresent())

return

// 验证NUID是否可读

if ( ! rfid.PICC_ReadCardSerial())

return

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)

// 检查是否MIFARE卡类型

if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

piccType != MFRC522::PICC_TYPE_MIFARE_4K) {

Serial.println("不支持读取此卡类型")

return

}

// 将NUID保存到nuidPICC数组

for (byte i = 0i <4i++) {

nuidPICC[i] = rfid.uid.uidByte[i]

}

Serial.print("十六进制UID:")

printHex(rfid.uid.uidByte, rfid.uid.size)

Serial.println()

Serial.print("十进制UID:")

printDec(rfid.uid.uidByte, rfid.uid.size)

Serial.println()

// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡

rfid.PICC_HaltA()

// 停止读卡模块编码

rfid.PCD_StopCrypto1()

}

void printHex(byte *buffer, byte bufferSize) {

for (byte i = 0i <bufferSizei++) {

Serial.print(buffer[i] <0x10 ? " 0" : "")

Serial.print(buffer[i], HEX)

}

}

void printDec(byte *buffer, byte bufferSize) {

for (byte i = 0i <bufferSizei++) {

Serial.print(buffer[i] <0x10 ? " 0" : "")

Serial.print(buffer[i], DEC)

}

}

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

39.

40.

41.

42.

43.

44.

45.

46.

47.

48.

49.

50.

51.

52.

53.

54.

55.

56.

57.

58.

59.

60.

61.

62.

63.

64.

65.

66.

67.

68.

69.

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

39.

40.

41.

42.

43.

44.

45.

46.

47.

48.

49.

50.

51.

52.

53.

54.

55.

56.

57.

58.

59.

60.

61.

62.

63.

64.

65.

66.

67.

68.

69.

5、运行结果

依次将卡A、卡B、卡A放到RC522读卡区,串口打印信息如下


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8029804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存