访问EFkc时AT+CRSM返回CME错误码23的原因与解决方法问询
错误触发原因
- 基带固件权限拦截:Kc是GSM/GPRS网络鉴权加密核心敏感参数,绝大多数安卓设备的基带厂商默认会限制AT指令直接访问USIM卡GSM-ACCESS目录下的此类敏感文件,CRSM请求不会透传到SIM卡,基带直接返回
+CME ERROR: memory failure通用错误码,避免密钥泄露。 - 文件访问路径不匹配:USIM架构下的EFkc/EFkcGPRS属于USIM应用下的专属子文件,未先选择USIM应用直接按全局ID访问时,基带无法匹配到正确的文件路径,触发访问异常返回错误。
- SIM卡本身不兼容:当前运营商新发行的纯5G/4G USIM卡普遍已裁剪掉GSM鉴权相关的EFkc文件实体,卡内本身不存在对应文件,访问时也会触发基带返回通用内存错误。
可行解决方案
- 先选择USIM应用后再访问文件
先执行3GPP标准的USIM应用选择指令:AT+CRSM=124,0,0,0,"A0000000871002",成功选择USIM应用后再执行原EFkc读取指令,部分未做强权限限制的基带可正常返回数据。 - 改用
AT+CSIM指令透传原生APDU
绕过AT+CRSM的基带拦截逻辑,直接向SIM卡发送原生APDU指令:- 先发送选择EFkc指令:
AT+CSIM=14,"00A40004024F20" - 再发送读文件指令:
AT+CSIM=10,"00B0000009"
指令返回的16进制内容解析后即可得到Kc值,适配绝大多数支持AT指令透传的机型。
- 先发送选择EFkc指令:
- 解锁基带访问权限(需ROOT)
高通平台机型可在ROOT后通过QPST工具修改基带NV配置,将EFkc的文件ID加入AT指令访问白名单,解除基带对敏感文件的访问限制;联发科平台可通过修改modem.img配置文件实现相同效果。 - 更换老款测试SIM卡
优先选用2016年之前发行的支持GSM/3G的老款USIM/SIM卡,这类卡普遍保留了完整的EFkc文件,且运营商未做额外的文件访问权限限制。
内容的提问来源于stack exchange,提问作者ProgrammerMinute1933
相关产品推荐
相关产品推荐

