- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序的 AID 是 F239856324897348
,我已经为它构造了一个 SelectAID APDU。现在我如何将它实际发送到使用主机卡仿真的接收 Android 设备。
我已经创建了我的 HCE 服务来响应 APDU,就像在这个线程中一样:How to define an APDU for STORE DATA for Host Card Emulation?
public static byte[] SelectAID = new byte[]{
(byte) 0xF2, (byte) 0x39, (byte) 0x85, (byte) 0x63,
(byte) 0x24, (byte) 0x89, (byte) 0x73, (byte) 0x48};
private void commandAPDU(byte[] apdu){
//where do I go from here...
}
commandAPDU(SelectAID);
最佳答案
APDU 的格式在 ISO/IEC 7816-4 中定义。典型的 SELECT(通过 AID)命令如下所示:
+-----+-----+-----+-----+-----+-------------------------+-----+| CLA | INS | P1 | P2 | Lc | DATA | Le |+-----+-----+-----+-----+-----+-------------------------+-----+| 00 | A4 | 04 | 00 | XX | AID | 00 |+-----+-----+-----+-----+-----+-------------------------+-----+
You could create it like this:
private byte[] selectApdu(byte[] aid) {
byte[] commandApdu = new byte[6 + aid.length];
commandApdu[0] = (byte)0x00; // CLA
commandApdu[1] = (byte)0xA4; // INS
commandApdu[2] = (byte)0x04; // P1
commandApdu[3] = (byte)0x00; // P2
commandApdu[4] = (byte)(aid.length & 0x0FF); // Lc
System.arraycopy(aid, 0, commandApdu, 5, aid.length);
commandApdu[commandApdu.length - 1] = (byte)0x00; // Le
return commandApdu;
}
然后您可以将此类 APDU 命令发送到通过阅读器模式 API 发现的标签/HCE 设备:
public abstract void onTagDiscovered(Tag tag) {
IsoDep isoDep = IsoDep.get(tag);
if (isoDep != null) {
try {
isoDep.connect();
byte[] result = isoDep.transceive(selectApdu(SelectAID));
} except (IOException ex) {
} finally {
try {
isoDep.close();
} except (Exception ignored) {}
}
}
}
关于android - 如何向 HCE 设备发送命令 APDU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51331045/
嗨,我是 java 卡新手,我有以下数据 CLA '00' INS 'A2' nb not real value P1 '00' P2 '00' LC '08' Data In 'EF08' L
像这样将GPO命令定义为APDU命令: CLA INS P1 P2 Lc Data Le 80 A8 00 00 Lc Data 00 因此,缺少的部分是 Lc 和数据,我们必须根据PDOL的 P
我正在尝试手动生成 AC,我有一个生成 AC 的工具,但我想自己生成它以了解其算法。 我的计算对于 Discover 卡来说没问题,但对于 MasterCard 却失败了。据我了解,用于生成AC的数据
我需要通过芯片读取每张可能的卡的 PAN 码。在我的工作中,我只能使用 C,而且我没有可以帮助我完成这项无聊任务的例程。这就是我使用的 APDU 的步骤: 1) 选择 1PAY.SYS.DDF01 0
我正在编写 Java Applet。我需要使用 APDU 命令将预生成的 RSAPrivateCrtKey 上传到小程序。 我在我的电脑上生成 key 。接下来我在 privateKeyBuffer
我一直在使用有线智能卡读卡器 SDK,其中调用是同步的。最近一直在尝试蓝牙接口(interface),但 APDU 命令是异步的,因此我们无法解释为形成下一个 APDU 命令而发送的调用的响应。 任何
问题:假设有一个 Applet 的多个实例。当前选择了一个Applet 实例。是否可以将任何 APDU 命令从选定的 Applet 传递到另一个 Applet 实例?我在JavaCard API 3.
主机发送以下命令给小程序选择EF文件 00 A4 02 00 02 40 01 目的是选择 ID 为 40 01(在命令的数据字段中指定)的 EF 文件。 但是当我调试 process(APDU ap
我对符合 ISO7816-4 标准的首款行业间 APDU 感兴趣。这样的 APDU 可以/允许的最大长度是多少? 我能想到的最长的APDU应该是扩展长度的ISO case 4 APDU。这意味着我们有
我的新 javacard 上有一个小程序的 AID 列表。每个小程序的用途是什么?以及如何获得每个命令都支持的 APDU 命令列表?我需要小程序的 .cap 文件所用的 java 源代码吗?我的另一个
我创建了一个包(AID=0102030405),其中包含两个小程序。 这是第一个小程序 (AID=01020304050202020202) 的程序,它将 bArray 的内容存储到静态字段并在 pr
我正在尝试与显然是根据 EMV 规范实现的 SAM 进行通信。每当我问他们问题时,开发人员只会向我推荐 EMV 书籍。一瘸一拐地通过 EMV 卡和终端规范后,我终于设法一个接一个地发送命令,并使用 C
我正在使用javax.smartcardio通过CardChannel.transmit(CommandAPDU command)向智能卡发送APDU命令。 但是,似乎在某处定义了超时,因为当我没有收
我刚刚开始制作一个使用主机卡模拟 (HCE) 的应用程序,并且我已经完成了各种零碎工作。我需要该应用程序使手机表现得像一张卡,而另一部手机表现得像 NFC 读取器并扫描它,反之亦然,以便交换一小段信息
我正在尝试从智能卡中的文件中读取数据,我正在使用以下 APDU 命令 00 B0 00 02 00 但是我得到了这样的回应: A1 1B 4F 0C A0 00 00 00 77 02 08 05 0
我正在使用 JCard sim,java 卡版本 2.2.2,我想知道 .scr 文件如何与 .java 文件相关联。 (NetBeans IDE 上的 Java 卡模拟器。我没有使用实际的智能卡)。
我正在使用 javax.smartcardio 包来开发与智能卡相关的应用程序。我想发送伪 ADPU 命令来设置阅读器的 LED/LCD 状态。 我发现向读卡器/卡发送 APDU 命令的唯一方法是 C
如您所知,Gloabal Platform Card Specification定义了一个名为 Get Data 的命令来从智能卡中检索一些信息。 GlobalPlatformPro是与智能卡通信的流
哪个 APDU 命令获取卡 ID 的 7 个字节? 我使用带有 ISO14443 层的 T=CL (ISO7816) 协议(protocol)。在检测卡上,我只能看到卡 ID 的 4 个字节。 我发现
我想发送一个响应 APDU,其中包含响应数据字段以及非 0x9000 的状态字。考虑到我对 ISO 7816-4 的理解,这通常应该是可能的。 但是,每当我指定返回数据并尝试发送它时,我看不到任何显式
我是一名优秀的程序员,十分优秀!