uniqueidentifier - 用于从 MIFARE DESFire 获取 UID 的 APDU?

标签 uniqueidentifier mifare apdu smartcard-reader contactless-smartcard

我是 APDU 的新手。我阅读了 DESFire 的数据表。根据它我们有:

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

我想获取 DESFire UID,但无法为此创建命令 APDU。 任何人都可以引导我走向正确的方向吗?我创建了这个 APDU,但我不确定它是否正确:

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

而且我不明白像LC这样的参数的概念,也没有找到INS来获取UID。 UID 第 1 部分是 0x93 ox20,UID 第 2 部分是 0x95 0x20 吗?

最佳答案

命令 9x 20 是较低 ISO 14443-3 协议(protocol)的一部分,用于卡的防冲突和激活。另一方面,APDU 在更高的协议(protocol)层上进行交换,并且仅在 卡激活后进行。因此,您不能在 APDU 中使用这些命令代码。

如何从 DESFire (EV1) 卡获取 UID 取决于您实际想要获取的 ID 类型:

  • 获取在防冲突阶段实际使用的 UID:这取决于您使用的阅读器(可能还有设备平台)。例如,PC/SC 兼容的非接触式智能卡读卡器通常允许使用 PC/SC 特定的 APDU 读取当前所选卡的防冲突标识符

    FF CA 00 00 xx
    

    (其中 xx00 或 UID 的预期长度,对于 DESFire 通常是 0407).

  • (仅限 DESFire EV1)如果卡的随机 UID 功能未激活,则获取卡的 UID:您需要使用 GetVersion command .您需要使用 CLA 字节 0x90 来指示包装的 native 命令,将 INS 设置为命令代码 0x60,Lc 和 DATA 将不存在:

    90 60 00 00 00
    

    答案看起来像

    <7 response data bytes> 91 AF
    

    其中状态码91 AF表示命令码设置为0xAF可以获取更多数据。所以你必须发送另一个命令:

    90 AF 00 00 00
    

    答案会(再次)看起来像

    <7 response data bytes> 91 AF
    

    所以你必须发送另一个 0xAF 命令。然后你会得到以下形式的答案:

    <14 response data bytes> 91 00
    

    其中响应​​数据的最后 7 个字节包含 UID。参见 parseGetVersion()关于如何解析接收到的数据。

  • (仅限 DESFire EV1)如果卡的随机 UID 功能已激活,则获取卡的 UID:这要复杂得多。您首先需要对卡进行身份验证。只有这样你才能使用 GetCardUID command检索实际的卡 UID。这个命令看起来像

    90 51 00 00 00
    

    答案看起来像

    <UID (encrypted)> 91 00
    

关于uniqueidentifier - 用于从 MIFARE DESFire 获取 UID 的 APDU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819356/

相关文章:

asp.net - 通过将 "userid"类型更改为整数来自定义 asp.net 成员资格

c++ - 在 C++ 中,对具有唯一 ID 的对象进行复制/move/分配的正确方法是什么?

Android 4.4.2,PN532 NFC 读卡器和 NFC 卡仿真

nfc - 对 NXP SmartMX 非接触式 MCU 进行编程需要什么?

linux - 为什么 ACR38U-CCID 总是返回 0x6e 0x00?

Android 与 SIM javacard 2.x 小程序交互

android - NFC 阅读器和手机 : unique authentication without app

php - php的uniqid是由哪一组字符组成的?

linux - 使用 PCSCD 时出现 ACR122U 错误

android - OMAPI 支持的设备列表