NFCを使ってみる。

NFCのリーダライタを買ったので遊んでみた。

リーダライタ

リーダライタはSmartcard FocusACS ACR122を買いました。
もっと安いものもありますが、ドキュメントが付いているので、ACR122にしてみました。ついでに、カード型とコイン型とシール型のNFC tagも買った。

NFC読み書きソフト

LLで読み書きするソフトを探してみたら、Pythonで動くRFIDIOtが対応していた。

インストール手順

OSはWindows XPです。
python本体をインストールして、さらに必要なパッケージをインストール。

  • pycrypt 暗号のパッケージ
  • pyserial シリアル通信のパッケージ
  • pywin32 win32のパッケージ
  • pyscard スマートカードのパッケージ

RFIDIOtは展開するだけで良い。RFIDIOtconfig.pyが設定ファイルです。設定はreadernum = 0に変更した。

使用例

RFIDIOtの使用例

情報取得

isotype.pyでNFC tagの情報を取得できる。

>isotype.py
C:\Python26\lib\site-packages\Crypto\Hash\SHA.py:6: DeprecationWarning: the sha
module is deprecated; use the hashlib module instead
  from sha import *
isotype v0.1k (using RFIDIOt v0.1x)
  Reader: PCSC ACS ACR122 0


     ID: 04789A811E2580
       Tag is ISO 14443 A, part 3


    ATR: 3B8F8001804F0CA0000003060300030000000068
         3B  Initial Header
           8  No TA1, TB1, TC1 only TD1 is following
            F  15 bytes historical data follow
             8  No TA2, TB2, TC2 only TD2 is following
              0  T = 0
               0  No TA3, TB3, TC3, TD3 following
                1  T = 1
                 Detected STORAGECARD
     Historical: 804F0CA00000030603000300000000
                 80  Status indicator may be present (COMPACT-TLV object)
                   4F  Application Identifier presence indicator
                     0C  12 bytes follow
                 RID:  A000000306  PC/SC Workgroup
                           PIX:  03000300000000
                            SS:  03  ISO 14443 A, part 3
                            Name:  0003  Mifare Ultra light
                                 RFU:  00000000
                                 Checksum TCK: 68 (OK)
読み込み

readtag.pyでNFC tagをリードできる。

>readtag.py
C:\Python26\lib\site-packages\Crypto\Hash\SHA.py:6: DeprecationWarning: the sha
module is deprecated; use the hashlib module instead
  from sha import *
readtag v0.1d (using RFIDIOt v0.1x)
  Reader: PCSC ACS ACR122 0


ID: 04789A811E2580
  Data:
    Block 00: 04789A6E811E25803A48000000000000 .x.n..%.:H......
    Block 01: 811E25803A48000000000000FFFFFFFF ..%.:H..........
    Block 02: 3A48000000000000FFFFFFFF00000000 :H..............
    Block 03: 00000000FFFFFFFF0000000000000000 ................
    Block 04: FFFFFFFF000000000000000000000000 ................
    Block 05: 00000000000000000000000000000000 ................
    Block 06: 00000000000000000000000000000000 ................
    Block 07: 00000000000000000000000000000000 ................
    Block 08: 00000000000000000000000000000000 ................
    Block 09: 00000000000000000000000000000000 ................
    Block 0a: 00000000000000000000000000000000 ................
    Block 0b: 00000000000000000000000000000000 ................
    Block 0c: 00000000000000000000000000000000 ................
    Block 0d: 00000000000000000000000004789A6E .............x.n
    Block 0e: 000000000000000004789A6E811E2580 .........x.n..%.
    Block 0f: 0000000004789A6E811E25803A480000 .....x.n..%.:H..

    Total blocks:  15
書き込み

うまく動かないので、あとで書く。