APDU для получения UID от MIFARE DESFire?

uniqueidentifier mifare apdu smartcard-reader contactless-smartcard

2426 просмотра

1 ответ

6 Репутация автора

Я новичок в APDU. Я прочитал таблицу данных для DESFire. По нему имеем:

CLA  = 0x90     
INS  = DESFire CMD Code                                            
P1   = 0x00        
P2   = 0x00
LC   = Length of wrapped Data    
data = DESFire command parameter(s) 
LE   = 0x00

Я хочу получить UID DESFire, но не могу создать командный APDU для этого. Кто-нибудь может привести меня в правильном направлении? Я создал этот APDU, но я не уверен, что это правильно:

byte[8] cmd_apdu_getUID_part1= {0x90 , 0x93 , 0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00};

И я не понимаю концепции таких параметров, как LC, и я не нахожу INS для получения UID. Это 0x93 ox20для части 1 UID и 0x95 0x20для части 2 UID?

Автор: soheyla ab Источник Размещён: 23.04.2015 09:32

Ответы (1)


6 плюса

30447 Репутация автора

Команды 9x 20являются частью более низкого протокола ISO 14443-3 и используются во время антиколлизии и активации карты. APDU, с другой стороны, обмениваются на более высоком уровне протокола и только после активации карты. Следовательно, вы не можете использовать эти коды команд в APDU.

Как получить UID с карты DESFire (EV1) зависит от того, какой тип ID вы действительно хотите получить:

  • Получите UID, который фактически использовался на этапе предотвращения столкновений : это зависит от того, какой читатель (и, возможно, платформу устройства) вы используете. Например, бесконтактные считыватели смарт-карт, совместимые с PC / SC, обычно позволяют считывать идентификатор защиты от коллизий выбранной в данный момент карты, используя специальный APDU для ПК / SC.

    FF CA 00 00 xx
    

    (где xx- либо 00ожидаемая длина UID, 04либо, как правило, для DESFire или 07).

  • (Только для DESFire EV1) Получите UID карты, если функция случайного UID карты не активирована : вам потребуется использовать команду GetVersion (см. Таблицу данных DESFire EV1). Вам необходимо установить INS для кода команды, который вы найдете в таблице данных (0x64), Lc и DATA не будут присутствовать:

    90 64 00 00 00
    

    Ответ будет выглядеть примерно так

    <several response data bytes> 91 00
    
  • (Только DESFire EV1) Получить UID карты, если активирована функция случайного UID карты : это намного сложнее. Сначала вам нужно будет пройти аутентификацию на карточке. Только после этого вы можете использовать команду GetCardUID (см. Таблицу данных DESFire EV1) для получения фактического UID карты. Опять же, эта команда будет выглядеть

    90 51 00 00 00
    

    Ответ будет выглядеть примерно так

    <UID (encrypted)> 91 status
    
Автор: Michael Roland Размещён: 24.04.2015 06:30
Вопросы из категории :
32x32