ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

使用PN532进行IC卡的Linux和Windows平台的数据读取以及写入过程

2021-06-17 20:32:24  阅读:670  来源: 互联网

标签:树莓 nfc Windows IC卡 PN532 default device libnfc


强调:勿用于非法用途
       本文介绍使用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。如图:
展示PN532上的通信方式选择的位置

2. 串口转USB

       大多数网上的帖子用的是CH340,由于我手上已经有了CH341,同样可以实现接口转换。
CH341连接说明
       用杜邦线进行连接:
       - 5V <==> VCC
       - GND <==> GND
       - RX <==> TX
       - TX <==> RX
       注意跳帽的连接:配图的跳帽不是UART通信方式,需要挪一个位置。让2,3连接。

3. Win10软件操作

这是网上找到的程序。可以读SAK08的M1卡,进行常规解密,我就尝试了校园卡和小区门禁,都成功了。随后我试了一下另一个学校的校园卡SAK20的卡,这个不支持。SAK20属于CPU卡,现目前没有解密方法。软件使用方法就不介绍了,网上太多了。
PN532上位机

树莓派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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有