EMV读取PAN码
EMV Reading PAN Code
我需要通过芯片读取每张可能的卡的PAN码。
在我的工作中,我只能使用 C,而且我没有可以帮助我完成这项无聊任务的例程。
这就是我使用的 APDU 步骤:
1) SELECT 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) 读取记录以获取特定的 AID
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位字符代码,正常情况下卡片上清晰打印的代码。
感谢大家
打印在智能卡(支付芯片卡)上的 8 字节(16 位)代码是可检索的。此信息是标签 57 中记录中 "Track 2 Equivalent Data" 个性化的一部分。
您可以将此 "Track 2 Equivalent Data" 的前 8 个字节切片以获取您的代码。
现在如何获得"Track 2 Equivalent Data":
SELECT 付款申请(这里不包括PSE/PPSE流程,因为你可以做到)
发送 GPO 命令。通常80 A8 00 00 02 83 00是GPO的APDU,如果GPO命令APDU中不需要PDOL数据的话。 (如果 SELCT 命令的响应中不存在 9F38 标签,则只需发送此 APDU,否则必须创建 PDOL)。有关 GPO 响应的更多详细信息,请参阅 EMV 4.3 Book 3 第 6.5.8 节。
您将在 GPO 的响应中获得 AFL,并根据 AFL 从应用程序中读取所有可用记录。通常可以在 2 或 3 个初始记录中找到 track 2 数据。
要了解AFL的编码可以参考Section 10.2 EMV 4.3 Book 3。
要了解 READ RECORD APDU 构造,请参阅 EMV 4.3 Book 1 Section 11.2。
其中一条记录必须包含标签57,您可以获取该值。
我需要通过芯片读取每张可能的卡的PAN码。 在我的工作中,我只能使用 C,而且我没有可以帮助我完成这项无聊任务的例程。 这就是我使用的 APDU 步骤:
1) SELECT 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) 读取记录以获取特定的 AID
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位字符代码,正常情况下卡片上清晰打印的代码。
感谢大家
打印在智能卡(支付芯片卡)上的 8 字节(16 位)代码是可检索的。此信息是标签 57 中记录中 "Track 2 Equivalent Data" 个性化的一部分。
您可以将此 "Track 2 Equivalent Data" 的前 8 个字节切片以获取您的代码。
现在如何获得"Track 2 Equivalent Data":
SELECT 付款申请(这里不包括PSE/PPSE流程,因为你可以做到)
发送 GPO 命令。通常80 A8 00 00 02 83 00是GPO的APDU,如果GPO命令APDU中不需要PDOL数据的话。 (如果 SELCT 命令的响应中不存在 9F38 标签,则只需发送此 APDU,否则必须创建 PDOL)。有关 GPO 响应的更多详细信息,请参阅 EMV 4.3 Book 3 第 6.5.8 节。
您将在 GPO 的响应中获得 AFL,并根据 AFL 从应用程序中读取所有可用记录。通常可以在 2 或 3 个初始记录中找到 track 2 数据。
要了解AFL的编码可以参考Section 10.2 EMV 4.3 Book 3。
要了解 READ RECORD APDU 构造,请参阅 EMV 4.3 Book 1 Section 11.2。
其中一条记录必须包含标签57,您可以获取该值。