我正在寻找一个简单的初学者程序,使用Java Card在sim卡上运行.有人能指出一些关于入门的基本信息吗?我已经看过工具包api的一些描述,但我正在寻找类似的东西:SIM卡支持哪些功能,如何将我的代码上传到卡上(我需要特殊的硬件吗?),我该怎么说?一张sim卡是否支持java卡,那种东西.
编辑:我特别想在sim卡上运行代码.我在网上看过一些非常高水平的教程,但没有任何东西可以连接到SIM卡或上传代码.我有一个USB SIM卡读卡器和各种卡进行测试,但我找不到有关如何使用它们的任何细节.
我是Java Card Programming(使用netbeans)的新手.我在Java Card Development Quick Start页面中做了所有事情,我创建了一个经典的卡片小程序,并尝试模拟它.但是当我尝试在设备控制台上模拟并发送命令时,它会发送错误
"Connection refused: connect".
我不明白,有什么不对.
有什么建议?
这是它的屏幕截图:
我通过Eclipse制作了流行的"Hello World"javacard代码的.cap文件
现在我想通过GPShell和ACR38智能卡读卡器将它加载到真正的javacard中.
问题:我需要任何密钥才能在卡中加载.cap文件吗?我的意思是,我应该在将我的小程序上传到卡中之前进行身份验证,还是不是必需的?我认为认证是非常重要的.在没有身份验证的情况下上传.cap是不合理的.但我不知道,如何进行身份验证.问题:这有什么问题?
C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
javax.smartcardio.CardException: connect() failed
at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
Caused by: sun.security.smartcardio.PCSCException: SCARD_E_SHARING_VIOLATION
at sun.security.smartcardio.PCSC.SCardConnect(Native Method)
at sun.security.smartcardio.CardImpl.<init>(Unknown Source)
... 2 more
Found card in terminal: ACS CCID USB Reader 0
java.lang.NullPointerException
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
Found card in terminal: ACS CCID USB Reader 0 …Run Code Online (Sandbox Code Playgroud) 我想很快开始使用智能卡编程.请帮助我使用javacard开始学习所需的东西.哪个IDE(如果有IDE支持),软件和硬件相关?像手机模拟器有任何智能卡模拟器或者如果我必须购买智能卡指定那些卡在哪里以及如何获得?
我正在编写一个智能卡应用程序,并在成功选择带有AID的应用程序后,发送获取处理选项
我得到6E 00作为响应 - 无效的CLA命令.这是发送命令并接收响应的代码的一部分:
ResponseAPDU rapdu = sendCommand(new byte[]{(byte)0x80, (byte)0xA8, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0x83, (byte)0x00, (byte)0x00});
private ResponseAPDU sendCommand(byte[] apdu) throws CardException{
CommandAPDU capdu = new CommandAPDU(apdu);
ResponseAPDU rpd = channel.transmit(capdu);
return rpd;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用相同的命令使用Jaccal库读取卡片并且它工作正常,但由于它使用了外部dll文件,因此jaccal不适合我的应用程序.我不知道为什么它会给我这种回应.
我正在使用具有2个SIM卡插槽的Android手机.我想知道是否有办法使用其中一个插槽来读取其他类型的卡,比如JavaCards?
我有NXP的智能卡支持ECC over GF(p)并且不支持ECC over GF(2 ^ n).
在我的项目中,我需要使用这种特殊类型的智能卡(已经使用了数千个实例).但是,我需要在sect193r1上添加EC签名验证,这是GF(2 ^ n)上的曲线.
对我来说,性能不是问题.这可能需要一些时间.签名验证不涉及任何私钥,因此安全性和密钥管理也不是问题.不幸的是,我必须验证智能卡内的签名,而不是配备智能卡读卡器的设备.
有什么解决方案吗?是否存在基于GF(2 ^ n)的EC加密的纯软件JavaCard实现的任何现有源代码?
我有一张带有以下ATR的智能卡:
ATR = 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF.
根据atr-parse.appspot.com的输出,我发现它是MCI(伊朗移动通信公司)的SIM卡.
这些是我从历史字节获得的信息:
(紧凑型TLV数据对象)
标签:3,Len:1(卡服务数据字节)
卡服务数据字节:0
EF.DIR和EF.ATR访问服务:通过GET RECORD(s)命令
卡与MF
标签:7,Len:3(卡片功能)
选择方法:190
支持记录号码
支持短EF标识符
隐式DF选择
按文件标识符选择DF
通过路径选择DF
DF选择全DF名称
数据编码字节:33
写功能的行为:专有
BER-TLV标记字段的第一个字节的值'FF':有效
四重奏数据单位:1
命令链,长度字段和逻辑通道:16
逻辑频道号码分配:由卡
最大逻辑通道数:1
标签:6,Len:6(发布前数据)
数据:54 59 53 04 4C 25"TYS.L%"
如上所述,提到该卡有一个MF.
问题是我对这张卡无能为力.在第一步中,我想列出其内容.我看了TS 11.11,TS 102.221,TS 131.102和TS 151.011规范.
据我所知,从上面的文件中,卡的系统文件包括Master File其AID 3F00 …
Java Card小程序中的一个典型错误是将持久性内存用于应该在RAM中的临时变量.
这些错误可能会减慢applet的速度并导致一些严重的问题(例如EEPROM损坏的症状).
单元测试很难揭示这些错误.单元测试将applet作为黑盒子访问,他们所能做的就是检查给定输入的输出.当然,它们可以测量时间并报告可疑的慢速命令,但是覆盖持久存储器中的单个字节几乎与覆盖RAM中的单个字节的时间相同.
有没有办法摆脱这些错误(编码时要小心)?我可以以某种方式检测EEPROM更改以及在处理特定APDU时完成了多少次更改?
当然,一个好的模拟器可以完成这项工作.但是,JCardSim(www.jcardsim.org)和恩智浦JCOP工具似乎都远远无法报告EEPROM使用情况统计数据.
你知道其他任何可以帮助我的工具或测试技术吗?
您可能知道,Gloabal Platform Card Specification定义了一个名为Get Data的命令,用于从智能卡中检索一些信息.
GlobalPlatformPro是与智能卡通信的流行工具之一.当我使用此工具列出卡上已安装的小程序时,我有以下输出:
D:\3-TestTools\SmartCard>GP -list -d -v -i
//Useless Info Censored
ATR: 3B6800000073C84012009000
//Select APDU Command
A>> T=0 (4+0000) 00A40400 00
A<< (0018+2) (48ms) 6F108408A000000003000000A5049F6501FF 9000
***** Card info:
A>> T=0 (4+0000) 80CA9F7F 00
A<< (0045+2) (65ms) 9F7F2A4250010C425102902610116000099A5A0AF9425211694253117E00000000000000000000000000000000 9000
Card CPLC:
ICFabricator: 4250
ICType: 010C
OperatingSystemID: 4251
OperatingSystemReleaseDate: 0290
OperatingSystemReleaseLevel: 2610
ICFabricationDate: 1160
ICSerialNumber: 00099A5A
ICBatchIdentifier: 0AF9
ICModuleFabricator: 4252
ICModulePackagingDate: 1169
ICCManufacturer: 4253
ICEmbeddingDate: 117E
ICPrePersonalizer: 0000
ICPrePersonalizationEquipmentDate: 0000
ICPrePersonalizationEquipmentID: …Run Code Online (Sandbox Code Playgroud) javacard ×10
smartcard ×7
sim-card ×2
android ×1
cryptography ×1
debugging ×1
gemalto ×1
gsm ×1
ide ×1
kernel ×1
netbeans ×1
security ×1
simulation ×1
simulator ×1
unit-testing ×1