簡體   English   中英

如何在Android上以編程方式編寫保護NTAG203 NFC芯片?

[英]How to write protect an NTAG203 NFC chip programmatically on android?

我一直在研究用於會員卡解決方案的NTAG203 NFC芯片,並打算在每個卡上設置唯一的ID並將其寫入。

奇怪的是,盡管我可以找到出售的具有寫保護功能的NTAG203芯片,但我在網上找不到太多有關如何寫保護功能的芯片。 我也看到過提供寫保護服務的應用程序。

您如何編碼一個Android應用程序以在NTAG203上啟用寫保護?

謝謝!

(為清楚起見,已編輯問題)

是的,那是可能的。 NTAG203( 數據表 )是ISO / IEC 14443 Type A(“ NFC-A”)標簽,並遵循NFC論壇Type 2標簽操作規范。 為了激活此類標簽的物理寫保護功能,您需要設置鎖定位。

在Android上,您可以通過為標簽句柄獲取NfcA技術連接器類的實例來訪問此類標簽:

Tag tag = ...  // I assume you already received the tag handle by means of an NFC discovery intent
NfcA nfcA = NfcA.get(tag);
if (nfcA != null) {
    // this is an NFC-A tag
    ...

NTAG203的鎖定位位於頁面2( 0x02 )字節2-3和頁面40( 0x28 )字節0-1中。 這4個字節的每個位控制NTAG203存儲區某些頁面的鎖定狀態。 為了激活鎖定,您必須通過對包含鎖定位的頁面發出寫命令來將鎖定位設置為'1' 因此,對於鎖定整個標簽的最簡單方案,您可以執行以下操作:

    // connect to the tag
    nfcA.connect();

    byte[] result;
    // write all-ones to the lock bits on page 0x02
    result = nfcA.transceive(new byte[]{
            (byte)0xA2,  // Command: WRITE
            (byte)0x02,  // Address: page 0x02 (2)
            (byte)0x00, (byte)0x00, (byte)0xFF, (byte)0xFF  // Data: set bytes 2-3 to all '1'
    });
    // write all-ones to the lock bits on page 0x28
    result = nfcA.transceive(new byte[]{
            (byte)0xA2,  // Command: WRITE
            (byte)0x02,  // Address: page 0x28 (40)
            (byte)0xFF, (byte)0x11, (byte)0x00, (byte)0x00  // Data: set byte 0 and lock bits in byte 1 to all '1'
    });

    nfcA.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM