我正在尝试使用非接触式OmniKey 5321读卡器读取智能卡信息.
编辑:添加了赏金.
我正在.NET 3.5程序中编写C#3,所以这是一个Windows应用程序.
该卡上印有一些信息,我会假设,卡片数据中存在某些信息(下面有卡片和读卡器的照片.)
该卡上印有以下信息:
1* 00447 21091328-32
使用OmniKey读卡器附带的诊断应用程序时,我会收到以下信息:
Smart Card Name: iCLASS 16KS UID:EE 74 0E 00 FB FF 12 E0 ATR : 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 1A 00 00 00 00 78 Protocol : ISO 15693 (Part 2)
现在,我已经考虑了一些转换:
这是我的问题:
这是照片,如果它给你任何信息.
uniqueidentifier smartcard smartcard-reader winscard iso-15693
好吧,我的目的是检测Android设备是否支持NFC,如果不支持我将使用其他技术.我已将最低API级别设置为8,因为我希望我的应用程序即使在没有NFC的这些设备上也可以运行.
有没有像isNFCSupported()这样的方法?有任何想法吗?
谢谢yosoh.
我试图根据本文档使用我的Nexus 5模拟NFC标签,但我的服务永远不会被调用.我应该关闭Android光束吗?
我想模拟一个包含网址的简单标记.
读者是Nexus 7(2012),我已经发现这个过程就像在Nexus 7上使用Android光束简单扫描NFC标签一样.
另外我对辅助过滤器名称有点困惑.有他们的清单吗?
我确定我不明白.谢谢
Stackoverflow上有很多关于Desfire EV1卡的问题.但是,如果您搜索一些示例数据,那么您将在Ridrix博客中找到几个字节的唯一位置.但这还不完整.
在为Desfire卡开发代码时,很多人都在那里写了他们的问题.但大多数情况下,当他们解决问题时,他们懒得发布解决方案.因此,您会发现许多问题,但很少有数据示例的答案.
即使你有Desfire EV1文档(我没有它,我研究过easypay代码),你还需要更多.文档只是理论.但是,您的卡返回身份验证错误或完整性错误或意外CMAC的原因是什么?
没有例子,你完全迷失了.
我正在尝试从ISO/IEC 14443 A型卡中读取一些信息.
在使用Android应用程序NFC TagInfo分析卡片后,我发现应用程序(AID:15845F)具有我需要的特定文件(文件ID:01).
我已经设法连接到卡并选择应用程序.
String action = getIntent().getAction();
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action))
{
Tag tagFromIntent = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.i(TAG, Arrays.toString(tagFromIntent.getTechList()));
IsoDep isoDep = IsoDep.get(tagFromIntent);
try
{
isoDep.connect();
byte[] SELECT = {
(byte) 0x00, // CLA = 00 (first interindustry command set)
(byte) 0xA4, // INS = A4 (SELECT)
(byte) 0x04, // P1 = 04 (select file by DF name)
(byte) 0x0C, // P2 = 0C (first or only file; no FCI)
(byte) 0x06, // Lc = 6 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用NFC将Android应用中的URL发送到WP8手机.
当发送到Android设备时,URL会正确发送.然而,当发送到WP8时,IE加载到Play商店的链接而不是我想发送的链接(例如" http://www.stackoverflow.com ").
Play商店链接为:" https://play.google.com/store/apps/details?id=com.example.conductrnfc&feature=beam ".其中" com.example.conductrnfc "是项目中的包名称.
我用于生成NFC消息的代码如下.我在这里做错了什么打破了与WP8的兼容性?
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
nfc.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() {
@Override
public NdefMessage createNdefMessage(NfcEvent event)
{
NdefRecord uriRecord = NdefRecord.createUri(urlString);
return new NdefMessage(new NdefRecord[] { uriRecord });
}
},
this);
Run Code Online (Sandbox Code Playgroud) 我想将从NFC读卡器获得的APDU路由到SIM卡.根据HCE文档,我认为只需通过创建一个具有相应路由条目的OffHostApduService(我做过)就可以实现.
可悲的是,SIM似乎没有得到任何APDU.SELECT-SIM由SIM-Reader直接连接到我的工作站时使用的命令返回6a82(找不到文件).
在LogCat中,我发现了两个有趣的信息:
每当我拍摄一个应该被路由到SIM的选择命令时,我会得到以下条目:
01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: event=0x17
01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: NFA_CE_DATA_EVT; h=0x302; data len=12
01-14 10:44:18.501: D/HostEmulationManager(1009): notifyHostEmulationData
Run Code Online (Sandbox Code Playgroud)
我认为这是路由设置不正确的线索,因为我认为当到SIM的路由处于活动状态时,Android操作系统不应该知道,并且向SIM发送选择或其他命令.
每次我从阅读器的NFC字段中删除手机时,都会收到以下错误:
01-14 10:46:48.791: E/BrcmNfcNfa(1009): UICC[0x0] is not activated
Run Code Online (Sandbox Code Playgroud)
我试图跟踪此错误的原因,并找到了external/libnfc-nci/src/nfa/ce/nfa_ce_act.chere
似乎属于Broadcom NFC驱动程序的文件.
我认为错误是应用程序无法为APDU设置正确的路由,因为驱动程序认为SIM未被激活.在我发送命令的那一刻,SIM卡被解锁(PIN输入),但我怀疑这与它有什么关系,因为我不需要在读卡器中使用它之前解锁SIM卡.
我使用Nexus 5进行测试.是否有人有经验和/或工作示例,其中APDU可以路由到SIM而不是CPU?
我想获得Mifare Ultralight NFC标签的UID.在Java中我有这个代码:
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
System.out.println("Terminals: " + terminals);
CardTerminal terminal = terminals.get(0);
Card card = terminal.connect("*");
System.out.println("card: " + card);
CardChannel channel = card.getBasicChannel();
ResponseAPDU answer = channel.transmit(new CommandAPDU(0xFF, 0xCA, 0x00, 0x00, 0x00));
byte[] uid = answer.getBytes();
Run Code Online (Sandbox Code Playgroud)
问题是我收到两个字节而不是UID.有什么问题?APDU是否正确?
我正在开发一个我希望分发给其他开发人员的库项目.
在互联网上有很多关于这个主题的讨论,人们建议创建一个分发版本库项目,其中只包含我的库项目的jar和其他资源.这听起来不错.
然后,我突然发现有人建议创建Android Archive Library(AAR).但他们都使用名为Gradle的工具
我正在将Eclipse与Maven一起用于我的Android库项目.我的问题是,是否有可能为我的android库项目生成AAR实现 而不使用Gradle但仅使用Maven?如果是这样,怎么样?
我正在尝试向智能卡发送命令.我使用Gemalto IDBridge CT30(PC TWIN阅读器)和通过USB连接到Android设备的IDBridge K30.
我尝试通过USB发送SELECT APDU命令:
boolean claim = openedConnection.claimInterface(usbInterface, true);
byte[] data = new byte[]{
(byte) 0x00, (byte) 0xA4, (byte) 0x04, (byte) 0x0C,
(byte) 0x07, (byte) 0xA0, (byte) 0x00, (byte) 0x00,
(byte) 0x01, (byte) 0x18, (byte) 0x45, (byte) 0x4E};
Run Code Online (Sandbox Code Playgroud)
之后我收到了答案:
final int dataTransferred = this.openedConnection.bulkTransfer(endPointOut, data, data.length, TIMEOUT_MS);
if(!(dataTransferred == 0 || dataTransferred == data.length)) {
throw new Exception("Error durring sending command [" + dataTransferred + " ; " + data.length + "]"); //$NON-NLS-1$ …
Run Code Online (Sandbox Code Playgroud)