zoukankan      html  css  js  c++  java
  • 用树莓派3B+和 ITEAD PN532 读取、破解、写入M1卡

      这是一篇介绍如何用树莓派使用PN532的随笔,介绍了具体的使用步骤。

    首先介绍一下:

    ①、IC卡是非接触式的智能卡,里面一般是一个方形线圈和一个小芯片(用强光照着可以看到)。M1卡是IC卡的一种,一般水卡、公交卡都是这种。UID卡是M1的复制子卡,与M1完全兼容。M1卡0扇区的内容可读不可写,UID卡所有扇区均可读可写,所以M1卡的数据能复制到UID卡中,而不能复制到M1卡中。

        平常用的M1卡有16个扇区,一个扇区4个块,一个快16个字节,一共1K数据。每个扇区的前三个块是数据区,最后一个块是keyA、控制段、keyB的存储区域,分别是6个字节,4个字节,6个字节。第0扇区的第0块记录了制卡厂家的或者卡的ID信息,只可读,不可写。

    ②、ITEAD PN532是为嵌入式设计的PN532板子,可以用树莓派控制(我用window读取不出来),它有2种数据传输模式,SPI和I2C。

    操作步骤:

    用的是I2C接口传输数据,SET0-->HSET1-->L

    连线方法:

    树莓派<----->PN532

      4口   <-----> VCC

      6口   <-----> GND

      3口   <-----> SDA/TX

      5口   <-----> SCL/RX

    另附一张树莓派GPIO图:

    ①、在树莓派上安装必要的库:

     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操作模块:

     libnfc(操作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,读出数据到文件):https://github.com/nfc-tools/mfoc
    mfuck(破解全加密数据):https://github.com/nfc-tools/mfcuk
    后两个下载解压后切换到目录里执行:
    automake
    autoconf
    autoreconf -is
    ./configure
    make
    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。

    ⑤、测试

     重启一下,看看有没有i2c设备:ls /dev 或者 lsmod

     执行  i2cdetect -y 1  ,如果出现的不全是横杠,就代表连接成功了,如下图:

     如果全是横杠的话,拨一下pn532的vcc线再插上试试。ps:我的也是死活显示没有,然后重插一下就有了。

    放上一张卡执行 nfc-list,如果正常显示下面内容就表示读取到卡了。

    如果提示closed,就是板子没正常接通。

    ⑤、读写数据:

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

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

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

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

     我把读出来的数据写入它自己里可以写入,暂时没有UID卡,就没办法将数据写入空卡里。

    参考:http://ju.outofmemory.cn/entry/204150

  • 相关阅读:
    自食其力!ASP.NET 4打造HTML5视频控件
    delphi 拖放操作http://topic.csdn.net/t/20030306/10/1497344.html?1026446129
    delphi开发的小技巧http://www.cto360.com/a/5000086716.shtml
    TThread 类 详细解析 (原帖 华夏黑客同盟)http://www.cppblog.com/Khan/archive/2006/11/21/15503.html
    delphi 多线程同步 互斥变量,信号量,事件对象。http://www.bianceng.cn/Programming/Delphi/200912/12689.htm
    如何利用socket进行HTTP访问http://blog.csdn.net/sanfengshou/archive/2011/03/07/6228250.aspx
    TCP, Scoket, HTTP
    Delphi开发嵌入式IE浏览器监控程序http://www.pasou.cn/edu/html/List3899_3.html
    Delphi实现网络蚂蚁和FlashGet的悬浮窗口,拖动
    delphi调用C#写的web服务例子(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);)
  • 原文地址:https://www.cnblogs.com/panda-blog/p/9998446.html
Copyright © 2011-2022 走看看