Java 阅读NfcA Mifare经典NFC标签
我有不同的标签:Java 阅读NfcA Mifare经典NFC标签,java,android,nfc,mifare,Java,Android,Nfc,Mifare,我有不同的标签: 亚马逊标签:NfcA 我的钥匙:NfcA 一些广告标签:NfcA、Ndef、MifareUltraLight 我想读出我的钥匙。UID是2066 be 52,ATQA是0040SAK是0008(ATQA和SAK与Amazon密钥相同,所以我猜它也是Mifare经典1KB) 每当我尝试收发(byte[])时,我就会捕捉到标记性异常。有趣的事实:广告标签效果更好,但仍然抛出IOException:Transceive失败 尝试将标记(用于我的密钥)解析为IsoDep或Mifa
- 亚马逊标签:NfcA
- 我的钥匙:NfcA
- 一些广告标签:NfcA、Ndef、MifareUltraLight
2066 be 52
,ATQA是0040
SAK是0008
(ATQA和SAK与Amazon密钥相同,所以我猜它也是Mifare经典1KB)
每当我尝试收发(byte[])
时,我就会捕捉到标记性异常。有趣的事实:广告标签效果更好,但仍然抛出IOException:Transceive失败
尝试将标记(用于我的密钥)解析为IsoDep
或MifareClassic
会抛出一个Nullpointer
。只有NfcA
起作用,但我无法从标签中读取任何数据
有人能提供我的有效命令或任何其他方式来读取Android的内容吗
MifareClassic mfc = MifareClassic.get(tagFromIntent);
mfc.connect(); //Nullpointer
编辑:问题可能出在我的Nexus 4上(主要是为NFC购买的:()它似乎不支持MIFARE Classic标签。但如果你仍然有想法,请将它们写下来。好,现在很清楚:Nexus 4不支持MIFARE Classic(例如MIFARE Ultralight works)
它可以读取UID、ATQA和SAK,但它不能写入或读取块/扇区
遗憾的是,像Nexus 4(以及Nexus 10)这样的高端/旗舰设备无法读取最流行的标签。对。它不支持它不是因为它不符合NFC论坛,而是因为它使用了专有的加密算法(Crypto 1)Broadcom和Google不想授权。在使用NXP NFC控制器(Nexus S、Galaxy Nexus等)的设备上,您可以免费获得该许可,因为硬件支持它。通常,您需要检查结果SomeNfcTech.get()
为空,因为并不是所有的都能保证得到支持。此外,Crypto 1算法完全被破坏了,在新项目中使用Classic真的没有理由。我也不会为完全破坏的crypo支付许可费。Mifare Classic的消失对NFC技术来说是件好事。理论上可能吗在Android设备上重新在软件中实现Crypto 1(可能是通过修改NFC软件堆栈/驱动程序,还是必须在NFC硬件上实现?