美文网首页
树莓派B 使用PN532 V3

树莓派B 使用PN532 V3

作者: 碎念枫子 | 来源:发表于2019-06-06 17:35 被阅读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 即可。

    • 安装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

    相关文章

      网友评论

          本文标题:树莓派B 使用PN532 V3

          本文链接:https://www.haomeiwen.com/subject/tveuxctx.html