问题标签 [contactless-smartcard]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 创建和发送类似于护照芯片的 NDEFMessage
我正在使用和测试这个库http://jmrtd.org/,这是一项很棒的工作。我学会了如何读取和处理护照芯片上的所有数据。现在我的下一步将是创建一个简单的 android 应用程序,用于发送我必须使用同一个库读取的 NdefMessage。我想最简单的方法是创建一个模拟护照芯片结构的 NdefMessage 。这可能吗?您对此有什么建议或经验吗?谢谢
android - 重新格式化 MIFARE DESFire (MF3ICD40) NFC 标签
我有一些曾经是公共汽车/火车通行证的 MIFARE DESFire (MF3ICD40) NFC 卡。我正在尝试重新格式化该卡。我不在乎我是否丢失了卡上已有的信息,或者我是否只能在卡中添加更多信息,如果有任何可用空间。我知道有些应用程序会在应用程序/云中存储命令并仅读取 NFC 序列号,但我希望编写这些卡以供我以外的人使用。
android - 与 MIFARE Plus SL3 的通信(命令)
我正在尝试与 MIFARE Plus 卡通信 - 我需要读/写。但是,我找不到执行此操作所需的文档。我知道命令集在 NDA(或其他东西)之下,但我的公司可以访问这些文件 - 我只是不知道我需要向他们请求哪些文件。
任何帮助将不胜感激。
如果有人提供了一个真正技术性和详细的答案(手指交叉),我在 Android 上这样做
编辑:标签是安全级别 3。
android - Android NfcA Transceive 成功失败
我制作了一个简单的测试应用程序以进行快速调试。我发送一些字节,在手机屏幕上打印我发送的内容并打印我收到的内容。
当我发送错误命令时,我在两个字节 SW1SW2 中得到相应的错误代码。我也可以调用我自己的命令并用我自己的值覆盖 SW1SW2,我可以得到它们。
这是问题所在:当我发送一个正确的命令时,收发命令失败,并出现信息异常“收发失败”。
如果我发送正确的命令,但将 SW1SW2 覆盖为 90 00 以外的值,那么我会得到我设置的 SW 值,但没有响应数据。(可能是因为当 SW1SW2 <> 90 00 时卡不发送 ODATA)
那么我为什么这么确定我发送了正确的命令呢?除了搞乱我自己的测试命令之外,我还调用了 GetAppId 命令——它失败了,说我必须在卡中定义 AppId。所以我在卡中定义它,发送相同的命令并且收发失败。
所以我很确定问题是当有 ODATA 时收发失败,但我不明白为什么或如何修复它..请帮助!
编辑:我的卡是 ZeitControl 的 7.5 D 非接触式基本卡。
EDIT2:我已将超时设置为 2000 毫秒,但行为没有变化。我正在尝试返回单个字节的数据,并且我调用的系统命令听起来也不重。
然后我下载并附加了Android源代码并进行了调试。有一些部分它仍然不会进入 - 但卡似乎在有效命令上返回 null ,除非我返回一些手动设置的 SW1SW2 在这种情况下,这是唯一收到的东西。
EDIT3:我尝试的系统命令是:192 14 0 0 0(或 C0 0E 00 00 00)(或 CLA INS P1 P2 Lc)我不是 100% 确定我做对了,但我试过了Le 的各种长度(最多 22 个)和没有 Le 如上所述,只有没有它不会给我 6700(错误的 Le/Lc)当然不是 6700 它返回 null 似乎......
另一个命令是我自己定义的 20 0A(值作为字节)并且在 .BAS 文件中没有指定 P1/P2。我称它为:32 10 1 0 1(或 20 0A 01 00 01)(或 CLA INS Lc IDATA Le)这应该意味着输入 1 个字节数据,设置为 0,预期输出 1 个字节(+ SW1/SW2 为总是)。(设置 P1/P2 给出 6700 所以除非在命令声明中定义,否则我认为它们不应该存在)这也返回 null。我希望在这里返回 00 90 00。(如果我将“值”设置为 00 即)
我正在使用 HTC One X。
EDIT4:MinSdk 版本 = 14 和目标 18。
android - Android NFC ISODep 支持有多成熟?
我知道这是一个没有明确答案的“讨论”话题,但我真的很想得到一些关于在为 Android 开发 NFC 应用程序时会发生什么的反馈,特别是使用 IsoDep 与使用 APDU 帧的 DESFire 卡进行通信。
- 我可以期望发送到特定 DESFire 卡的相同 APDU 帧在 Android 设备和版本之间的响应相同吗?
- 我应该至少在哪些 Android 版本和设备上进行测试才能得到合理的覆盖?
- Android驱动程序中的错误或回归是否很常见,或者我可以期待这些在很久以前就被根除?
- 你推荐支持的最早的安卓版本是什么,以免太麻烦?
到目前为止,我的体验出人意料地好坏参半(3 种设备,3 种差异),我真的很想听听其他开发人员的意见。例如:在 S3 (Android 4.1.2) 上工作的相同 APDU 命令在 S4 (Android 4.3) 上不起作用(在第 3 次 auenticate 握手时出现“错误长度”失败,直到那时一切正常)。这些手机有不同的 NFC 芯片组,但我没想到 APDU 帧的抽象级别会有所不同。
android - 与 ISO/IEC14443-3a(Layer3 交换)通信以进行 NFC 交换 Mifare Plus 卡
我是 NFC 开发的新手。我想了解是否有可能与 ISO/IEC 14443-3A 协议层(第 3 层交换)上的标签通信并与 Mifare Classic 和 Plus 卡交换命令数据?由于 Mifare Classic 和 Mifare PLus (SL1/SL2) 在第 3 层交换过程中工作。
我们如何在 Android 中不使用 IsoDep 交换数据?
java - 使用 Nexus S 和 ACS ACR122 进行卡仿真
正如我在标题中所写,我正在尝试使用我的 Nexus S、Cyanogenmod 10.1.3 和 ACS Acr122 USB 读卡器来使用卡仿真。我发现这篇文章http://nelenkov.blogspot.it/2012/10/emulating-pki-smart-card-with-cm91.html和带有源代码的 github https://github.com/nelenkov/virtual- pki 卡。我按照说明进行操作,发生了一件奇怪的事情。当智能手机在阅读器上时,连接会反复启动和停止,因此演示不起作用,客户端会引发此异常:
你对如何解决这个问题有任何想法吗?谢谢
java-me - 检测 J2ME (JSR257) 中的智能卡删除?
我正在使用 J2ME 非接触式 API ( JSR257 - javax.microedition.contactless.*
) 来读取诺基亚手机上的智能卡。以下代码可以正常工作,targetDetected
当我将卡放在手机上时,该方法会按预期调用:
但是,我想知道当卡片被移除时是否有任何方法可以获得回调?或者是检查卡是否已被移除try
并打开或读取连接以及catch
适当异常的唯一方法?
rfid - ISO 15693:读取多个安全块
我正在尝试将当前从 ISO 15693 附近 RFID 卡 (TI Tag-it HF) 读取一个安全状态/块的现有 SCardTransmit() 命令 (C#) 修改为将检索所有 64 个块的安全状态的命令卡片。现有代码如下:
按照我的理解,Convert.ToByte(blockNum) 前面的字节表示获取安全状态的命令,然后是有问题的块,以及要读取的块数。我看到的有关安全状态读取的唯一参考资料是“非接触式智能卡读卡器开发指南”中的第 10.3.4 节
注意:SmartCardTransmit 负责使用正确的卡句柄和其他所需参数调用 SCardTransmit。我对表示对安全块 0 到 63 的请求的发送标头的格式更感兴趣。
nfc - PN532向Mifare卡写入数据
我想将数据写入 MIFARE Classic 卡。但是不知道可以写哪个地址。我只知道不能写入扇区0。谁能给我看一下可以写的完整地址图?