【问题标题】:Cannot list or install CAP files in JavaCard after unlocking. Why? and how to solve it?解锁后无法在 JavaCard 中列出或安装 CAP 文件。为什么?以及如何解决?
【发布时间】:2021-06-22 16:09:12
【问题描述】:

我有一个 SmartCafe JavaCard。我能够解锁它,但我无法在它上面运行任何命令。 我还能尝试什么?

也许是因为协议?但是我没有找到改变协议的方法。你还有什么想法

gp -dvl
#
# gp -dvl
[DEBUG] TerminalManager - Selected the only reader with a card
SCardConnect("Identiv uTrust 4701 F Contact Reader 0", T=*) -> T=1, 3BF71800008031FE45736674652D6E66C4
# GlobalPlatformPro 325fe84
# Running on Windows 10 10.0 amd64, Java 11.0.11 by Oracle Corporation
A>> T=1 (4+0000) 00A40400 00
A<< (0018+2) (54ms) 6F108408A000000003000000A5049F6501FF 9000
[DEBUG] GPSession - Auto-detected ISD: A000000003000000
Warning: no keys given, defaulting to 404142434445464748494A4B4C4D4E4F
[INFO] GPSession - Using card master keys with version 0 for setting up session [MAC]
A>> T=1 (4+0008) 80500000 08 9ECABDC6C1A59FEB 00
A<< (0028+2) (120ms) 0000216196005964450501020003ED298A383ECE2F1E4CA8EB811E95 9000
[DEBUG] GPSession - SSC: 0003
[DEBUG] GPSession - Host challenge: 9ECABDC6C1A59FEB
[DEBUG] GPSession - Card challenge: 0003ED298A383ECE
[DEBUG] GPSession - Card reports SCP02 with key version 1 (0x01)
[INFO] GPSession - Diversified card keys: ENC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) MAC=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) DEK=404142434445464748494A4B4C4D4E4F (KCV: 8BAF47) for SCP02
[INFO] GPSession - Session keys: ENC=C39AC2D18F94A22B14C04DBB8CF69B7F MAC=D527FB5519C316C9C876E016D80BAEBA RMAC=598ECF7C266BA87DEA24D380AFAFE069
[DEBUG] GPSession - Verified card cryptogram: 2F1E4CA8EB811E95
[DEBUG] GPSession - Calculated host cryptogram: BA9CC3E1E77BF363
A>> T=1 (4+0016) 84820100 10 BA9CC3E1E77BF3634913ED6DF33F8FEA
A<< (0000+2) (46ms) 9000
A>> T=1 (4+0010) 84F28002 0A 4F0056F974428777BDCE 00
A<< (0000+2) (49ms) 6A86
A>> T=1 (4+0010) 84F28000 0A 4F006C54999C15CDD096 00
A<< (0011+2) (52ms) 08A000000003000000079E 9000
Error: At position 1 the len is more then 3 [32]
java.lang.IllegalStateException: At position 1 the len is more then 3 [32]
        at com.payneteasy.tlv.BerTlvParser.getDataLength(BerTlvParser.java:205)
        at com.payneteasy.tlv.BerTlvParser.parseWithResult(BerTlvParser.java:85)
        at com.payneteasy.tlv.BerTlvParser.parse(BerTlvParser.java:53)
        at com.payneteasy.tlv.BerTlvParser.parse(BerTlvParser.java:44)
        at pro.javacard.gp.GPRegistry.populate_tags(GPRegistry.java:151)
        at pro.javacard.gp.GPRegistry.parse_and_populate(GPRegistry.java:211)
        at pro.javacard.gp.GPSession.getStatus(GPSession.java:1022)
        at pro.javacard.gp.GPSession.getRegistry(GPSession.java:963)
        at pro.javacard.gp.GPTool.run(GPTool.java:665)
        at pro.javacard.gp.GPTool.main(GPTool.java:107)
SCardDisconnect("Identiv uTrust 4701 F Contact Reader 0", true) tx:72/rx:67

【问题讨论】:

    标签: smartcard javacard contactless-smartcard globalplatform


    【解决方案1】:

    相互认证成功:

    A>> T=1 (4+0016) 84820100 10 BA9CC3E1E77BF3634913ED6DF33F8FEA A

    但 GET STATUS 命令失败:

    84F28002 0A 4F0056F974428777BDCE 00 A> T=1 (4+0010) 84F28000 0A 4F006C54999C15CDD096 00 A

    第一个 GET STATUS 命令以新格式搜索颁发者安全域,但收到“不正确的参数 P1,P2”作为响应。

    第二个命令尝试读取相同的内容,但使用旧格式。这里收到了响应,但gp 似乎对结果08A000000003000000079E 有解析错误。

    解析结果应该是:

    08 - 长度 A000000003000000 - 援助 07 - 生命周期状态 = 卡片已初始化 9E - 应用程序权限

    请针对gp 工具提出问题。应该很容易修复它。

    在此问题未解决的情况下,您能否尝试使用替代工具来完成您的任务?我是GPShell 的作者,根据代码库,我认为至少不会发生此错误。

    【讨论】:

    • 谢谢,我试试看。
    • 仍然无法工作 :) 很乐意在这里获得任何线索或提示更多信息:github.com/kaoh/globalplatform/issues/48
    • 这个分析是 100% 正确的。对 GlobalPlatformPro 使用选项 -P old(自 v20.08.12 起)或 --op201(旧版本)可能会有所帮助。
    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2014-05-05
    • 2016-09-04
    • 2017-07-20
    • 2020-01-20
    相关资源
    最近更新 更多