I have SCR3310v2.0 reader and chip card SLE5528, There are any code samples to be able to record and read the card information, or is there are any free software who do it?
1 回答
我使用的是 ACR38,所以可能有点不同。
如果您刚开始使用智能卡,您应该毫无疑问地获得一些 SDK(这基本上就是您所要求的)。
至于 SLE5528:该卡非常基础,您需要了解 3 个命令。
1) Read,可以随时使用这个命令(只要你连接)。使用 ACR38,我将发送以下命令:
FF B2 MSB LSB Length
这是一个APDU命令,第一个字节名为CLA,第二个字节为INS。这两个通常用于描述命令(也许总是)。然后你有P1和P2,这两个字节通常用于描述卡上的地址或命令的范围。最后一个是Lc,在这种情况下(可能总是)它表示要读取的字节数。这些之后的任何字节都是命令可能需要的数据字节。
请注意,由于这个行业如此疯狂,一些制造商可能会使用不同的命令。如果我没记错的话,我使用的手册在 INS 中指定了 B0,但在 SDK 演示代码中他们使用了 B2,这也是唯一有效的方法。
2)验证 PSC,如果您打算使用 write 命令,则必须先使用此命令。(每个会话一次)。
FF 20 00 00 02 PSC1 PSC2
通常默认的 PSC 代码是 FF FF。
3)写入,通过卡验证后可以执行该命令写入数据:
FF D0 MSB LSB Length DATA1 DATA2 DATA3 and so on.....
如果我想更改 PSC 代码,我所要做的就是将它的三个字节写入地址 03 FD。请注意,实际的验证码只有两个字节,但由于某种原因,我总是需要将第一个字节写为 FF,然后是我想要验证的实际两个字节。我相信这背后有一些原因,我只是不知道它是什么。
因此,编写一个简单的程序,首先从地址 A4 03 读取 14 个字节。然后使用默认 PSC 代码验证卡。最后将PSC代码更改为A2 B2;我们将这样做:
<< FF B2 A4 03 0E
>> FF FF FF FF FF FF FF FF FF FF FF FF FF FF 90 00
<< FF 20 00 00 02 FF FF
>> FF FF FF 90 00
<< FF D0 03 FD 03 FF A2 B2
>> FF A2 B2 90 00
请注意,阅读器总是会返回两个额外的字节到我们所期望的。这两个字节称为 SW 代码(或状态代码)。90 00 意味着一切都好。您可以找到每个返回码含义的参考资料
这是我正在使用的读者的手册: http ://www.acs.com.hk/drivers/eng/PMA_ACR38x.pdf
如果可以,请使用java,因为它们具有用于处理智能卡的内置函数,否则。你可以做我所做的并使用 Windows 的WinSCard API。