提问者:小点点

EMV 读取 PAN 代码


我需要通过芯片读取每张可能的卡的PAN码。在我的工作中,我只需要使用C,我没有可以帮助我完成这项无聊任务的例程。这就是我使用的 APDU 步骤:

1) 选择1PAY.SYS.DDF01

00 A4 0400 0E 315041592E5359532E4444463031    

然后00 C0 0000 22 315041592E5359532E4444463031从响应中读取所有数据。完成响应:

6F 20 E 84 31 50 41 59 2e 53 59 53 2e 44 44 46 30 31 A5 E 88 1 1 5F 2d 69 8 74 65 6e 66 72 65 73 90

2)阅读记录以获得具体帮助

00 B2 010C 00 

完整回复:

70 17 61 15 4f 7 a0 0 0 0 4 30 60 50 7 4d 41 53 54 52 45 4f 87 1 1 90

3)SELECT AID(在我的情况下,AID是从之前的响应中选择的A0000000043060)

00 A4 0400 07 A0000000043060

同样在本例中,我有响应:61 36,因此我使用以下命令重新调用该命令:

00 C0 0000 36 A0000000043060

完整回复:

6f 0 41 45 53 52 4f 54 87 1 1 34 84 a0 7 0 0 4 30 60 a5 29 50 7 4d 5f 2d 8 69 74 65 6e 72 66 65 73 bf c f 9f 4d 2 b a 9f 6e 3 7 80 0 0 30 30 0 90

现在我使用的每个命令都会得到错误的消息。我不明白我是否必须使用READ DATA、READ RECORD、GET PROCESSING OPTIONS或其他东西。你能告诉我现在该怎么做吗?

我需要得到卡片的16字符代码,通常清楚地印在卡片上的那个。

谢谢大家


共1个答案

匿名用户

打印在智能卡(支付芯片卡)上的8字节(16位)代码是可检索的。该信息是标记57中记录中个性化的“磁道2等效数据”的一部分。

您可以对这个“磁道2等效数据”的最初8个字节进行切片以获得代码。

现在如何获取“轨道2等效数据”:

> < li>

选择付款应用程序(此处不包括PSE/PPSE流程,因为您可以执行此操作)

发送GPO命令。如果GPO命令APDU中不需要PDOL数据,通常80 A8 00 00 02 83 00是GPO的APDU。(如果SELCT命令的响应中没有9F38标记,则只需发送此APDU,否则必须创建PDOL)。有关GPO响应的更多详细信息,请参见EMV 4.3第3册第6.5.8节。

您将在GPO的响应中获得AFL,并根据AFL从应用程序中读取所有可用记录。通常,轨道2数据可以在2或3个初始记录中找到。

要理解AFL的编码,你可以参考第三册第10.2节EMV 4.3。

要了解读取记录 APDU 构造,请参阅 EMV 4.3 第 1 册第 11.2 节。

其中一条记录必须包含标签57,您可以获取该值。