想起之前买了个PN532
设备,然后就捡起来体验一下
注意一下左上角有个模式切换开关:
我这里使用的是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 即可。
-
安装nfc操作模块
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
-
安装mfoc(破解key,读出数据到文件)
git clone https://github.com/nfc-tools/mfoc.git
cd mfoc
automake
autoconf
autoreconf -is
./configure
make && sudo make install
-
安装mfuck(破解全加密数据)
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
网友评论