我想通过NFC读取RFID卡,该卡来自哥伦比亚波哥大的当地交通系统。我知道这是可能的,因为我已经下载了一个可以做到这一点的Android应用程序!
到目前为止我的进展...当我将手机放在卡上时,我的应用程序已启动,其中包含ACTION_TECH_DISCOVERED意图,我可以读取卡片UID等内容,但我不知道如何阅读我想要的信息,特别是卡上的钱。
我在这里阅读stackoverflow,我需要做的是找到我想要访问的应用程序并发送ADPU命令,但看起来我的卡没有任何应用程序,因为使用任何Android应用程序探索卡,它总是说找到0应用程序。所以,我不知道我必须在哪里获得这些信息。
我卡上的技术信息是:
谢谢!
答案 0 :(得分:2)
我在stackoverflow中[读取]我需要做的是找到我想访问的应用程序并发送ADPU命令。
正确,这正是你需要做的。获得此信息(即卡的通信协议规范)后,您将执行以下操作:
Tag tag = ... // TODO: get tag handle from intent
IsoDep isoDep = IsoDep.get(tag);
if (isoDep != null) {
isoDep.connect();
byte[] response = isoDep.transceive(SELECT_APDU); // SELECT_APDU = 00 A4 0400 <Lc> <APPLICATION ID>
// TODO: send further APDU commands according to the protocol specification
//response = isoDep.transceive(APDU);
isoDep.close();
}
[...]但看起来我的卡没有任何应用程序,因为使用任何Android应用程序探索卡,它总是说找到0应用程序。
这通常只意味着扫描仪应用程序*已知的卡**上没有应用程序。许多ISO-DEP卡没有卡上可用的公共可读应用程序目录。 (虽然有些卡可能有EF.DIR或类似的东西。)
所以,我不知道在哪里必须得到这个信息。
对,这通常是棘手的部分。有几种方法: