はじめに
できたこと
- nfcpyのインストール
- FeliCaの認識
- ICOCAの交通履歴閲覧
環境
- Ubuntu 18.10
- PaSoRi
- Python 2.7
- お手持ちのFeliCa
手順
Python はインストール済みと想定.
nfcpyを公式リファレンス通りにインストールする.
nfcpyのリファレンス
sudo apt update
sudo apt upgrade
sudo apt -y install python-pip
sudo apt -y install python-dev
sudo apt -y install libusb-dev
sudo apt -y install python-usb
sudo pip install -U nfcpy
sudo reboot
#必ず再起動してください!私はココでつまずきました..
lsusb
#PaSoRiをPCに差し込み,Sonyデバイスが確認できたらOK
次に以下のコマンドを実行し,
python -m nfc
以下の結果が出れば成功!
失敗ならば,リファレンスを読み直してください.
No handlers could be found for logger "nfc.llcp.sec"
This is the 0.13.5 version of nfcpy run in Python 2.7.15+
on Linux-4.18.0-13-generic-x86_64-with-Ubuntu-18.10-cosmic
I'm now searching your system for contactless devices
** found SONY RC-S380/P NFC Port-100 v1.11 at usb:001:004
I'm not trying serial devices because you haven't told me
-- add the option '--search-tty' to have me looking
-- but beware that this may break other serial devs
結果
セットアップは終了したので,FeliCaの読み取りをしてみたいと思います.
nfcpyでFeliCaの情報閲覧
git clone https://github.com/nfcpy/nfcpy.git
cd nfcpy/examples/
sudo python ./tagtool.py --device usb:XXXX:XXXX
#XXXX:XXXXはlsusbで出したデバイスID
実行すると,
[nfc.clf] searching for reader on path usb:XXXX:XXXX
[nfc.clf] using SONY RC-S380/P NFC Port-100 v1.11 at usb:001:004
** waiting for a tag **
上記のような結果が出ると成功です!
実際にICOCAでも置いて読み取ってみましょう!
Type3Tag 'FeliCa Standard (RC-S915)' ID=**************** PMM=**************** SYS=****
(一部修正)
でましたね.この情報は,IDmといいます.
(引用) IDmについて
IDmは、FeliCaのICチップ製造時に、ICチップに記録され書き換えができない固有のID番号である。IDmは8byte(16桁)の数字で、トレーサビリティと個体識別を目的としてソニーが製造するICチップに書き込まれ同じ番号が流通しないようにソニーが管理をおこなっている。編集は不可能であり比較的簡単に利用できることから、応用範囲が広く、このID番号を使ったアプリケーション・システムが広く普及している。
交通履歴閲覧
次にICOCAの交通履歴が閲覧してみましょう.
git clone https://github.com/m2wasabi/nfcpy-suica-sample
cd nfcpy-suica-sample/
sudo python suica_read.py
=== 14 ===
端末種: 改札機
処理: 運賃支払
日付: 18-12-16
入線区: 神戸新交通-ポートアイランド
入駅順: 三宮
出線区: 神戸新交通-ポートアイランド
出駅順: 京コンピュータ前
残高: 2243
BIN:
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
=== 15 ===
端末種: 改札機
処理: 運賃支払
日付: 18-12-16
入線区: 西日本旅客鉄道-大阪環状紀勢本線
入駅順: 鶴橋
出線区: 西日本旅客鉄道-東海道本神戸線
出駅順: 三ノ宮
残高: 2523
BIN:
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
=== 16 ===
(一部修正)
20件の交通履歴が出ます.
残高とかもわかっちゃうので割と実用的ですね.
考察
今回は主にセットアップだけだったが,次回はラズパイと連携してドアのオートロックを制作する予定.
割とやってて面白かったので,IDmとか勉強してFeliCaのセキュリティについて追求できたらいいなと思う.
参考
https://nfcpy.readthedocs.io/en/latest/topics/get-started.html#installation
https://github.com/m2wasabi/nfcpy-suica-sample
https://qiita.com/keitasumiya/items/7bdb3ccf55176ee731d4
https://uepon.hatenadiary.com/category/nfc
https://qiita.com/xshell/items/55302a588b5927dde6b6
http://www.orangetags.jp/words/idm