我正在尝试开发一个在Android (4.4)上通过HCE模拟信用卡的应用程序。我有一个可以读取NFC标签的目标应用程序,现在我希望通过在我的设备上模拟NFC来达到同样的效果。该应用程序支持读取ISO 14443-4TypeA/IsoDep,这很好,因为这就是我正在模拟的。据我所知,应用程序读取的格式是:"B5105105105105100^CARDDATA^121222200000181000000,5105105105105100=121222200000181000000“(在本例中,我使用的是MC测试卡号)。我们的目标是让目标应用程序以正确的格式接收我发送的数据,而我还没有实现这一点。我试过检查其他例子,但它们很难找到,而且我的知识在这一点上有点有限。
我已经在我的apduservice.xml中设置了目标应用程序所需的辅助in
现在的问题是如何将正确的数据发送到目标应用程序?我想同时发送"B5105105105105100^CARDDATA^121222200000181000000“和track1”track2“5105105105105100=121222200000181000000我是否需要以某种方式通过AID/PPSE验证apdu部件,而不是通过apduservice文件?
我尝试过以下几种方法,但都没有成功:
代码:
public static String pan = "B5105105105105100^CARDDATA^121222200000181000000,5105105105105100=121222200000181000000";
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
byte[] response = new byte[] {};
return response = pan.getBytes();
}我遗漏了什么?感谢您的建议。
发布于 2014-02-12 18:24:33
你忽略了信用卡不是简单的记忆标签。取而代之的是,它们使用相当复杂的协议(由符合ISO 7816-4的文件结构组成,并使用特定命令来指令卡选择应用、返回文件数据、执行交易等)进行通信。信用卡协议由EMVCo指定,可在here中找到。
发布于 2014-04-30 07:50:13
例如,您可以查看此项目(https://bitbucket.org/tbellenger/hce_mobile_card/commits/52c7081cca5017638d4a74e40cb44a4bd7efb7f6)。不过,不要跳过这个提交,因为新代码会破坏功能。该应用程序能够通过NFC读取paywave或paypass信用卡,并将卡上的信息存储在手机中。然后,如果你在非接触式支付终端上点击手机,它将发送从手机接收到的信息。这里有一个你需要的助手库(https://bitbucket.org/tbellenger/card_tools)。祝好运。
https://stackoverflow.com/questions/21723134
复制相似问题