首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定智能卡ATR掩码?

如何确定智能卡ATR掩码?
EN

Stack Overflow用户
提问于 2009-11-06 15:09:15
回答 3查看 10.1K关注 0票数 1

给定智能卡ATR (应答重置);是否可以确定哪些字节可用于为特定卡创建ATR掩码?

示例ATR可能如下所示(可以由Ludovic Rousseau's ATR parser解析):

代码语言:javascript
运行
复制
3B FF 18 00 FF 81 31 FE 45 65 63 11 05 40 02 50 00 10 55 10 03 03 05 00 43

有没有什么通用的方法来实现这一点?或者我必须联系特定卡的卡供应商?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-06 22:05:19

这些知识的应用是什么?

除了不同卡特征中的可变字节(例如,如果知道给定的卡有不同的版本,具有不同的协议功能),或者如果你知道卡有不同的版本,我不相信有这样的标准。有时您可以从历史字节中找到关于卡的信息,例如爱沙尼亚ASCII卡有不同的供应商,但所有卡的历史字节在eID中都是"EstEID v1.0“。

因此,答案很可能是您需要联系制造商或阅读卡附带的文档。

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2009-12-10 10:49:19

这取决于目标。如果您目标是能够在所有可能的变体中识别确切的卡类型,则ATR掩码不可能为您做到这一点。如果你有一个想要关联的通用卡“家族”,你可以试着屏蔽历史字节。如果您正在设置Calais注册表设置,我建议不要屏蔽任何内容,因为您可能会阻止另一个CSP。除了ATR之外,请查看最新的Microsoft Mini驱动程序规范以了解识别卡的过程。

票数 2
EN

Stack Overflow用户

发布于 2019-09-22 15:28:47

我通过ATR中的TA位找到掩码的类型。在ATR的接口字节中,TA为0位。然后,我从卡片的底部/结束地址的8个字节中找到掩码的制造商。我在ATR之后执行下面的APDU命令:

CommandApdu commandApdu =新数据(0xBC,0xC0,0x00,0x00,CommandApdu,0x08);

然后我验证第二位和第三位(位= 0,1,admax=2,admax1=3,4,5,6,7):

代码语言:javascript
运行
复制
byte[] result8Bytes = responseApdu.getData()[2];
byte[] adMax = new byte[2];
adMax[0]=result8Bytes[2];
adMax[1]=result8Bytes[3];

if (ATR_TA == 0x0E) { //SCOT
    if (adMax[0] == 0x21 && adMax[1] == 0xA0) `
       typeMasque = SCOT_400_M9V1;`
    else if (adMax[0] == 0x21 && (adMax[1] == 0x19 || adMax[1] == 0x88))
       typeMasque = SCOT_400_MOT; 
    else if (adMax[0] == 0x88 && adMax[1] == 0x00)
       typeMasque = SCOT_400_STM;
    else if (adMax[0] == 0x19 && adMax[1] == 0x00)
       typeMasque = SCOT_300;
    else 
       typeMasque = SCOT_INCONNU;
}

if (ATR_TA == 0x0D) //IGEA
    if (adMax[0] == 0x20 && adMax[1] == 0xA0)
        typeMasque = IGEA_340_AMTEL;
    else if (adMax[0] == 0x21 && (adMax[1] == 0x20 || adMax[1] == 0x98))
        typeMasque = IGEA_440_BIS;
    else if (adMax[0] == 0x21 && adMax[1] == 0x20)
        typeMasque = IGEA_440_STM;
    else
        typeMasque = IGEA_INCONNU;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1685918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档