如何读写未知的智能卡?
Posted
技术标签:
【中文标题】如何读写未知的智能卡?【英文标题】:how to read and write an unknown smartcard? 【发布时间】:2014-04-28 10:06:23 【问题描述】:我购买了一些我认为是金雅拓产品的智能卡。
现在我有了这四个 ATR(使用 ACR38 和 ACR122U 读卡器):
3B 8F 80 01 80 31 80 65 B0 85 02 02 ED 12 0F FF FF FF FF 9F
3B 7F 94 00 00 80 31 80 65 B0 85 02 02 ED 12 0F FF 82 90 00
3B 68 00 00 00 73 C8 40 11 00 90 00
3B 00
我搜索了互联网,但没有找到关于这些 ATR 的任何信息(在 gemalto.com 和其他任何地方都没有)。
如何读写这张卡?
我可以使用两个智能卡读卡器来读写这些卡,还是必须购买新型号?
【问题讨论】:
“读写”智能卡是什么意思?个性化智能卡(即为其提供密钥、证书等)是一个相当复杂的过程。使用智能卡,例如签署一些东西,也很复杂,而且需要的命令因卡而异。 我的主要问题是如何获得基于 ATR 的芯片类型? 【参考方案1】:假设这些是来自(非接触式)卡的(模拟)ATR,这些看起来像处理器智能卡。除此之外,这些 ATR 中没有太多信息(至少其中包含的历史字节没有透露任何人类可读的信息)。
但是请注意,特别是对于 ACR122U,通过 PC/SC“可见”的默认卡也可以是集成到读卡器中的 SAM 模块。此外,最后一个 ATR (3B 00
) 可能不是来自卡的实际 ATR,但如果没有执行自动轮询且没有可用的 SAM,则看起来更像是 ACR122U 通常模拟的 ATR。在这种情况下,它只是一个占位符,允许通过 PC/SC API 激活阅读器,以传输特定于阅读器的封装命令(有关详细信息,请参阅 ACR122U API 手册)。
因此,如果您的卡是处理器智能卡,您可以尝试向它们发送 APDU 命令。例如。要找出它可能是什么卡,您可以尝试使用空 DF 名称发出 SELECT(按 DF 名称)命令并检查您得到的响应:
00 A4 04 00 00
但您也可以尝试选择 EF.DIR 等(如果可用)。
【讨论】:
以上是关于如何读写未知的智能卡?的主要内容,如果未能解决你的问题,请参考以下文章
案例| 探索未知.预测未来-利用机器学习(CART)预测合格率
来自 O2Micro 阅读器上的 WINSCARD.DLL 方法 SCardTransmit 的未知响应以及响应长度信息