如何将我的 JAVA 卡生命周期状态更改为 OP_READY?
Posted
技术标签:
【中文标题】如何将我的 JAVA 卡生命周期状态更改为 OP_READY?【英文标题】:how can i change my JAVA card life cycle state to OP_READY? 【发布时间】:2014-06-02 08:20:09 【问题描述】:我在 Oracle (This lint) 中找到了以下脚本,并通过我的 java 卡上的 GPShell
运行它,现在我无法在 GPJ
中运行 gpj -list
!
我的问题:
1- 这段代码是干什么用的?将 Card Domain Manager 状态从 OP_READY 更改为 Secured?
2- 为什么我在任何地方都找不到 80F0800708A000000003000000
和 80F0800F08A000000003000000
脚本中使用的 APDU?!我在GP Specification 2.2
和ISO 7814-4
中搜索了F0
在CLA
部分的APDU!但我什么也没找到!
3- 下面脚本的操作是否可以被另一个脚本逆转?
脚本:
mode_211
enable_trace
establish_context
card_connect
select -AID A0000000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f -kek_key
404142434445464748494a4b4c4d4e4f
send_apdu -sc 1 -APDU 80F0800708A000000003000000
send_apdu -sc 1 -APDU 80F0800F08A000000003000000
card_disconnect
release_context
这是它在控制台中的输出:
C:\Users\ghasemi\Desktop\GPShell-1.4.4>gpshell lcchange.txt
mode_211
enable_trace
establish_context
card_connect
select -AID a00000
Command --> 00A4040003A00000
Wrapped command --> 00A4040003A00000
Response <-- 6F108408A000000003000000A5049F6501FF9000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4
f -enc_key 404142434445464748494a4b4c4d4e4f -kek_key 404142434445464748494a4b4c4
d4e4f
Command --> 80CA006600
Wrapped command --> 80CA006600
Response <-- 664C734A06072A864886FC6B01600C060A2A864886FC6B02020101630906072A864
886FC6B03640B06092A864886FC6B040215650B06092B8510864864020103660C060A2B060104012
A026E01029000
Command --> 805000000823CE2F4C2B6C689B00
Wrapped command --> 805000000823CE2F4C2B6C689B00
Response <-- 0000116001007F8B0AF9020201D1C94E4F787D75DD54805A7488BCF79000
Command --> 84820100100BCCFE8818D2DFC6E5B48EA4B6892457
Wrapped command --> 84820100100BCCFE8818D2DFC6E5B48EA4B6892457
Response <-- 9000
send_apdu -sc 1 -APDU 80F0800708A000000003000000
Command --> 80F0800708A000000003000000
Wrapped command --> 84F0800710A0000000030000007AA29B3A708E6E75
Response <-- 9000
send_APDU() returns 0x80209000 (9000: Success. No error.)
send_apdu -sc 1 -APDU 80F0800F08A000000003000000
Command --> 80F0800F08A000000003000000
Wrapped command --> 84F0800F10A0000000030000004FCFC15FD7EBDE9A
Response <-- 9000
send_APDU() returns 0x80209000 (9000: Success. No error.)
card_disconnect
release_context
谢谢。
【问题讨论】:
【参考方案1】:这段代码有什么用?
80 F0 8007 08 A000000003000000
这是一个 SET STATUS (INS = 0xF0
) 命令,用于将颁发者安全域 (P1 = 0x80
) 设置为 INITIALIZED 状态 (P2 = 0x07
)。
80 F0 800F 08 A000000003000000
这是一个 SET STATUS (INS = 0xF0
) 命令,用于将颁发者安全域 (P1 = 0x80
) 设置为 SECURED 状态 (P2 = 0x0F
)。
为什么我在任何地方都找不到脚本中使用的那些 APDU?
很可能是因为您没有正确阅读全球平台卡规范(例如,请参阅 GP 卡规范 2.2.1 中的第 11.10 节)。顺便提一句。搜索“F0”(C-APDU 的第二个字节是 INS 而不是 CLA)肯定会有所帮助。
脚本的操作是否可逆?
同样,实际阅读规范会有所帮助。图 5-1 中有一个很好的状态转换图,它清楚地表明向 INITIALIZED、SECURED 和 TERMINATED 状态的转换是不可逆的(5.1.1 节中的文本也是如此)。
【讨论】:
非常感谢亲爱的罗兰先生。 :) ,今晚我会更准确地再次阅读 GP 规范!! :)以上是关于如何将我的 JAVA 卡生命周期状态更改为 OP_READY?的主要内容,如果未能解决你的问题,请参考以下文章
我如何将我的 JRE 从 1.8.0.241 更改为最新的 13 [重复]