NFCタグ実験室

NTAG212 / 213 / 215 を理解して、Webから使い倒すデモ

あなたの環境: 検出中…

1. 手に入れたタグの違い

チップユーザー領域URL目安得意な用途
NTAG212128 bytes〜100文字短いURL、IDタグ、テスト用
NTAG213144 bytes〜130文字URL、名刺、最も普及。標準
NTAG215504 bytes〜450文字vCard、Wi-Fi、Amiibo、複雑NDEF

どれもISO/IEC 14443A・13.56MHz・NFC Forum Type 2タグ。iPhone/Androidの内蔵NFCで読めます。書き込みは1回でも何回でも可能(最終的に読み取り専用にロックも可)。

2. iPhoneで使うベストプラクティス

あなたはiPhone 以下の流れがおすすめです。

STEP 1. App Storeで 「NFC Tools」(無料)または「Simply NFC」を入れる
STEP 2. アプリ内「Write」→「Add a record」→「URL」を選択
STEP 3. 書き込みたいURLを入力(下のテストURL欄からコピー可)
STEP 4. 「Write」をタップ → タグをiPhone上部にかざす
STEP 5. 完了後は画面ロック状態でかざすと自動でURL通知バナーが出る

ヒント iPhoneのNFCは本体上部(アウトカメラ付近)が一番反応します。ケースが厚いと感度が落ちることがあります。

3. テスト用URL(コピーして使う)

↑ このページ自身のURLが自動で入っています。タグにこのURLを書き込めば、かざすたびに本デモが開きます。

4. Web NFC でブラウザから直接書き込む

Android Chrome検出 このページから直接 NDEF を書き込み・読み取りできます。

iOSは Web NFC API 非対応 下のボタンは動きません。Section 2のアプリ経由を使ってください。
※ iOSはNDEFタグの「読み取りバナー表示」だけはOSが標準で対応しています。

PCブラウザ Web NFCはモバイル向けAPIなのでPCでは使えません。USB NFCリーダー(ACR122U等)+ライブラリ(pyscard、nfcpy)か、Android端末でこのページを開いてください。

書き込む

ボタンを押すとブラウザが「タグをかざしてください」と表示します。NTAG212/213/215いずれもOK。

読み取る

ログ

(ここに動作ログが出ます)

5. 真贋判定 — 偽物NTAGを見破る

市場にはNTAG215を騙る偽チップ(特にAmiibo用途で大量に流通)や、汎用Type 2タグをNTAGとして売っているものが存在します。NXP正規品か確認する3段階の方法:

判定結果

↑ Section 4 の「スキャン開始」でタグを読み込むとここに結果が出ます。

レベル1:UID構造チェック(このページで自動)

NXP製NTAG21xは 7バイトUID先頭バイトが 0x04(NXP Semiconductors のメーカーコード, ISO/IEC 7816-6準拠)。これに合わない時点で正規NTAGではない可能性が高い。
※ 中華製クローン(FUDAN FM11NT等)も 0x04 を偽装するものがあるため、これだけでは100%判定はできません。

レベル2:GET_VERSION + メモリサイズ確認

正規NTAGは GET_VERSION コマンドに以下のような決まった応答を返します:

NTAG213: 00 04 04 02 01 00 0F 03
NTAG215: 00 04 04 02 01 00 11 03
NTAG216: 00 04 04 02 01 00 13 03
         ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
         |  |  |  |  |  |  |  +-- protocol type
         |  |  |  |  |  |  +----- storage size (0x0F=144B, 0x11=504B, 0x13=888B)
         |  |  |  |  |  +-------- minor version
         |  |  |  |  +----------- major version
         |  |  |  +-------------- subtype (0x02 = 50pF)
         |  |  +----------------- product type (0x04 = NTAG)
         |  +-------------------- vendor (0x04 = NXP)
         +----------------------- fixed header

Web NFC APIでは送信不可。Android NFC API(NfcA.transceive)または NFC TagInfo アプリで取得可能。

レベル3:Originality Signature(決定版)

NXP製NTAG21xには工場出荷時に書き込まれた 32バイトのECDSA署名 がROM領域にあり、コマンド READ_SIG (3C 00) で読み出せます。これをNXP公開鍵で検証し成立すればNXP正規品確定。
クローンチップはこの署名を持たない(または別の鍵で署名されている)ため見破れます。

判定推奨アプリ:

これらのアプリは「Originality check: ✓ Passed」のように表示します。Passedなら本物、Failedなら偽物 or 別ベンダー品です。

6. NDEFの中身を覗いてみる

NDEF(NFC Data Exchange Format)はTLV的なバイナリ。URLレコードは D1 01 ?? 55 [prefix] [url] のような構造で、prefixは0x04ならhttps://等の省略コードです。

例:https://itadaki.jp/ を書いた場合のNDEFペイロード
D1 01 0E 55 04 69 74 61 64 61 6B 69 2E 6A 70 2F
^^ ^^ ^^ ^^ ^^ -- 以降 "itadaki.jp/" のASCII --
|  |  |  |  +- prefix 0x04 = "https://"
|  |  |  +- レコード型 'U' = URI
|  |  +- ペイロード長 (14 bytes)
|  +- タイプ長
+- ヘッダ: MB=1, ME=1, SR=1, TNF=001 (well-known)

7. もっと攻めた使い道

Wi-Fiタグ(NTAG215推奨):かざすだけでゲストWi-Fi接続。NDEFのapplication/vnd.wfa.wscレコードでSSID/暗号化方式/PSKを格納。
vCardタグ:名刺代わり。text/vcardレコードに連絡先。
ショートカット起動(iOS):iPhoneの「ショートカット」アプリでNFCをトリガーに自動化可能。タグ自体は空でもOK。
書き込み禁止ロック:完成したらタグを読み取り専用に固定(NFC Toolsの「Lock tag」)。改ざん防止に重要。

— END —