- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
总的来说,我对 Android 开发和 NFC 还很陌生。
我正在尝试构建一个应用程序来读取我对这张卡(公交卡)一无所知的 NFC 卡的内容,例如我想看看我还剩下多少张票。
我用各种 NFC 应用程序扫描了这张卡,知道这张卡的类型是:IsoDep AND NfcB。
现在我正在尝试使用 IsoDep 读取其内容,但没有成功(错误 6A82、91AE、6E00 等)。
我有一个应用程序正在等待 ACTION_NDEF_DISCOVERED || 类型的新 Intent ACTION_TECH_DISCOVERED || ACTION_TAG_DISCOVERED
打开一个新线程(因为无法在 UI 线程上读取和连接),我正在尝试读取卡片的内容。
我想我的问题出在传递给 isoDep.transceive(NATIVE_SELECT_APP_COMMAND)
的字节上。
我应该继续尝试使用 IsoDep 还是应该尝试使用 NfcB?你们有什么建议吗?
这是我的代码示例:
final byte[] SELECT = {
(byte) 0x00, // CLA Class
(byte) 0xA4, // INS Instruction
(byte) 0x04, // P1 Parameter 1
(byte) 0x00, // P2 Parameter 2
(byte) 0x08, // Length
(byte) 0x31, (byte)0x54, (byte)0x49, (byte)0x43, (byte)0x2e,
(byte) 0x49, (byte)0x43, (byte)0x41, // AID 315449432e494341
};
Tag tagFromIntent = m_intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep isoDep = IsoDep.get(tagFromIntent);
try {
isoDep.connect();
byte[] result = isoDep.transceive(SELECT);
String str = bytesToHex(result);
Log.i("test", "SELECT: " + str);
isoDep.close();
} catch (Exception e) {
String error = e.getMessage();
}
我的字节到十六进制函数:
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for ( int j = 0; j < bytes.length; j++ ) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
============================================= ==============
编辑:
我刚了解到这张卡使用的是Calypso认证方案。
这个问题的回答对我有点帮助:Read data from NFC tag (IsoDep)我找到了一个很好的 SELECT 函数,我编辑了我的问题以保留正在运行的新“SELECT”命令 - 作为返回,我得到这个字符串:“6F228408315449432E494341A516BF0C13C70800000000029780A55307060A07062004019000”,我不知道它是什么意思。
然后我使用这个命令尝试读取一个字符串:
byte[] GET_STRING = {
(byte) 0x80, // CLA Class
0x04, // INS Instruction
0x00, // P1 Parameter 1
0x00, // P2 Parameter 2
0x10 // LE maximal number of bytes expected in result
};
但我得到错误:6E00,关于如何继续的任何想法?
最佳答案
您可以使用 IsoDep 与卡进行通信。
你想在没有这张卡规范的情况下访问卡上的数据,所以有两种方法:
更新 1
要阅读 Rav Kav 卡,有一个开源项目:http://pannetrat.com/Cardpeek/ Rav Kav 的代码在这里 https://code.google.com/p/cardpeek/source/browse/trunk/dot_cardpeek_dir/scripts/calypso/c376n3.lua
关于Android NFC 从标签类型 : IsoDep and NfcB 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31795643/
我正在制作一个使用 ISO-DEP (ISO 14443-4) 作为 TagTechnology 的 NFC 应用程序。我尝试使用 DESFire EV1 执行身份验证。 如果命令的链接没有暂停,则身
我正在尝试从 Android 手机向 nfc 标签发送一些 apdu 命令并获得答案。使用的技术类型是 IsoDep。一切正常,但有时,当发送命令之间的时间间隔过长时,标签会切换到禁用状态,之后每次重
我正在尝试将数据写入 IsoDep 标签。 IsoDEP 标签的内存按结构层次组织: DF(专用文件) EF(基本文件) 在将内容写入标签之前,我使用了 SELECT 命令(在 APDU 命令集中)。
我真的是 NFC 编程的新手。我想访问例如卡上 NFC 标签上的帐号。我已经发现该卡(PayPass、Visa 等)是 IsoDep-Tech。 到目前为止我的代码: Tag tag = intent
我正在尝试从 ISO/IEC 14443 Type A 卡中读取一些信息。 在用安卓应用程序 NFC TagInfo 分析卡片后,我发现应用程序 (AID: 15845F) 有我需要的特定文件 (文件
我正在尝试使用 IsoDep 和 NfcAdapter 类将 APDU 发送到标签(智能卡),我有两个问题: 1) 有没有办法获得 Disconnected Intent (例如,当卡片被拿走时)?我
谁能告诉我这个功能背后的“科学” `IsoDep.get(tag)` 因为它返回 null 甚至标签被正确读取。我在 eclipse 中运行 android 应用程序。 最佳答案 执行以下步骤。 1
我知道这是一个没有明确答案的“讨论”主题,但我真的很想得到一些反馈,了解在为 Android 开发 NFC 应用程序时会发生什么,特别是使用 IsoDep 与使用 APDU 帧的 DESFire 卡进
我是 Android NFC API 的新手。 目前,我有一个 NFC 标签,我正在制作一个 Android 应用程序来从中读取数据。当我的手机离 NFC 标签足够近时,我的简单应用程序就会启动。但我
我有一个应用程序可以读取各种类型的 NFC 标签。多年来它运行良好,但对于较新的 Android 设备,java.io.IOException扫描特定类型的标签时始终抛出。有问题的标签同时支持 Mif
我正在尝试对 chariotsolutions 实现 IsoDep 读取功能 phongap-nfc插件,到目前为止(即使我是 Java/android 和 cordova/phonegap 的新手)
我想通过 NFC 读取 RFID 卡,该卡来自哥伦比亚波哥大本地的交通系统。我知道这是可能的,因为我已经下载了一个可以执行此操作的 Android 应用程序! 到目前为止我的进展...当我 Handl
总的来说,我对 Android 开发和 NFC 还很陌生。 我正在尝试构建一个应用程序来读取我对这张卡(公交卡)一无所知的 NFC 卡的内容,例如我想看看我还剩下多少张票。 我用各种 NFC 应用程序
我使用 NFC 标签,它发现了 ISO、NFCA 和 NDEF 技术。有信息要从芯片读取,我尝试访问内存,但我用来与TAG通信的大多数命令都以响应[110, 0] 字节。我找不到这是什么意思,其中一些
我正在尝试模拟 PoS,销售点 :),系统并使用在 2013 Nexus 7(无安全元件)v4.4.2 上运行的 Google 钱包完成交易。 我的 PoS 原型(prototype)也在 2013
我一直在尝试创建一个可以读取两种不同类型的 NFC 标签的应用程序。一个应该是 HCE-IsoDep,在 Nexus 5 上模拟,一个是 Ndef-tag。但是我遇到了一个小问题: 我设法阅读了两种类
我正在开发一个 android 应用程序,需要从 B 型卡读取和显示数据。卡连接良好,但调用 isodep.isConnected() 时返回 false。 我用 TagInfo 应用程序(由 NXP
我仍在尝试模拟销售点 (POS) 系统并使用 Google 钱包完成交易。我在堆栈溢出方面得到了很好的答案。参见 Android isoDep.transceive on Generate AC co
我是一名优秀的程序员,十分优秀!