0

我在我的 android 手机中从一个 android 应用程序传输了以下 APDU 命令,

发送:00 A4 04 00 07 A0 00 00 00 03 10 10 00

通过 NFC 连接到 iPhone 6 并得到以下响应,

回复:6F 39 84 07 A0 00 00 00 03 10 10 A5 2E 9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 4E 14 BF 0C 0D 9F 4D 02 14 01 9F 5A 05 11 08 40 08 40 90 00

现在,我一直在尝试使用各种来源对此进行解密,但令人困惑的部分是要了解,这是 PKPaymenttoken 数据(我们在苹果支付响应中收到)还是只是 iPhone 存折中的加密卡数据6.

我将此结果与我从 PassKit-framework's-> paymentAuthorizationViewController method's-> payment.token string 得到的响应进行了比较,两者完全不同。所以我想这不是苹果支付的象征性回应。我的担忧是,

  1. 这是加密卡数据本身吗?可以直接解密得到卡的详细信息吗?(毕竟,Apple 会那么容易地给出卡片的详细信息吗?)

  2. 我的最终要求是通过 iPhone6 的 Android 手机中的 NFC 接受付款。那么我的 APDU 请求是否是从 iPhone6(存折)获取卡数据的正确请求?

任何想法都值得赞赏。谢谢。

4

3 回答 3

5

我在这个链接的帮助下试过了

https://github.com/devnied/EMV-NFC-Paycard-Enrollment

真的行。它直接从 iPhone 提供设备帐号。获取此设备帐号无需解密。

如何使用这个库

从此链接下载库

使用下面的代码

IProvider prov = new YourProvider();
// Create parser (true for contactless false otherwise)
EMVParser parser = new EMVParser(prov, true);
// Read card
EMVCard card = parser.readEmvCard();

您将在卡片对象中获取卡片详细信息。

回答你的两个主要问题

  1. 这只是对APDU命令的响应,如果您使用我提到的库,您将直接通过任何网关获取支付所需的卡详细信息。

  2. 第一个答案也是第二个问题的答案,您可以使用该库从 android 手机读取 iphone 6。所以只需两步集成库->获取卡详细信息->转发到支付网关。通过这种方法,您无需向网关发送任何私钥,只需像普通卡支付处理一样发送卡详细信息即可。

于 2015-06-11T05:11:10.303 回答
3

这是加密卡数据本身吗?可以直接解密得到卡的详细信息吗?

没有也没有。正如Anand在他们的回答中正确指出的那样,这是响应您的 SELECT(按 AID/DF 名称)命令返回的 FCI 模板,并与状态字9000(表示成功)连接。

FCI 模板是遵循基本编码规则 (BER) 的 TLV(标签长度值)编码数据结构。所以你的 FCI

6F 39 84 07 A0 00 00 00 03 10 10 A5 2E 9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 4E 14 BF 0C 0D 9F 4D 02 14 01 9F 5A 05 11 08 40 08 40

解码为(参见http://www.emvlab.org/tlvutils/):

6F [39]   File Control Information (FCI) Template
    84 [07]   Dedicated File (DF) Name
        A0000000031010    (full AID of the application that you just selected)
    A5 [2E]   File Control Information (FCI) Proprietary Template
        9F38 [1B]   Processing Options Data Object List (PDOL)
            9F66 04
            9F02 06
            9F03 06
            9F1A 02
            95 05
            5F2A 02
            9A 03
            9C 01
            9F37 04
            9F4E 14
    BF0C [0D]   File Control Information (FCI) Issuer Discretionary Data
        9F4D [02]   Log Entry
            1401    (Transaction log file with at most 1 record is available at SFI 0x14)
        9F5A [05]   Application Program Identifier (Program ID)
            1108400840

我的最终要求是接受付款[...]。那么我的 APDU 请求是从 iPhone6 获取卡数据的正确请求吗?

部分,是的。选择应用程序后,您将需要执行 EMV 支付交易(按照非接触式支付系统的 EMV 规范,您可以从http://www.emvco.com/获取它们)。但是,请注意,这并不像获取一些“卡片数据”那么容易。您将需要从非接触式“卡片”(即 iPhone)中检索一些静态卡片数据。此外,您还需要让 iPhone 生成一些动态交易密码/交易授权码。然后,您可以使用此数据来清算交易。

于 2015-02-18T07:47:41.200 回答
3

它不是加密数据,它只是 FCI 信息

您发送的 APDU:
00 A4 04 00 07 A0 00 00 00 03 10 10 00
P1=0x04 表示您正在通过 DF 名称选择 MF,P2=0x00 表示返回 FCI 信息。

您的回复6F 39 84 07 A0 00 00 00 03 10 10 A5 2E 9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 47 BF 04 9F 9 F 02 14 01 9F 5A 05 11 08 40 08 40 90 00

您的回复描述如下:
6F->its FCI templates(即控制参数和管理数据集)。
39->6F标签长度,这些字节是6F标签数据84 07 A0 00 00 00 03 10 10 A5 2E 9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 3 04 9F 4E 14 BF 0C 0D 9F 4D 02 14 01 9F 5A 05 11 08 40 08 40 90 00
84 表示 DF 名称的标签
07 是长度
A0 00 00 00 03 10 10 数据值,即 DF 名称
A5 是专有标签BER-TLV
2E 编码的信息是长度
9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 4E 14 BF 0C 0D 9F 4D 1 02 14 0 05 11 08 40 08 40 90 00->A5 标签值

于 2015-02-18T07:17:16.263 回答