NTAG 标签
NTAG 標簽
這里描述針對 NTAG213。而 NTAG215/216只是容量不同,其它功能都一樣。
?
UID
UID 有 7 bytes。上圖中有 9 bytes 的 serial number,其中有 2 bytes 是 check byte。
?
check byte 0 校驗:CT, SN0, SN1, SN2
check byte 1 校驗:SN3, SN4, SN5, SN6
static lock byte
lock byte 可以把一些 page 設置成只讀。
?
page 2 里有兩個字節的 lock byte,可以控制 page3~page15 是否只讀。NTAG210 型號的卡,user memory size 就是 12 個 page。猜想可能這個設計最初就是為了適應這個容量大小的卡。
L 是 locking,負責單個 page 的鎖定狀態。L 位置 1 后,對應的 page 就變為只讀,除非更改 L 位為 0
BL 是 block-locking,可以鎖定多個 page
這兩個 lock byte 的寫操作是 tearing-proof 的。
tearing 現象,卡離開讀卡器時,供電突然消失。對 Flash 的寫操作會中斷,造成 data-tearing 現象。tearing-proof 就是會保證對卡內的這兩個字節的寫操作是獨立完整的。
參考鏈接:Tearing-proof method for writing data in a nonvolatile memory
dynamic lock bytes
控制序號 10h 及后面的 page 的鎖定,就用到了 dynamic lock bytes。
CC
page 3 存了卡容量信息,在生產時固化,符合 NFC Forum Type 2 Tag 規范。其中 4 個字節,byte2 表示容量:
?
這 4 個字節都是 OTP 的,且按位進行或操作。把某位置 1,不能置 0。
這 4 個字節出廠時都有預置的值,不是 00。
數據區
page 4 以后一片連續的 page 可供用戶使用。
出廠時,page 3, page4, page 5 會有預置的值。page 5 以后的內容就不確定了。也許可以根據這里的信息來判斷一張卡是否被使用過。
功能配置頁
最后 4 個 page 用于一些功能的配置。
?
MIRROR
MIRROR 功能可以把卡的 UID 和 NFC Counter 以 ASCII 的格式映射到某個 page 開始的區域。
?
MIRROR_CONF
- 00: 禁止 MIRROR 功能
- 01: 映射 UID
- 10: 映射 NFC Counter
- 11: 映射 UID 和 NFC Counter
MIRROR_PAGE 指定映射到哪個 page
MIRROR_BYTE 指定從 page 內的第幾個 byte 開始
AUTH
?
PROT
- 0:寫保護(不允許寫)
- 1:讀保護+寫保護(不允許讀和寫)
CFGLCK 控制 CFG0, CFG1 這兩頁是否可寫
- 0:配置區可寫
- 1:配置區不可寫(PWD 和 PACK 除外)
NFC_CNT_EN
- 0: 禁止 NFC 計數器功能
- 1: 開啟 NFC 計數器功能
開啟之后,每次 power on reset 后第一次讀操作時,計數器會增加 1
NFC_CNT_PWD_PROT
- 0: 讀 NFC Counter 不需要驗證
- 1: 讀 NFC Counter 之前需要密碼校驗通過
AUTHLIM 密碼嘗試次數。當密碼連續錯誤超過這個值時,就再也無法校驗成功了。而在到達這個次數之前如果校驗對了密碼,則它的計數會清零
PACK 校驗密碼命令的響應內容
AUTH0 表示需要密碼校驗訪問的起始頁。初始值為 FF。比如,AUTH0 為 5,則表示從 page5 開始的頁訪問都需要校驗密碼。
NFC counter
開啟此功能之后,每次卡 power on reset 之后的第一次讀操作,24 bits 的計數器會自增。
計數器增至 FF FF FF 之后就不再變化。 這個數字足夠大了。
這個計數器就給了每張卡一個獨立變化的變量。
總結
- 上一篇: 顶象验证码破解与研究
- 下一篇: 表现期和观察期