在Java卡中以USIM在ADF下更新EF

for*_*est 5 applet sim-toolkit javacard

我正在研究applet,我想使用SIM/UICC applet更新USIM下的FIle(例如:LOCI文件:0x6f7e).

第一个问题是:我可以使用SIM JAVA API(使用STK applet)在ADF下读取/更新EF吗?

根据我的读取(3GPP TS 43.019)明显的答案是否定的,我错了我错过了可以让我使用SIM小程序在ADF下读取/更新文件的somtehing?

所以我开始研究基于(ETSI TS 102 241)和踏脚石(此处链接)的UICC applet(版本6)ADF只能通过使用AID获取ADF参考(getTheFileView)来进行readed /更新.但由于未知原因,我在更新命令中遇到了UICC异常(0003:SECURITY_STATUS_NOT_SATISFIED)(选择顺利).Applet安装时还具有完全访问权限和Admin Full访问权限(使用GEMALTO工具).

你可以在这里找到我正在使用的代码(在applet init中):

    AID adf_aid = new AID (uicc_aid, (short) 0x00, (byte) uicc_aid.length);
    ADFView = UICCSystem.getTheFileView( adf_aid,
             JCSystem.CLEAR_ON_RESET);
Run Code Online (Sandbox Code Playgroud)

在这一部分,我还使用AID作为缓冲区而不创建AID对象.

更新STK菜单访问权限

    ADFView.select(FID_EF_LOCI);
        ADFView.updateBinary((short) 0, eraseLoci, (short) 0,
                (short) eraseLoci.length);
Run Code Online (Sandbox Code Playgroud)

我尝试了几乎所有我想到的东西:

  • 在选择AFD之前选择MF.
  • 直接选择7FFF

    我还有同样的例外,你能告诉我应该检查一下吗?我必须更改代码,使用另一个版本(Jar文件)?使用特定的安装参数?还有其他解决方案来更新ADF下的文件吗?

我检查了AID值,并将其放入EF_DIR(2F00)的第一条记录中.

提前致谢.

小智 1

你可能想尝试 simaliance cat loader。它具有FileView和AdminFileView的权限修改。