2012-08-10 249 views
6

有沒有可靠的方法來確定RFID卡是Mifare Ultralight還是Mifare Ultralight C?區分Mifare Ultralight與Mifare Ultralight C

到目前爲止,我發現的唯一方法是利用這兩張卡的大小差異來發出一個讀取命令超出較小的邊界。 但它看起來像一個黑客,我假設如果卡使用Ultralight C身份驗證機制讀取命令可能會失敗。

const char* mifare_ultralight_identification(const nfc_target_info_t nti) 
{ 
    byte_t abtCmd[2]; 
    byte_t abtRx[265]; 
    size_t szRxLen; 

    abtCmd[0] = 0x30; // MIFARE Ultralight READ command 
    abtCmd[1] = 0x10; // block address (1K=0x00..0x39, 4K=0x00..0xff) 

    if (!nfc_initiator_transceive_dep_bytes(pnd,abtCmd,2,abtRx,&szRxLen)) { 
    // READ command of 0x10 failed, we consider that Ultralight does have 0x10 address, so it's a "simple" Ultralight (i.e. not a Ultralight C) 
    // When a READ failed, the tag returns in HALT state, so we need to reselect tag 
    nfc_initiator_select_passive_target(pnd, NM_ISO14443A_106, nti.nai.abtUid, nti.nai.szUidLen, NULL); 
    return ""; 
    } 
    return " C"; 
} 

Source

回答

5

是的,這是可能的,如果你對MIFARE超輕ç認證機制是如何工作的文檔。 MIFARE Ultralight不支持此功能,因此會引發錯誤狀況。

+0

這也是我的第二個想法。但是,使用其中一個不存在的命令仍然是一種解決方法。但似乎沒有乾淨的方式來做到這一點。 – mibollma 2012-08-10 11:12:58

+0

是的,這是最簡單可靠的方法。 – 2012-08-10 12:27:38

-1

一旦您處於NDA並獲取完整數據表,您將看到一節介紹如何區分Mifare Ultralight C與其他Mifare標籤。

+0

我沒有找到此部分。你能告訴你指的是什麼文件嗎? (我看了一下137631,沒有找到任何東西)。謝謝! – kdmin 2014-03-24 20:53:34