4

我有一张非接触式卡,我知道它是 MIFARE 卡。我没有文档,也没有身份验证密钥。重置后,我收到以下 ATS:

myubuntu@lol-MS-7693:~$ nfc-list
nfc-list 使用 libnfc 1.7.1
NFC设备:ACS/ACR122U PICC接口打开
找到 1 个 ISO14443A 被动目标:
ISO/IEC 14443A (106 kbps) 目标:
    ATQA (SENS_RES):03 44  
       UID(NFCID1):04 8c 4c 92 e9 48 80  
      SAK (SEL_RES):20  
                空中交通服务:75 77 81 02 80  

在谷歌上面搜索 ATS 后,我在这里找到了以下信息:

在此处输入图像描述

所以,我的卡要么是 DESFire 卡,要么是 DESFire EV1 卡。问题是,我怎样才能准确地检测出我的两张卡中的哪一张?

4

2 回答 2

8

MIFARE DESFire EV1 是 MIFARE DESFire 的后续产品。DESFire EV1 增加了对新加密算法(特别是 AES)的支持,并提高了加密操作的安全性,以抵御已知的 MIFARE DESFire 侧信道攻击。

您可以通过向卡发送 GetVersion 命令(命令代码 0x60)来区分这两个版本。

如果您使用的是本机命令模式,这将类似于:

阅读器--->卡:60
卡 <--- 阅读器:AF 04 01 XX XX XX XX 05
阅读器--->卡:AF
卡 <--- 阅读器:AF 04 01 01 HH LL XX 05
阅读器--->卡:AF
卡 <--- 阅读器:00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX

该字节HH包含主要软件版本,DESFire 为 0x00,DESFire EV1 为 0x01。

如果您使用 PC/SC 读卡器与卡进行通信,则可能需要使用 DESFire APDU 包装的本机命令集:

阅读器--->卡:90 60 00 00 00
卡 <--- 阅读器:04 01 XX XX XX XX 05 91 AF
阅读器 ---> 卡:90 AF 00 00 00
卡 <--- 阅读器:04 01 01 HH LL XX 05 91 AF
阅读器 ---> 卡:90 AF 00 00 00
卡片 <--- 阅读器:XX XX XX XX XX XX XX XX XX XX XX XX XX XX 91 00
于 2016-10-18T09:03:37.307 回答
1

您可以通过您将获得的主要硬件版本号识别卡类型

Reader       Card
 60      -> 
         <-  AF 04 01 XX HH LL XX 05
 AF      ->
         <-  AF 04 01 01 XX XX XX 05
 AF      ->  
         <-  00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX

HH 将是:

  • 0x00 = DESFire (MF3ICD40)
  • 0x01 = MIFARE DESFire EV1
  • 0x12 = MIFARE DESFire EV2
于 2017-02-27T17:08:34.393 回答