获取 NXP MIFARE DESFire EV1 卡的 UID/序列号

Zak*_*kFS 1 serial-number apdu mifare contactless-smartcard uwp

我目前正在制作一个项目,我想使用具有 NFC 功能的 Windows 10 手机读取智能卡的 UID/序列号以查找一个人的 ID。我试图从中获取 UID/序列号的卡是 NXP MIFARE DESFire EV1。我正在寻找的 ID 印在卡上,我设法使用我朋友的手机和 Android 应用程序访问它,这意味着该号码可以访问,尽管我不知道如何访问。

我能够向卡发送 APDU 命令,但我不知道使用哪个命令来获取我正在寻找的 UID/序列号。

我需要向卡发送哪些 APDU 命令才能获取 ID?我正在寻找的 ID 是 7 个字节长。

Mic*_*and 5

通常,检索非接触式卡的防冲突标识符 (UID) 等参数在很大程度上取决于读卡器以及读卡器与应用程序之间的抽象层。例如,在 Android 上,有一种简单的方法getId()可以获取 NFC 标签/非接触式智能卡的防冲突标识符。

但是,对于 MIFARE DESFire,还有一种方法可以通过 APDU 获取该参数。您可以简单地发送 GET VERSION 命令来查询版本信息(以及卡 UID):

C-APDU:90 60 0000 00
R-APDU:04 01 YY 01 00 ZZ 05 91AF

C-APDU:90 AF 0000 00
R-APDU:04 01 01 01 04 ZZ 05 91AF

C-APDU:90 AF 0000 00
R-APDU:XXXXXXXXXXXXXX UUUUUUUUUU VV WW 9100

该值XXXXXXXXXXXXXX是卡的 UID(如果卡处于随机防冲突标识符模式,则全为零)。

请注意,甚至有存在的MIFARE DESFire非版本信息解析器这里(如ThomasRS在评论中指出)。

  • 解析器在 https://github.com/skjolber/external-nfc-api/blob/master/externalNFCClient/src/main/java/com/skjolberg/nfc/desfire/VersionInfo.java (2认同)