首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让SAK使用JAVA识别智能卡类型?

如何让SAK使用JAVA识别智能卡类型?
EN

Stack Overflow用户
提问于 2013-04-12 09:06:40
回答 3查看 6.4K关注 0票数 3

我正在使用Java智能卡API进行访问。我随身带着NXP 4K,1K,超高智能卡&用JAVA编程找出它的类型。

我参考了NXP (注/AN10833.pdf 10833.pdf)中的文档注/AN10833.pdf 10833.pdf。我有以下有关的问题:

  1. 如何使用JAVA获取SAK?
  2. 什么是执行REQA命令的APDU?
EN

回答 3

Stack Overflow用户

发布于 2013-04-15 07:51:05

找出卡片的ATR,ATR包含卡片类型的信息。在这里我上传图片看ATR的结构..。要获得更多信息,这里有完整的PDF文件请看第6页。

票数 5
EN

Stack Overflow用户

发布于 2015-01-12 19:44:21

编辑:很抱歉,这没有直接回答问题,但目前的最高答案是潜在有害的。我试图发现如何获得SAK本人将尝试张贴更新时,我这样做。

从ATS/ATR中确定卡片类型是很常见的,但错了。NXP建议使用SAK。

由于不同MIFARE集成电路的ATS可以定制,因此,依靠ATS来区分IC类型当然是不可取的

参考文献:注/AN10833.pdf 10833.pdf

相反,请在这里查看如何从SAK:注:130830.pdf中确定卡类型的详细树。

顺便说一句,在生产中,如果你能保证你的所有卡片上都会有相同的ATR/ATS格式,那是一个可行的选择。但这并不能得到保证。

我不知道VCA是什么,但从第一份文件来看:

“今后,NXP建议使用”Virtual( VCA )“进行PICC选择和类型识别。如果安装不依赖ATQA、SAK和/或ATS的实际内容来进行卡片选择和标识,则允许同时在单个设备中激活多个MIFARE产品。在这种情况下,VCA允许对目标MIFARE产品进行高效和对隐私友好的选择。这将在单独的应用说明中描述。”

票数 1
EN

Stack Overflow用户

发布于 2018-01-17 22:13:58

我知道这是一个旧的博客,但我一直致力于这个问题,并希望分享我的发现。

在AN10833中,它明确指出UID + SAK是在执行select时返回的。使用java智能卡io库,我可以执行如下选择:

代码语言:javascript
复制
// Send pseudo APDU to retrieve the card serial number (UID)
int cla = 0xFF;
int ins = 0xCA;
int p1 = 0x00;
int p2 = 0x00;
byte[] data = null;
int dataOffset = 0x00;
int dataLength = 0x00;
int le = 0x00;

CommandAPDU getDataApdu = new CommandAPDU(cla, ins, p1, p2, data, dataOffset, dataLength, le);
ResponseAPDU r1 = channel.transmit(getDataApdu);

但是,我只返回了UID。我在PC/SC上找到了一些文档,更改P1 = 0x01将改变对历史字节的响应(这对我是有效的)。

(此处的3.2.2.1.3节:v2.01.09.pdf)

不幸的是,对于现成的阅读器,我无法找到返回SAK的参数。在另一个阅读器的API文档中,我发现如果p2 = 0x01,则返回ATQA + UID + SAK (这个阅读器是比较好的,我不能共享文档)。

我相信,如果您的读者支持它(或者您正在编写足够低的级别来控制读取器本身),您可以得到/请求精确的SAK。否则,您可能需要使用ATS/ATR来确定卡类型。

注意,在Java中有获取ATS/ATR的代码:

代码语言:javascript
复制
// wait 10 seconds for a card
CardTerminal terminal = terminal.waitForCardPresent(10000);

Card card = terminal.connect("*");
ATR atr = card.getATR();

从那里,ATR可以像上面提到的vikky那样被处理。

我会用我学到的任何东西来回应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15967255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档