我已经遍布网络,拥有CAC / ADPU的DOD和IDO文档,但我无法找到/找出访问卡上数据的顺序。我想获取公共信息用户名,例如SMITH.JOE.123123123
厚java应用程序,使用smartcardio。
我发出0x84 CHALLENGE命令并使用9000返回代码返回挑战字节。我相信这些是在3DES中,但如果我没有密钥/密码,我将如何解码?
我现在很困惑下一步该做什么。我需要对CHALLENGE字节做什么?
我尝试了一个EXTERNAL AUTH(0x82)这个成功了,但返回代码为6300(警告NV RAM更新)请注意确定这是好还是坏 - 可能是更新计数或日期等。
然后我尝试SELECT(0xa4),但得到6D00 - 找不到命令
我也尝试过GET DATA(0xCB) - 6D00
我猜测最后两个失败是因为我没有处于正确的安全状态来发布它们。
我需要经历的命令序列是什么?
任何信息非常感谢!
您应该加密挑战(随机字节序列,长度很重要)并使用外部身份验证发送结果。在不知道相应密钥或其算法的情况下,旅程在此结束。
有些数据可能无需身份验证即可读取,但我不熟悉CAC来判断用户名是否属于此类别。
结果代码6D 00不太可能意味着不满足安全状态,其中定义了69 82。
首先尝试ISO 7816-4(没有太多解释,难以消化)或介绍智能卡。