[Android] NFC MIFARE Ultralight を初期化するアプリ

NFC、MIFARE Ultralight を手に入れました。このカードについて詳しくは、暮井 慧ファンクラブ 参照。

fanclub-card

あらかじめデータの書き込みはそれなりの価格がしたため、未初期化のカードを手に入れたのだけど、普通の NFC ライターアプリでは書き込みができませんでした……。

NFC Mifare タグ専用 NDEF 化ツール

Mifare を初期化できるアプリで、唯一見つけることができたのが、この Android アプリ NFC Mifareタグ専用NDEF化ツール。神ツールです!

ndeftool

NFC をかざすだけで、Mifare のタイプを判断し、ボタンタップで初期化(NDEF というフォーマット化)してくれます。

NDEF 化後は、一般的な NFC リーダー/ライターアプリで読み書きができます。

MIFARE Ultralight 仕様など

最初は、仕様などを読んで自力で初期化しようとしたけど、時間がかかりそうなので断念。

仕様は、MIFARE Ultralight :: NXP SemiconductorsMIFARE Ultralight as Type 2 Tag (pdf) です。

【FeliCa】PaSoRi RC-S380対応 FeliCa+Mifareアクセスライブラリ公開 のコードを利用して、NFC 内のデータを読み書きしてました。

OTP(One Time Programmable、各 bit 1度のみ 0 から 1 へライトできる)と呼ばれる 4byte 分の領域があり、ここがすべて 0 だと未初期化と判断されるようです。仕様によると(6.5.1 INITIALISED Formatting Procedure)、次のように決まるようですね。

  • byte 0: E1h (マジックナンバー)
  • byte 1: 10h (NFC Forum Type 2 Tag Operational version number)
  • byte 2: 06h (データ領域 byte 数を 8 で割った値、MIFARE Ultralight は 48byte / 8 = 6)
  • byte 3: 00h

OTP 領域のみの変更で、一般的な? NFC リーダー/ライターは反応だけするようになったが、ライトできない状態のままで、かつ上記コードからもカードを検出できなくなってしまいここで断念。さらにきちんと 4page 目からのデータ領域に NDEF メッセージをライトする必要がありそう(仕様を見ると、03 00 FE でよさそう?)。

Windows PC で NFC の読み書きには、SONY 非接触ICカードリーダー/ライター PaSoRi(パソリ) USB対応 RC-S380 を今回購入して使用しました。Windows 8.1 で問題なく動いてます。