我在我的android手机上发送了以下APDU命令,来自一个android应用程序,
发送:
00 A4 04 00 07 A0 00 00 00 03 10 10 00
通过NFC发送到iPhone 6并得到以下响应,
resp:
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框架的-> paymentAuthorizationViewController方法的-> payment.token字符串中得到的响应进行了比较,两者完全不同。因此,我想这不是苹果支付的象征性回应。我担心的是,
任何想法都是值得感激的。谢谢。
发布于 2015-06-11 05:11:10
我试过在这个链接的帮助下
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();您将在卡对象中获得卡的详细信息。
回答您的两个主要问题
发布于 2015-02-18 07:17:16
它不是加密的数据,它只是FCI信息
APDU由您发送:
00 A4 04 00 07 A0 00 00 03 10 100
P1=0x04表示您要按DF名称选择MF,而P2=0x00则表示要返回FCI信息。
你的回应:6F 39 84 07 A0 00 00 00 10 10 A5 2E 9F 38 1B 9F 66 04 9F 06 9F 03 06 9F 069 F 095 05 5F 02 2A 095 05 A 03 9C 01 9F 37 04 9F 4E 14 BF 0C 0D 9F 4D 02 01 9F 05 11 08 40 40 90 00
你的答复如下:
6f->其FCI模板(即控制参数和管理数据集)。
> 6F标签长度,这些字节为6F标签数据84 07 A0 00 00 10 A5 9F 38 1B 9F 66 04 9F 02 06 9F 03 06 9F 095 95 05 5F 02 02 05 9F 03 049 F 01 049 F 4E 14 BF 0C 0D 9F 4D 02 01 9F 5A 05 08 08 40 40 90 00
DF名称的84表示标记
07是长度
A0 00 00 00 03 10数据值,即DF名称
A5是用误码编码的专有信息的标记。
2E是长度
9F 38 1B 9F 66 04 9F 02 06 9F 06 9F 03 06 9F 02 95 05 5F 2A 02 03 0C 01 9F 37 04 9F 4E 14 BF 0C 0D 9F 02 01 9F 5A 05 08 08 40 90 00>A5标签值
发布于 2015-02-18 07:47:41
这是加密的卡数据本身吗?我能直接解密得到卡的细节吗?
不和不。正如阿南德在回答中正确指出的那样,这是响应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生成一些动态事务加密/事务授权代码。然后,可以使用这些数据清除事务。
https://stackoverflow.com/questions/28577293
复制相似问题