LoginSignup
32
36

More than 5 years have passed since last update.

MacでPasori(RC-380S)を利用しFeliCaを読む

Posted at

Macをはじめ、UNIXでFeliCaを読み取る場合、Pythonでnfcpyを使うのが楽ですね。
2.6x以上で3.xには対応していないようです。Macには最初から2.7.xが入っているようです。

下準備

必要なツール

とりあえずHomebrewとpipのインストールがまだの人はインストールお願いします。
Homebrewに関しては本家のスクリプトをコピー。pipについては、

curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python

などとします。

OpenSSL問題

普通にインストールするとOpenSSLに起因したエラーがでます。どうやらOpenSSLのバージョンが古いとダメなようです。これに対し、2016年8月頃までは、

brew install openssl
brew link openssl --force

既にインストールされてる場合はbrew upgrade openssl

として、Macにプリインストールされたopensslを強制的にbrewのものにすることで問題が解決できたのですが、最近 --forceでの強制リンクができなくなったようで、手動でリンクを作成する必要があるようです。

私の場合、下記のようにopensslインストール後、必要なシンボリックリンクを作成することで対応しました。nfcpyにかぎらず、OpenSSLが古い問題はこれで解決できるかと。

brew install openssl

ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/libcrypto.dylib
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/libssl.dylib

これを行わないと、AttributeError: dlsym(0x7f8328411ff0, EC_KEY_set_public_key_affine_coordinates): symbol not foundというようなエラーが出ます。

Pasoriを認識させる

読取り装置であるPasoriを認識させるために幾つかのライブラリをインストールします。

$ brew install libusb
$ brew install libusb-compat

$ sudo pip install pyusb
$ sudo pip install libusb1
$ sudo pip install pyserial

nfcpyの取得とサンプルの実行

nfcpyはBazzar(gitみたいなバージョン管理ツール)経由かpip経由で取得できるようです。
ここではBazzarをインストールし、取得します。

#Bazzarのインストール
brew install bzr
#Bazzarを利用してnfcpyを取得(gitでいうclone)
bzr branch lp:nfcpy

とするとnfcpyフォルダができます。その下にあるexamples/tagtool.pyというIDm等を読み取るサンプルを実行してみます。

cd nfcpy
python examples/tagtool.py show

すると、

[nfc.clf] searching for reader on path usb
[nfc.clf] using SONY RC-S380/P NFC Port-100 v1.11 at usb:253:006
** waiting for a tag **
Type4ATag MIU=255 FWT=0.038664

こんな感じになりました。おサイフケータイはNFC Type4 Tagとして認識されるようです。

32
36
2

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
32
36