1

我在 Oracle 中找到了以下脚本(This lint)并在我的 java 卡上运行它,GPShell现在我无法运行!gpj -listGPJ

我的问题:

1-这个代码是做什么用的?将卡域管理器状态从 OP_READY 更改为 Secured?

2- 为什么我找不到任何地方80F0800708A000000003000000以及80F0800F08A000000003000000脚本中使用的 APDU?!我在部分GP Specification 2.2中搜索ISO 7814-4了一个 APDU !但是我什么也没发现!F0CLA

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

这是它在 Console 中的输出:

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

谢谢你。

4

1 回答 1

4

这段代码是干什么用的?

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 节中的文本也是如此)。

于 2014-06-02T18:15:25.997 回答