0%

[NFC] NTAG213 記憶體解析

前言

若要撰寫與 NFC 讀取相關的應用,需要先了解對應的 Tag 內存使用方式,這篇文章會以市面上常見的 NFC 晶片 NTAG213 來做說明,透過範例解讀讓讀者更容易理解 Datasheet 內的敘述。

範例解讀

參考 NXP 大廠產品 NTAG213 的 Datasheet,該晶片支援 ISO14443-3A 規範,各個欄位的介紹與功用請直接到文件中查看,較為詳細!在此只是舉實例來解讀從記憶體讀出來的資料,相信閱讀 Datasheet 時搭配此文章會較容易了解其中的敘述。

NTAG213 內部記憶體配置圖NTAG213 內部記憶體配置圖

以下是從實體 NTAG213 讀出來的資料,接下來以此資料作為範例來解說

Page↓\ Byte→ 0 1 2 3
00h 04 67 60 8b
01h 12 ee 64 81
02h 19 48 00 00
03h e1 10 12 00
04h 03 0c d1 01
05h 08 54 02 7a
06h 68 41 45 49
07h 4f 55 - -

解析 UID/SN (Serial Number)

UID/SN 資料的所在的範圍為 Page 0, Byte 0 ~ Page 2, Byte 0

Page↓\ Byte→ 0 1 2 3
00h 04 67 60 8b
01h 12 ee 64 81
02h 19 - - -
  1. 前 9 bytes 是 UID (7 bytes) + BCC (2 bytes)。參考:AN10927
  2. BCC 全名為 Block Check Character,作為校驗碼。其前方 4 個 bytes 做 XOR 運算,就是 BCC 的值。參考:AN10927
    8b19 為 BCC
    1. Page 0, Byte 3 的 8b 為 CT (Cascade Tag = 88h), SN0, SN1, SN2 做 XOR 後的值,即 88h xor 04h xor 67h xor 60h = 8bh
    2. Page 2, Byte 0 的 19SN3, SN4, SN5, SN6 做 XOR 後的值,即 12h xor eeh xor 64h xor 81h = 19h
  3. 若 BCC 皆正確便能確定 UID 是對的。
  4. 其中 SN0 代表晶片廠商代碼。參考:ISO/IEC 7816-6/AM1 chip manufacturer codes

Internal

Page 2, Byte 1 在文件中說是 Internal,並沒明說用途。

Page↓\ Byte→ 0 1 2 3
02h - 48 - -

Static lock bytes

Page 2 的 Byte 2 與 Byte 3 是 Static lock bytes,只要這 16 個 bit 任一個被設為 1,該 bit 就不能回到 0 了,為不可逆的操作,該 bit 對應的 Page 也會被永久鎖住,不可再被修改,需要小心使用!

Page↓\ Byte→ 0 1 2 3
02h - - 00 00

Capability Container

Page 3 是 Capability Container,即為就是記錄 Tag 能力的 page

Page↓\ Byte→ 0 1 2 3
03h e1 10 12 00
  1. Page 3, Byte 2:12h 代表這個 tag 有 144 bytes 的空間可以寫 NDEF。
  2. 其它 Byte 還不清楚作用。

Data page

Page 4 之後 (包含) 的 Page 為 Data page,這是一個 NDEF,解讀方法可參考 [NFC] NDEF 解析

Page↓\ Byte→ 0 1 2 3
04h 03 0c d1 01
05h 08 54 02 7a
06h 68 41 45 49
07h 4f 55 - -

驗證

最後的最後,使用市面上的 NFC 解析軟體來驗證自己的觀念是否正確

NTAG213 詳細資訊1NTAG213 詳細資訊1
NATG213 詳細資訊2NATG213 詳細資訊2

參考文獻

  1. NTAG213/215/216 Datasheet

  2. AN10927 - MIFARE product and handling of UIDs

  3. ISO/IEC 7816-6/AM1 chip manufacturer codes

很高興能在這裡幫助到您,歡迎登入 Liker 為我鼓掌 5 次,或者成為我的讚賞公民,鼓勵我繼續創造優質文章。
以最優質的內容回應您的鼓勵