MIFARE Ultralight に読み書きするアプリ

2012-01-18   treby   技術メモ  , このエントリーをはてなブックマークに追加

今週末のNFCハッカソンに向けて、ちょろちょろっと作ってみました。開発にはSDK for NFC Starter Kitを使用していて、基本的には同キット付属のサンプルプログラムの応用でできています。

スクリーンショット

MIFARE Ultralight 読み書きアプリのスクリーンショット。

書き込む場所はData領域に絞っています(LockエリアとかOTPエリアとかは一回書き込んだら大変なことになりそうな気がするため)。

ダウンロード

とりあえず、zipで上げてみます。

RW_MifareUltralight.zip(15.7KB)

必要なもの

ハードウェア

ソフトウェア

リーダ・ライタ(PaSoRi)を入れても3,000円くらいの投資でNFCを試せる!素敵!

Mifareってなんぞや?

TypeA(ISO/IEC 14443 TypeA)とも呼ばれるNFCの一種です。Mifare Ultralight は MIFARE の中でも最弱、使い捨て前提でイベントのチケットなんかで使われることを想定して作られているそうです。安価なのが一番の売りなこともあって、MIFARE Ultralight(MF0ICU1)のメモリ容量は64bytesしかありません(うち、データ領域は48bytes)。

MIFARE Ultralight の構成を以下に示します。

MIFARE Ultralightの構成図。MF0ICU1 Functional specification MIFARE Ultralightより引用。

本記事では各エリアの解説は割愛します(勉強中です)。今回のアプリのGUIは、この構成図を元に設計しました。ですので、実際に動かしてみると各エリアにどんなデータが入っているか直観的に分かると思います。

使い方

Read

MIFARE Ultralightカードの全領域を読み込んで表示を更新します。

  1. Readボタンを押すと、MIFAREカードの待ち受けを始めます(MIFARE以外には反応しません)。
  2. MIFARE UltralightをPaSoRiの上に置いてしばらく待ちます。
  3. 画面の表示が更新されます。

Write

チェックボックスで指定されたData領域にPage単位でデータを書き込みます。カードの書き込み限度回数を考慮し、このような実装としました。

  1. 書き込みを行いたいPageの左のチェックボックスにチェックを入れます。Pageのデータを確認します。
  2. Writeボタンを押すと、MIFAREカードの待ち受けを始めます(MIFARE以外には反応しません)。
  3. MIFARE UltralightをPaSoRiの上に置いてしばらく待ちます。
  4. Lockエリアなどで保護指定していない限りは、書き込みができているはずです。

免責

「作ってみた」レベルのため、結構作りが雑です。ご自身の責任で使われてください。デバイスとしてMIFARE Ultralight以外(Standardとか)は試していませんので、どうなるか分かりません。MIFARE Ultralight C(MF0ICU2) はメモリ容量が違うみたいなので、使わないほうが良いと思います。

ソースコードは……需要あるのかしら?というかライセンス的に大丈夫なのかね。