【问题标题】:Getting chip card PAN or PAN sequence with the sequence of APDU commands: how can I get them?使用 APDU 命令序列获取芯片卡 PAN 或 PAN 序列:如何获取它们?
【发布时间】:2018-02-21 14:35:40
【问题描述】:

我有一张非接触式芯片卡(不是银行卡或 SIM 卡),我可以通过 NFC 通道(ISO14443、ISO 7816 第 4 部分)进行交互。

我想要从这张卡中得到的只是获取卡的 UID,这可以帮助我区分一张卡与其他卡。据我了解,这是我可以在标签“5A”下获得的 PAN 值。

首先,我可以将此命令发送到卡

00:a4:04:00:0e:32:50:41:59:2e:53:59:53:2e:44:44:46:30:31:00

并获得带有 AID 值的肯定答案 (SW:9000)。

所以,我有 AID,我可以发送这样的命令

00:a4:04:00:LеnAID:<AID>:00

打开文件以读取不同标签下的基于 TLV 的信息,对吗?

但是当我发送('5A' - PAN 的标签)

00:CA:00:5A:00

我的反应不好 -> 6E:00

所以,

1)我应该改变等级值(CLA = 00 现在)?还有什么价值?

2)也许我必须更改 READ RECORD(B0 或 B2 或其他)的 INS 值,因为“内核使用 AFL 的值(即标记 '94')发出一个或多个 READ RECORD 命令检索应用程序数据元素”,在我的例子中为 PAN 标记“5A”。 如果是这样,获取 PAN 的完整工作流程应该是什么?

UPD。 当我发送

ff:ca:00:00:00

我收到了

6e:00

【问题讨论】:

  • 如果您的意思是非接触式 UID,请查看 here。 PAN/PAN 序列号对于 EMV 支付卡来说是非常具体的。祝你好运!
  • UID 一词暗示了一种精确度,这在一般的智能卡中根本不存在。这完全取决于您未指定的相关卡。首先,请参阅question
  • @vlp ff:ca:00:00:00 不适合我,我收到了 6e:00。也许这就是我的卡不是支付卡,更像是一个令牌
  • @vlp 嗯,尝试使用 Paypass 从我的万事达卡获取信息。同样的答案,6E:00,对我来说很奇怪
  • @AlexZezekalo 我刚刚向万事达信用卡发送了FF CA 00 00 00 命令,我得到了卡的 UID。你用的是什么卡和读卡器?如果卡是 ISO 14443,您可以使用此命令获取 UID。它在非接触式 PCSC 扩展中定义。当您将卡轻触读卡器时,您会得到“ATR”吗?您可以查看 PCSC 规格以确定您使用的是哪种类型的卡。

标签: nfc smartcard apdu


【解决方案1】:

由于我未知的原因,我无法在命令中得到肯定的回答

FF:CA:00:00:00

我得到了答案6E:00

但我找到了另一种获取卡信息的方法。我必须执行的不是一个而是一系列命令:

1) 首先我要找出小程序的 AID。如果你知道 AID,你可以跳过这一步(在我的例子中是 2PAY.SYS.DDF)

00:a4:04:00:0e:32:50:41:59:2e:53:59:53:2e:44:44:46:30:31:00

2) 然后选择应用程序

00 A4 04 00 AID-Lenth AID

3) 之后我们得到处理选项

80 A8 00 00 02 83 00 00

4) 并阅读记录

00 B2 01 14 00

为了解码 TLV 响应,我使用这个实用程序 - https://www.emvlab.org/tlvutils 作为回应,我不仅得到了 5A 标签,还得到了其他标签,现在我必须解析整个 R-APDU 以获取特定的标签值。

是否有任何用于解析 TLV 响应的 java-lib?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 2010-09-21
相关资源
最近更新 更多