使用PN532进行IC卡的Linux和Windows平台的数据读取以及写入过程
作者:互联网
强调:勿用于非法用途
本文介绍使用PN532进行IC卡的Linux和Windows平台的数据读取以及写入过程。
注意: 在树莓派平台只做到了卡片解密,并没能写入UID卡,我不清楚具体原因,最后我在Win10平台进行了卡片的写入。欢迎学习和参考。
前言
现在大多数IC卡都有加密,我最开始想用RC522解决这个问题。因为之前我也有过MFRC522的使用经验,在网上看过一些文章,有些人说RC522功能不够强(相比于PN532),也有人说他尝试过用RC522进行密码破解,于是我尝试了。我将RC522采用SPI通信连接上树莓派3B+,最后止步于安装libnfc,因为libnfc不支持RC522。为了节约时间,没有再耗下去。
PN532我也不太清楚功能到底如何,买来尝试一下,毕竟它便宜,还能买得起。相比于PM3,PN532便宜太多了。新品只需21.5元。
我买的红色板子,需要自己焊接排针,简简单单地使用十块钱的烙铁就搞好了。
PN532支持三种连接方式
- SPI
- I2C
- UART
对于这几种连接方式,我在树莓派上采用的是I2C,在Win10上采用的是UART。
Win10平台
Win10平台最推荐,方法最简单,流程也简单。下面介绍硬件连接和软件操作。
1. 选择PN532通信方式
拨动芯片上的开关到对应的通信方式,我采用的是I2C。如图:
2. 串口转USB
大多数网上的帖子用的是CH340,由于我手上已经有了CH341,同样可以实现接口转换。
用杜邦线进行连接:
- 5V <==> VCC
- GND <==> GND
- RX <==> TX
- TX <==> RX
注意跳帽的连接:配图的跳帽不是UART通信方式,需要挪一个位置。让2,3连接。
3. Win10软件操作
这是网上找到的程序。可以读SAK08的M1卡,进行常规解密,我就尝试了校园卡和小区门禁,都成功了。随后我试了一下另一个学校的校园卡SAK20的卡,这个不支持。SAK20属于CPU卡,现目前没有解密方法。软件使用方法就不介绍了,网上太多了。
树莓派3B+平台
1. 选择PN532通信方式
树莓派可以用多种连接方式,我只采用了I2C,其他没试过。需要拨动开关。开关位置可见Win10平台配图。
2. 树莓派与PN532连接
用杜邦线进行连接:
- 5V <==> 5V
- GND <==> GND
- SDA <==> SDA
- SLA <==> SLA
树莓派引脚图:
3. 树莓派软件配置
1). 设置树莓派
sudo raspi-config
在rasp-config里将i2c打开,重启之后应该有/dev/i2c-1
执行 i2cdetect -y 1 ,如果出现的不全是横杠,就代表连接成功了。
2). 在树莓派上安装必要的库
sudo apt-get install libusb-dev libpcsclite-dev automake autoconf
libpcsclite-dev这个库我好像没安装成功,我直接执行后面的了。
编译安装libnfc
wget http://dl.bintray.com/nfc-tools/sources/libnfc-1.7.1.tar.bz2
tar -xf libnfc-1.7.1.tar.bz2
cd libnfc-1.7.1
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
然后添加配置文件
cd /etc
sudo mkdir nfc
sudo nano /etc/nfc/libnfc.conf
如下:
# Allow device auto-detection (default: true)
# Note: if this auto-detection is disabled, user has to manually set a device
# configuration using file or environment variable
allow_autoscan = true
# Allow intrusive auto-detection (default: false)
# Warning: intrusive auto-detection can seriously disturb other devices
# This option is not recommended, so user should prefer to add manually his/her device.
allow_intrusive_scan = false
# Set log level (default: error)
# Valid log levels are (in order of verbosity): 0 (none), 1 (error), 2 (info), 3 (debug)
# Note: if you compiled with --enable-debug option, the default log level is "debug"
log_level = 1
# Manually set default device (no default)
# To set a default device, users must set both name and connstring for their device
# Note: if autoscan is enabled, default device will be the first device available in device list.
device.name = "Itead_PN532_I2C"
device.connstring = "pn532_i2c:/dev/i2c-1"
然后放上一张卡,执行
nfc-list
显示如下:
[email protected]:~# nfc-list
nfc-list uses libnfc 1.7.1
NFC device: pn532_i2c:/dev/i2c-1 opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): XX XX
UID (NFCID1): XX XX XX XX
SAK (SEL_RES): XX
libnfc到这里安装结束了
安装mfoc和mfcuk(以下作为参考,我只使用了mfoc)
mfoc(破解key,读出数据到文件):https://github.com/nfc-tools/mfoc
mfuck(破解全加密数据):https://github.com/nfc-tools/mfcuk
后两个下载解压后切换到目录里执行:
automake
autoconf
autoreconf -is
./configure
make
make install
读写数据
mfoc -O output.mfd # 读出卡中的数据保存为文件output.mfd
mfoc 是读取数据,如果有加密就自动破解,如果全加密,就没法读取,可用mfuck命令破解。
mfcuk -C -R 0:A -v 2
写入数据
nfc-mfclassic w a output.mfd output.mfd # 写入数据,w小写,如果大写是强写0扇区
由于每张卡的0扇区信息(UID)不一样,0扇区又不可写,不同的卡没法互写。但是可以买一张0扇区可写的UID卡。
最后,破解的文件无法写入,就算我的卡是UID卡,不清楚原因。我选择Win10了平台进行卡的写入。
参考文章链接如下:
树莓派+pn532使用NFC,由树莓派俱乐部总结
在树莓派上使用 PN532 NFC读卡器[0]——libnfc的安装配置
复制MIFARE Classic小区门禁卡记录
软件下载
标签:树莓,nfc,Windows,IC卡,PN532,default,device,libnfc 来源: https://blog.csdn.net/qq_20243873/article/details/117959826