阅读使用PPSE而不是PSE EMV卡(reading EMV card using PPSE an

2019-08-17 03:34发布

I'm trying to read the data off a contactless Visa Paywave card.

For the Paywave, I have to submit a SELECT using PPSE (2PAY.SYS.DDF01) instead of PSE (1PAY.SYS.DDF01).

The EMV book 1, section 11.3.4, table 43 only describes how to interpret the response for a successful SELECT command using PSE. Does anyone know or can refer me to a source that shows how to process the data returned from a successful SELECT command using PPSE?

Here's my request APDU:

00A404000e325041592e5359532e444446303100

Here's the response:

6F2F840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A564953412044454249548701019000

I understand tag 84, tag 85, tag BF0C from the response. According to the examples for reading PSE, I should be able to just send GET PROCESSION OPTIONS (to get the AIP and AFL) with PDOL = null after this successful response as follows: 80A80000830000.

But request 80A80000830000 returns error code 6985 - Command not allowed; conditions of use not satisfied.

I also tried reading all the files after successfully selecting the PPSE by traversing through every single SFI (0-30) and every single record (0-16) of each SFI. Yes, I also did the 3 bit shift and bitwise-OR the SFI with 0x4. But I got no data.

I'm stuck, any help that would point me into getting some info from my Paywave card would be appreciated!

Answer 1:

你从EMVLAB试过这个工具http://www.emvlab.org/emvtags/

使用该工具,

http://www.emvlab.org/tlvutils/?data=6F2F840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A564953412044454249548701019000



Answer 2:

你似乎有流动混合了一下,你希望:

  • 发送1PAY或2PAY,它实际上并不重要了所有我测试过的卡。 这将返回卡上可用艾滋病的列表。 或者你可以选择一个AID直线距离,如果你知道它的存在,但良好的做法是首先要检查。

  • 得艾滋病的列表响应1PAY / 2PAY返回,在payWave卡的情况下,这可能会是A0000000031010,如果你发送2PAY,但你可能会得到更多,如果你发送1PAY。

  • 选择艾滋病的一个发回(或一个你已经知道是那里)。

  • 然后遍历的SFI发送读取记录记录命令来获取数据。

你不必送送,即使是现在是一个正常的交易流程进行读取记录命令之前获取处理选项。



Answer 3:

我认为你正在寻找的信息,可以从这个网站VISA 。 但是,只有当你是VISA的注册和/或授权的合作伙伴。

编辑:纵观下所产生的TLV结构BF0C

tag=0xBF0C, length=0x1A
    tag=0x61, length=0x18
        tag=0x4F, length=0x07, value=0xA0000000031010 // looks like an AID to me
        tag=0x50, length=0x0A, value="VISA DEBIT"
        tag=0x87, length=0x01, value=0x01

我猜想,你需要首先选择A0000000031010得到处理之前做出选择。



Answer 4:

我选择的应用2PAY.SYS.DDF01。 当我应该已经选择AID = 0xA0000000031010。 它看起来像有正在申请2PAY.SYS.DDF01没有记录。

但是,有正在申请0xA0000000031010 1分的纪录。 我得到这个应用程序后,我执行读取记录,第一条记录给我的PAN和所有的信用卡信息,我想要的。

感谢大家在鸣响。



Answer 5:

如果你有兴趣在此万事达卡,以及,你可以使用triangle.io的API来做到这一点。 它是免费的,并读取万事达卡和Visa非接触卡,你这是你似乎什么希望。

需要注意的是阅读完所有的文件直接从卡中,而它会给你想要的数据,是不是真的按照EMV数据流。 后应用选择,应执行“得到处理选项”,然后生成PDOLs和神奇的休息。

http://www.triangle.io

声明:我triangle.io工作



Answer 6:

2PAY.SYS.DDF01是用于非接触(例如NFC)卡,而1PAY.SYS.DDF01为接触卡。

  1. 成功后(SW1 SW2 = 90 00)阅读PSE,你应该只搜索SFI(标签88),这是在FCI模板返回必填字段。

  2. 随着SFI作为起始索引,你就必须读从一开始指数开始记录,直到你得到6A83(RECORD_NOT_FOUND)。 例如,如果你的SFI是1,你会做一个readRecord与record_number = 1。 这很可能是成功的。 然后你increament record_number至2并再次执行readRecord。 该increament 3 ....直到你得到6A83为您的状态重复。

  3. 这些记录读会的ADF(至少1)。 那么你就必须读ADF名与你的终端支持,也是基于ASI(应用选择指示器)进行比较。 在结束时,你将有可能的ADF(候选清单)的列表

所有上述步骤(1-3)都记录在EMV规范的章节12.3.2第一册V4.3。

你将不得不做出最后的选择(第12.4第一册)

阅读本书规范1章12.3 - 所有的详细步骤12.4。



文章来源: reading EMV card using PPSE and not PSE