Android应用程序是否可以将先前存储的RFID卡ID发送到NFC读卡器?目的是使用Android设备来访问房间而不是物理RFID卡.在阅读了很多关于NFC/RFID和卡仿真的其他主题之后,我得出结论,目前在Android中无法使用它,但如果适用于这种特殊情况,我仍然感到困惑.应用程序不能简单地在NDEF消息或APDU命令中发送卡ID,或者我只是完全在做梦?
我在docs中发现他们指的是SIMPLE-TLV和BER-TLV.我查看了大多数EMV和GP文档,但他们没有提到不同的内容.
谁能帮助我理解两者的区别?
前言:
我有一个双接口智能卡读卡器,具有一些扩展功能(除了向卡发送APDU命令和接收APDU响应).
例如,在其文档中提到您可以使用以下命令获取阅读器的固件版本:
GET_FIRMWARE_VERSION: FF 69 44 42 05 68 92 00 05 00
在它的工具中,有一个用于此功能的按钮,它工作正常:
我甚至嗅了嗅USB端口,看看我的电脑和读卡器之间的连接到底有什么交换这个功能:
问题:
我想使用其他工具或通过代码获取我的阅读器版本(并可能发送其他扩展命令),但我必须在读卡器中插入一张卡才能发送命令,否则我会收到No Card Present
异常,而我不想发送命令到卡!(阅读器工具成功回答GET_FIRMWARE_VERSION,读卡器插槽中没有任何卡可用)
到目前为止我做了什么:
1.我尝试了一些工具,包括OpenSCTool,PyAPDUTool和其他读者工具.2.我写了以下python脚本来发送扩展命令.
#--- Importing required modules.
import sys
import time
sys.path.append("D:\\PythonX\\Lib\\site-packages")
from smartcard.scard import *
import smartcard.util
from smartcard.System import readers
#---This is the list of commands that we want to send device
cmds =[[,0xFF,0x69,0x44,0x42,0x05,0x68,0x92,0x00,0x04,0x00],]
#--- Let's to make a connection to the card reader
r=readers()
print "Available Readers :",r
print
target_reader …
Run Code Online (Sandbox Code Playgroud) 我目前正在从事文凭工作.部分工作包括开发常规SIM卡的JavaCard applet .第一种选择是使用JavaCard2.X API并使用APDU命令与applet通信.这可能非常棘手,因为我需要开发用于android的客户端应用程序(它将与此applet通信),并且到目前为止只能通过特殊 - 不那么用户友好 - API称为Seek-for-android.(如果我错了,请纠正我)
但是,我也遇到了JavaCard3 Connected Edition,它提供了更多选项 - 例如web applets.使用部署在SIM卡上并通过移动设备中的浏览器访问它们的webapps 将非常方便(当然,开发这样的applet也会更容易).问题是,我找不到任何提及Javacard3在现实生活中使用,甚至在真正的SIM卡上使用.我甚至找不到任何可能发布此类卡片的日期.实际上,几乎没有关于这个主题的信息.
所以,我的问题是 - 你对这个平台有什么用处吗?关于现实生活的用法?哪张卡支持Javacard3?是否有任何开发人员智能卡,"JC3启用"?将来会有这个平台的SIM卡吗?
非常感谢你的答案!
我在Eclipse中开发了一个Java Card applet并获得了一个cap文件.然后我使用jcManager - Java安全卡管理器将该文件加载到我的智能卡.我有两种类型的智能卡:
我的智能卡读卡器是:SDI011双接口读卡器.
另外,对于开发SIM applet,我正在使用Gemalto Developer Suite [3.6].该IDE有一个GSM模拟器,我的SIM小程序可以很好地工作.它给出了applet的cap,jar,jac,exp ..文件.
到目前为止一切都很好,但我想将该cap文件加载到我的联系人或非接触式Java卡[因为我没有可用的SIM卡],然后发送 - 接收APDU消息.
可能吗?如果有,怎么样?如何将我的SIM小程序加载到真正的智能卡 [ 不是SIM卡 ]?
有不同的智能卡支持ISO 14443-4.例如,Mifare Plus及其本机命令集.或其他具有不同命令集的卡(即7816-4 APDU).
我为读卡器开发了一些软件,我需要确定卡支持哪些命令(例如,它是否支持ISO 7816-4结构中的命令).
建议区分它们的方法是什么?我应该从Mifare Plus命令集中尝试一些命令并检查我是否得到正确的回复?或者有更聪明的方法吗?
我需要通过智能卡读卡器读取Maestro/Mastercard的帐号.我正在使用Java 1.6及其javax.smartcardio包.我需要发送APDU命令,它会询问存储在卡芯片上的EMV应用程序的PAN号.问题是,我找不到常规的字节数组来构造APDU命令,它会在任何地方返回所需的数据......
我正在使用IsoDep Tag Tech处理应用程序,以向启用NFC的卡发出APDU命令.
更新:所以下面看到的问题似乎与我正在使用的卡的电源要求有关,当我使用具有较低功率要求的不同卡时,下面的症状不会经常发生.
我明确地遵循了文档,并成功地实现了协议.然而,由于混合成功,我遇到了一些超出我的代码控制范围的NFC低级库的问题.
我已经实现了以下内容:
问题是我注意到了一些事情:
在Nexus S上,卡的位置取决于成功的通信流程,如果它不在最佳位置,我将收到IOException如果由于卡已移动或未保留在RF字段中而得到太多IOExceptions,我开始看到以下的消息(见下文)我想知道是否有其他人看到过这些问题?在我的onResume方法中,我没有任何逻辑来阻止多次调用方法的NFCAdapter实例:enableForegroundDispatch,我应该这样做.
在此先感谢您的帮助.
06-16 12:08:43.351: ERROR/NFC(661): NFC service dead - attempting to recover
06-16 12:08:43.351: ERROR/NFC(661): android.os.DeadObjectException
06-16 12:08:43.351: ERROR/NFC(661): at android.os.BinderProxy.transact(Native Method)
06-16 12:08:43.351: ERROR/NFC(661): at android.nfc.INfcAdapter$Stub$Proxy.enableForegroundDispatch(INfcAdapter.java:528)
06-16 12:08:43.351: ERROR/NFC(661): at android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:494)
06-16 12:08:43.351: ERROR/NFC(661): at myClass.onResume(MyClass.java:406)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.Activity.performResume(Activity.java:3832)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
06-16 …
Run Code Online (Sandbox Code Playgroud) 我正在寻找APDU找到联系少的ISO 14443智能卡的UID以及如何使用它在Linux终端上打印.问题是我发现很多人都在谈论它,但没有解决方案.谁能帮到这方面呢??? 谢谢
我们正在构建一个使用Android读取NFC标签的原型应用程序.但是,由于我们使用的是名为ACR1255U-J1的外置蓝牙读卡器,因此我们不使用嵌入式NFC读卡器和Android SDK.
我们使用的NFC芯片是带有v0.4命令集的Mifare Desfire EV1 8k.我认为这些被称为包装APDU命令,因为我认为EV1 v0.4不支持完整的ISO APDU命令集.
由于我们使用外部蓝牙读卡器(这是业务需求),我们不相信我们能够使用Android NFC SDK,而是需要使用蓝牙读卡器制造商提供的SDK.
无论如何,目前要读取8k的有效载荷,它需要花费超过25秒.我们怀疑,虽然还没有正式验证,但部分原因在于我们通过以下方式读取数据的方式:
每个帧大小最多为59个字节,因此我们理解即使我们要求在一个读取命令中读取更大的有效载荷(例如100k或整个8k),我们仍然只能在一个响应帧中获得59个字节的数据.
这导致我们执行131个单独的读取命令,每个命令然后阻塞并等待数据,然后将每个59字节段拼接在一起以获得有效负载.
由于命令是从Android应用程序,然后到蓝牙读卡器,然后到NFC卡,然后从卡和通过蓝牙读卡器返回到应用程序131次我们想知道这是否是花费的大部分时间.
我们正在尝试找到更好的方法来分析/调试问题.显然,由于使用Android NFC API的板载NFC阅读器能够在几秒钟内读取数据,因此可以更快地读取.
有没有人对我们的问题是什么或我们如何加快这一点有任何建议.