2022年后新版斯洛伐克eVRC卡AID选择失败问题求助
解决新版斯洛伐克eVRC卡(2022/2023)读取失败的思路
1. 排查AID变更可能性
旧版eVRC使用的AID是A0000004564556522D3031,但新版卡片返回6a82(文件未找到)错误,说明该AID已不再有效。可通过以下方式获取新AID:
- 使用卡片枚举工具(如
pcsc_scan)扫描卡片,查看卡片支持的所有AID列表,这类工具通常会列出卡片上注册的所有应用标识。 - 向斯洛伐克交通管理官方渠道申请最新的eVRC规范文档,文档会明确新版卡片的AID及通信协议变更细节。
2. 调整Select AID命令参数
旧代码中使用的Select AID命令为00 A4 04 0C,其中P2参数0C表示返回FCI但不包含专有数据。部分新版卡片可能要求不同的P2值,可尝试:
- 将P2改为
00(返回完整FCI),命令代码调整为:response = channel.transmit(new CommandAPDU(0x00, 0xA4, 0x04, 0x00, Utils.asByteArray(0xA0, 0x00, 0x00, 0x04, 0x56, 0x45, 0x56, 0x52, 0x2D, 0x30, 0x31))); - 若仍失败,尝试使用通配符选择命令
00 A4 04 00(不带AID),让卡片返回默认应用,再从响应中提取有效AID。
3. 确认底层协议与安全机制变更
新版eVRC卡可能切换了协议或增加了安全限制:
- 解析卡片的ATR(Answer To Reset)信息,ATR字节会指示卡片支持的协议类型、加密算法等功能,可据此判断是否存在协议更新。
- 检查是否需要先执行安全认证流程(如PIN验证、密钥协商)才能访问应用,部分新版卡片会限制未认证状态下的AID选择操作。
4. 扩展Jevrc库的兼容性
若确认AID或协议变更,可修改Jevrc库逻辑适配新版卡片:
- 在原有AID选择逻辑基础上,添加新版AID的尝试分支,依次选择旧版、新版AID,直到返回0x9000状态码。
- 若卡片返回的FCI包含应用版本信息,可根据该信息动态调整后续读取命令,适配不同版本的卡片数据结构。
内容的提问来源于stack exchange,提问作者user2363707
相关产品推荐
相关产品推荐

