2012-08-10 12 views
6

Có cách nào đáng tin cậy để tìm hiểu xem thẻ RFID là Mifare Ultralight hoặc Mifare Ultralight C?Phân biệt Mifare Siêu nhẹ từ Mifare Siêu nhẹ C

Cách duy nhất tôi tìm thấy cho đến nay là sử dụng sự khác biệt về kích thước của hai thẻ phát hành một lệnh đọc vượt ra ngoài ranh giới của một nhỏ hơn. Nhưng nó trông giống như một hack và tôi giả định lệnh đọc có thể thất bại nếu thẻ sử dụng cơ chế xác thực siêu nhẹ 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

Trả lời

5

Vâng, đó là có thể nếu bạn có tài liệu về cách cơ chế xác thực MIFARE siêu nhẹ C hoạt động. MIFARE Ultralight không hỗ trợ điều này, vì vậy nó sẽ làm tăng tình trạng lỗi.

+0

Đó cũng là suy nghĩ thứ hai của tôi. Tuy nhiên, sử dụng một lệnh không tồn tại trên một trong số chúng vẫn là một cách giải quyết. Nhưng dường như không có cách nào sạch sẽ để làm điều đó. – mibollma

+0

Vâng, đó là cách đáng tin cậy đơn giản nhất. –

-1

Khi bạn ở dưới NDA và nhận được quyền truy cập vào bảng dữ liệu đầy đủ, bạn sẽ thấy phần mô tả cách phân biệt Siêu Mifare siêu nhẹ từ các thẻ Mifare khác.

+0

Tôi không tìm thấy phần này. Bạn có thể cho biết bạn đang đề cập đến tài liệu nào không? (Tôi đã nhìn vào 137631 và không tìm thấy bất cứ điều gì). Cảm ơn! – kdmin