soh*_* ab 1 uniqueidentifier apdu smartcard-reader mifare 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
Run Code Online (Sandbox Code Playgroud)
我想获得DESFire UID,但我无法为此创建命令APDU.任何人都能引导我走向正确的方向吗?我创建了这个APDU,但我不确定它是否正确:
byte[8] cmd_apdu_getUID_part1= {0x90 , 0x93 , 0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00};
Run Code Online (Sandbox Code Playgroud)
我不明白像LC这样的参数的概念,我找不到用于获取UID的INS.它0x93 ox20适用于UID的第1部分和UID 0x95 0x20的第2部分吗?
这些命令9x 20是较低的ISO 14443-3协议的一部分,并在防卡和激活卡时使用.另一方面,APDU在更高的协议层上交换,并且仅在激活卡之后.因此,您不能在APDU中使用这些命令代码.
如何从DESFire(EV1)卡获取UID取决于您实际想要获得的ID类型:
获取在防冲突阶段实际使用的UID:这取决于您使用的读取器(以及可能的设备平台).例如,符合PC/SC标准的非接触式智能卡读卡器通常允许使用PC/SC特定APDU读取当前所选卡的防冲突标识符
FF CA 00 00 xx
Run Code Online (Sandbox Code Playgroud)
(其中xx是00UID的任一或预期长度,通常为DESFire 04或07).
(仅限DESFire EV1)如果未激活卡的随机UID功能,则获取卡的UID:您需要使用GetVersion命令(请参阅DESFire EV1数据表).您需要将INS设置为您在数据表(cmd)中找到的命令代码,Lc和DATA将不存在:
90 60 00 00 00
Run Code Online (Sandbox Code Playgroud)
答案看起来像
<7 response data bytes> 91 AF
Run Code Online (Sandbox Code Playgroud)(仅限DESFire EV1)如果卡的随机UID功能被激活,则获取卡的UID:这要复杂得多.您首先需要对卡进行身份验证.只有这样,您才能使用GetCardUID命令(请参阅DESFire EV1数据表)来检索实际的卡UID.同样,这个命令看起来像
90 AF 00 00 00
Run Code Online (Sandbox Code Playgroud)
答案看起来像
<7 response data bytes> 91 AF
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |