[英]How do I permanently lock specific data pages in a MIFARE Ultralight C tag?
我已經成功地在數據頁30到38上寫了一些數據。
之后我想鎖定那些頁面以防止進一步寫入。 寫鎖定應該是永久性的,因此即使有人知道驗證密鑰,它們也不應該寫入這些頁面。
據我所知,數據表,我必須在OTP頁面上寫一些位。 但我不完全理解我必須發送什么命令才能鎖定第30至38頁。
有人可以幫我識別需要發送到卡的命令嗎? 我的想法是我必須在第40頁寫F0。但是,這也可能使第28,29和39頁被鎖定,因此無法使用。
為了設置包含第30頁到第38頁的鎖定位,您需要設置位於第40頁的字節0的第5,6和7位的鎖位。您可以使用WRITE命令執行此操作。 對於鎖定位(或任何OTP頁面),此命令將僅編程在命令的數據參數中設置為“1”的那些位(實質上導致邏輯OR)。 請注意,WRITE命令總是需要一整頁(即4個字節)作為其數據參數:
byte[] result = nfcA.transceive(new byte[] {
(byte)0xA2, /* CMD = WRITE */
(byte)0x28, /* PAGE = 40 */
(byte)0xE0, (byte)0x00, (byte)0x00, (byte)0x00 /* DATA = lock pages 28..39 */
});
不幸的是,你不能! MIFARE Ultralight C對第16頁至第39頁的鎖定機制以4頁為單位進行組織。 因此,您只能鎖定以下4頁的組:
塊鎖定位為鎖定頁面內的位設置寫保護。 因此,例如,如果第28到39頁的塊鎖定位設置為“1”,則意味着您無法更改這些頁面的三個鎖定位的狀態。 因此,如果您設置第28頁至第31頁的鎖定位但是未設置第32至35頁和第36至39頁的鎖定位,然后設置塊鎖定位,則無法再激活第32頁的寫保護到39歲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.