Android入門 NFCタグの種類
NFCタグの種類
前にも言いましたがNFCというのは技術の総称でNFCタグというタグはありません。
Suicaにチャージしたお金はEdyでは使えませんよね。
どのタグにもアンテナとかICが入ってて電波で通信するのは一緒で周波数まで一緒なのですが、
通信の中身はそこまで一緒じゃないんです
幾つかグループに別れてます。有名ドコロはこんな感じ。
TypeA |
TypeB |
TypeF |
MifareClassic (アメリカの電車とか) |
免許証とか |
Felica (Suica Edy Waonとか) |
これらが全部同じ周波数の同じ電波で通信してるんです。だから一応同じ機械で読めます。
そしてタグIdとかある程度共通の部分があってそれらを読んだりするぐらいならAndroidでもできます。
「TagInfo」というアプリがあるのでちょっと落としてみて下さい。
んで、AndroidにSuica(TypeFですね)を当ててみましょう
TagInfoを開くとこんなふうに
まず、Idがありますね。 そしてこれがTypeFのNFCタグであることが分かります。
そしてこのタグを当てた時のTech_discoverdの種類が android.nfc.tech.NfcF であることも分かります。
前回xmlファイルを書きましたよね。マニュフェストとは別に そこにこれを入れたかどうかでSuicaみたいなTypeFに反応するかが決まります。
さて、次に買ってきたMifareClassicのタグをこのアプリで見てみましょう。
同じようにIDがありますね。しかしこっちの場合は4バイトのようです。
そしてTypeAであることや、このタグをタッチした時に飛ばされるインテントのこともわかります。
さて、MifareClassicの場合は中のデータまで見えちゃいます。こんな感じ
このMifareClassicは中のデータが16個のセクターにわかれています。
ちなみに0セクターの一番最初のデータがidです。試しにみてみるとd20537c4ってなってますよね。ほらほら。
1セクターは4つのブロックでできています。1ブロック16バイトなので1セクターは64バイトですね。
全部で16セクターあるので情報量としては1024バイト=1kバイト という切りの良い感じになっています。
なぜMifareClassicをこんなに扱うかというと
Androidからこれらのセクターに対して鍵付きで読み書きができるのはMifareClassicだけだからです。
せっかくデータを書き込むならだれでも見えるだけじゃなくて、暗号化したいし、暗号化するだけじゃなくて鍵もかけたいですよね。
こんな無料アプリでも見えちゃうような感じじゃなくてね。
MifareClassicならちゃんと鍵をかけられます。
この各セクターの上3つのブロックは0が並んでますが一番下のブロックはffffffffffff078069fffffffffffってなってますよね。
実はここにこのセクターの鍵が入っています。
MifareClassicではセクターごとに鍵を設定出来ます。
つまり3ブロックのデータを守るために1ブロック分の鍵情報がセットになって1セクターになってるわけです。
そのセクターの読み書きをするには鍵が必要になります。
今、このアプリでこのタグの情報が見えているのはffffffffffffっていうデフォルト鍵がかかっているから読めているんです。
ここに独自の鍵を設定すればそこの3ブロックは内緒の場所に出来ます。
次回はMifareClassicの認証方式に関して