LoginSignup
47
44

More than 3 years have passed since last update.

Python で PaSoRiのセットアップ と FeliCaの読み取り

Last updated at Posted at 2019-01-07

はじめに

できたこと

  • 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の情報閲覧

nfcpy
git clone  https://github.com/nfcpy/nfcpy.git
cd nfcpy/examples/
sudo python ./tagtool.py --device usb:XXXX:XXXX
#XXXX:XXXXはlsusbで出したデバイスID

実行すると,

FeliCa認識待ち
[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でも置いて読み取ってみましょう!

IDm
Type3Tag 'FeliCa Standard (RC-S915)' ID=**************** PMM=**************** SYS=****

(一部修正)
でましたね.この情報は,IDmといいます.
(引用) IDmについて

IDmは、FeliCaのICチップ製造時に、ICチップに記録され書き換えができない固有のID番号である。IDmは8byte(16桁)の数字で、トレーサビリティと個体識別を目的としてソニーが製造するICチップに書き込まれ同じ番号が流通しないようにソニーが管理をおこなっている。編集は不可能であり比較的簡単に利用できることから、応用範囲が広く、このID番号を使ったアプリケーション・システムが広く普及している。

交通履歴閲覧

次にICOCAの交通履歴が閲覧してみましょう.

nfcpy-suica-sample
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

47
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
44