APDU 命令获取智能卡的序列号

Posted

技术标签:

【中文标题】APDU 命令获取智能卡的序列号【英文标题】:APDU command to get the serial number of a smart card 【发布时间】:2013-07-16 13:30:50 【问题描述】:

如何使用 ? 我试图通过使用winscard.dll 的 SCardGetAttrib 函数来查询它,但没有运气,我被告知使用 APDU 命令来执行此操作,因为没有标准方法来获取序列号。问题是我不知道我的智能卡是什么类型的!所以我查阅了几家流行的智能卡制造商的文档,但没有找到获得序列号的方法!!

我的读卡器是 ACR88。

【问题讨论】:

【参考方案1】:

在下面的命令中,A0 可能需要为 00 或其他值(下面的代码适用于 SIM 卡):

选择MF:

=> A0A40000023F00 
<= 9F16

选择 EFiccid:

=> A0A40000022FE2 
<= 9F0F

读取二进制文件:

=> A0B000000A 
<= 984310011823020084F99000

您的 ICCID 已交换并进行了 luhn 检查 (984310011823020084F9 => 8934011081322000489)。

【讨论】:

最后的 0xF9 是怎么回事,转换成 9?那是F 某种“忽略我”的角色吗? 是的,这是一个填充。【参考方案2】:

对于 SCOSTA 特定的卡,您可以使用以下命令读取 TAG 46 下的芯片序列号, 00CA0046XX 或 00CA0246XX “最后 XX 取决于卡因知道长度而异,给出 00 并会给出 '6CXX' 的响应,您可以使用 xx 获取正确的数据,这是因为序列号的长度因卡而异

【讨论】:

以上是关于APDU 命令获取智能卡的序列号的主要内容,如果未能解决你的问题,请参考以下文章

APDU 命令将更改的 PIN 写入卡

如何将低级命令(非 APDU)发送到 Windows 10(移动)上的智能卡?

无法使用 APDU 命令验证智能卡 PIN

非接触式智能卡仅响应第一个 APDU 命令

如何使用 Windows Phone 8 NFC 应用程序向智能卡发送 APDU 命令

APDU 命令异步调用