树莓派B 使用PN532 V3

2019-06-06  本文已影响0人  碎念枫子

想起之前买了个PN532设备,然后就捡起来体验一下

PN532 V3
注意一下左上角有个模式切换开关:
我这里使用的是I2C模式,于是把开关切换成了 1 0
树莓派三代 B
这个是我的树莓派
树莓派Pin脚对照
我的接线如下:(BOARD编码)
GND -> 6 地线
VCC ->4 电源
SDA/TX  -> 2 SDA.1
SCL/RX  ->3  SCL.1

接线完成之后中间PWD有个黄色指示灯会亮

 sudo apt-get install libusb-dev libpcsclite-dev          //这是libnfc依赖的库
 sudo apt-get install automake autoconf  

如果安装libusb-dev和libpcsclite-dev报版本错误安装失败“ Unable to correct problems, you have held broken packages.”,
可执行命令:aptitude install libusb-dev ,然后依次输n、y、y 即可。

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
git clone https://github.com/nfc-tools/mfoc.git
cd mfoc
automake
autoconf
autoreconf -is
./configure
make && sudo make install
git clone https://github.com/nfc-tools/mfcuk.git
cd mfcuk
automake
autoconf
autoreconf -is
./configure
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"

如果你的设备没有开启I2C,则开启一下
执行 sudo raspi-config ,在第5项里打开i2c

保存之后重启一下

pi@raspberrypi:~/mfoc $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- 24 -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --     

如果输入命令i2cdetect -y 1 返回的全部都是 -- 则没有读取出来数据
通过nfc-list 命令可以查看相关的结果
如果是下面这样的

 pi@raspberrypi:~/mfoc $ nfc-list
nfc-list uses libnfc 1.7.1
error   libnfc.bus.i2c  Error: wrote only -1 bytes (10 expected).
error   libnfc.driver.pn532_i2c Unable to transmit data. (TX)
pn53x_check_communication: Input / Output Error
error   libnfc.bus.i2c  Error: wrote only -1 bytes (10 expected).
error   libnfc.driver.pn532_i2c Unable to transmit data. (TX)
nfc-list: ERROR: Unable to open NFC device: pn532_i2c:/dev/i2c-1

可能是SDA SCL线插错了,或者最开始说的模式没有调对,调整好重插一下PN532设备就可以了
调整好之后是这样的

pi@raspberrypi:~/mfoc $ nfc-list
nfc-list uses libnfc 1.7.1
NFC device: pn532_i2c:/dev/i2c-1 opened

这个时候往PN532上面放一张IC卡 再次输入命令

pi@raspberrypi:~/mfoc $ 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): 00  04  
       UID (NFCID1): 29  0f  82  73  
      SAK (SEL_RES): 08  

就能读取到数据了

mfoc -O output.mfd    // 读出卡中的数据保存为文件output.mfd 

mfoc 是读取数据,如果有加密就自动破解,如果全加密,就没法读取,可用mfuck命令破解。

nfc-mfclassic w a  output.mfd output.mfd    //  写入数据,w小写,如果大写是强写0扇区

由于每张卡的0扇区信息(UID)不一样,0扇区又不可写,不同的卡没法互写。但是可写入0扇区可写的UID卡。

参考链接:
https://www.rabbittu.com/raspi-pn532/
https://www.cnblogs.com/panda-blog/p/9998446.html

上一篇下一篇

猜你喜欢

热点阅读