网络攻防:M1卡小实验

这几周一边刷ctf题一边学习实验室的东西,既然做题之中都掌握了,就把小学期的总结先鸽了,八月中旬在写吧

把刚写完的M1卡实验的报告贴上

智能卡基础实验报告

名字

沈俊贤

周京汉

李睿燮

一、实验原理与步骤

实验用具简介

(1)RFID系统组成

RFID 技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。最基本的 RFID 系统由三部分组成:

  • 标签(Tag,即射频卡):由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。
  • 阅读器:读取(在读写卡中还可以写入)标签信息的设备。
  • 天线:在标签和读取器间传递射频信号。
(2)读卡器工作原理

MCU通过对读卡器芯片内寄存器的读写来控制读卡器芯片,读卡器芯片收到MCU发来的命令后,按照非接触式射频卡协议格式,通过天线及其匹配电路向附近发出一组固定频率的调制信号(13.56 MHz)进行寻卡,若此范围内有卡片存在,卡片内部的LC谐振电路(谐振频率与读卡器发送的电磁波频率相同)在电磁波的激励下,产生共振,在卡片内部电压泵的作用下不断为其另一端的电容充电,获得能量,当该电容电压达到2 V时,即可作为电源为卡片的其他电路提供工作电压。 当有卡片处在读卡器的有效工作范围内时,MCU向卡片发出寻卡命令,卡片将回复卡片类型,建立卡片与读卡器的第一步联系,若同时有多张卡片在天线的工作范围内,读卡器通过启动防冲撞机制,根据卡片序列号来选定一张卡片,被选中的卡片再与读卡器进行密码校验,确保读卡器对卡片有操作权限以及卡片的合法性,而未被选中的则仍然处在闲置状态,等待下一次寻卡命令。密码验证通过之后,就可以对卡片进行读写等应用操作。

(3)RC522模块

MF RC522提供了3种接口模式:高达10 Mb/s的SPI、I2C总线模式(快速模式下能达400 kb/s,而高速模式下能达3.4 Mb/s)、最高达1228.8 kb/s的UART模式。买来的模块采用了第一种模式——四线制SPI,通信中的时钟信号由 Arduino 产生,MF RC522芯片设置为从机模式,接收来自 Arduino 的数据以设置寄存器,并负责射频接口通信中相关数据的收发。

数据的传输路径为:Arduino 通过 MOSI 线将数据发到 MF RC522,MF RC522 通过 MISO 线发回至 Arduino。

实验内容

利用 Arduino UNO 和 RFID-RC522 模块自制读卡器,读取非接触式智能卡的类型和序列号,尝试输出卡 中各区块存储的数据内容。通过实验,了解身份证、校园一卡通、公交一卡通、带闪付功能的银行卡、打水 卡、洗澡卡、门禁卡等日常接触或使用的非接触式智能卡的类型,分析比较各种卡的安全性。测试自制读卡 器可读取多远距离内的卡,隔着钱包、口袋是否仍能读取;把卡放在安全卡套内,测试是否能被读取。

实验步骤

  • 硬件连接与接线
  • 完成代码的编写
  • 完成代码的编译与上传
  • 打开串口监视器,并对不同的智能卡进行识别

二、硬件与接线

各个引脚的功能介绍如下:

  • SDA -- 串行数据线(IIC接口时的I/O线);在SPI接口中为NSS(从机标志管脚)
  • SCK -- 连接MCU的SCK信号
  • MOSI -- MCU输出,RC522接收(即主设备输出,从设备输入)
  • MISO -- RC522输出,MCU接收(即从设备输出,主设备输入)
  • IRQ -- 中断请求输出
  • GND -- 接地
  • RST -- 复位
  • 3.3V -- VSS,工作电压,若使用的事5V的MCU,注意分压

因此实验的连线如下:

RFID Arduino UNO
VCC 3.3V
RST 5V
GND GND
MISO 12
MOSI 11
SCK 13
NSS 10
IRQ (不接)

三、实验程序设计

我们首先引入了MFRC522的库,在程序的最开始#include <MFRC522.h>,来应用其提供的接口去进行操作。使用MFRC522 mfrc522(SS_PIN, RST_PIN);创建好一个,然后用mfrc522.PCD_Init();来进行初始化。

然后在loop段,调用mfrc522中的三个函数完成。

1
2
3
4
5
6
7
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));

代码如上,上面三个函数的功能分别为:寻找新卡,选中一个卡,然后获得里面的信息。

四、实验结果与总结

对试验箱中包含的白卡、蓝色门禁卡,以及水卡、洗澡卡,我们的程序能够有效的识别卡内的信息,并逐块读取,但是对于二代身份证和学生卡,没有办法识别卡内的信息,通过了解得知,无法识别的这两种卡属于B型卡,协议是ISO 15693B,无法被RC522识别。

对能识别的卡的部分结果截图如下:

白卡

蓝色门禁卡

水卡

洗澡卡

而对于识别距离的实验,我们发现一般来说不同的卡有不同的最远识别距离,但是相差并不太大,主要是在4cm-5cm处,再多就无法识别了。

只要是满足这个距离,无论是隔着钱包还是隔着口袋都能够读取信息,但是放在安全卡套内,就无法被读取了。

五、关于智能卡安全的心得体会

智能卡的信息还是非常容易被读取、复制和篡改的,所以平常在放置智能卡的时候最好还是将他们储存在安全卡套之中。