はじめに
の記事を元に、FeliCa Lite-SのRC-S300での読み書きライブラリーとツールをAntigravity CLIで作りました。
です。ビルド手順はここのREADME.mdをご覧ください。
PC/SCを使いWindows/Linux両対応です。
ユーザ領域(SPAD)の割り振り
FeliCa Lite-SにはSPAD0〜SPAD13までのユーザ領域がありますが、
- SPAD0〜SPAD9は、NDEF(NFCタグ)で書き込みにMAC認証必要
- SPAD10は、ユーザ名で読み書き共にMAC認証必要
- SPAD11は、パスワードで読み書き共にMAC認証必要
- SPAD12、SPAD13は、ドメイン名で読み書き共にMAC認証必要
と割り振りました。※SPAD10以降を秘密領域としてロックしているため、NDEF(URL等)として実際に書き込めるサイズは約139バイトまでになります。
fls
flsは読み書きのツールです。
引数なしで実行するとヘルプがでます。また、README.mdも参照してください。
追記: 一次発行すると鍵は書き換えられませんが、ユーザ領域は認証つきで書き換えられます。
fls_ws
追記: サービス化する方法を追加
追記: ポート番号を変更しました。Keycloakログインの例を追加し、-pオプションも追加しました。
fls_wsはカード情報をWebSocketでサーブします。WebSocketのアドレスはws://localhost:48080/wsです。ユーザ名とNDEFのみのシンプルなJSONを返します。
サンプルWebアプリのクライアントも組み込まれていますので、http://localhost:48080にブラウザでアクセスしてください。
また、ws_client.pyはpythonで書かれたクライアントです。
Keycloakのログインの例をkeycloakフォルダに追加しました。JSONにパスワードも含める、-pオプションを追加しました。keycloak/README.mdを参照してください。
サービス化については、LinuxはREADME.systemd.mdをWindowsはREADME.WindowsService.mdを参照してください。
追記:
を書きました。
pam_fls.so
pam_fls.soは、Linuxのpamモジュールです。
Ubuntuは/lib/x86_64-linux-gnu/security/へ、Fedoraは/usr/lib64/security/へコピーします。/etc/pam.d/のファイルに
auth sufficient pam_fls.so
と書き込んで使います。
SPAD10のユーザ名のみで認証します。
FelicaCredentialProvider
FelicaCredentialProviderはWindowsの認証dllです。インストールと使い方はFelicaCredentialProvider/README.mdを参照してください。
追記: Raspberry Pi OS(Trixie)
Raspberry Pi OS(Trixie)では、pcscdがpolkitを使うようになっていて、一般ユーザ権限ではアクセス拒否されます。
PCSCD_ARGS="--disable-polkit"
と/etc/default/pcscdを作成して、
sudo systemctl restart pcscd
してください。