c# - 欧洲行驶记录仪公司智能卡返回 6D00
问题描述
我们正忙于尝试在行驶记录仪公司智能卡和行驶记录仪之间进行远程身份验证。我们让它与我们的测试行驶记录仪一起工作,但现在我们遇到了一个实时的问题。
每当我们开始身份验证时,一切都很顺利,直到 Tachograph 发送一个 get response 命令:00C0000080
。行驶记录仪智能卡以 响应6D00
。换句话说(据我所知),行驶记录仪请求智能卡的响应。并且智能卡回答“支持 CLA,但 INS 无效或未编程”(在文档中找到)。
我尝试强制使用 T1 协议。不改变结果。我们尝试强制 T0 协议,智能卡不再被我的软件读取。这意味着该智能卡显然不支持 T0 协议。
任何人都知道这个问题意味着什么?
编辑
有人要求我按 Maarten 放置命令的顺序,请参阅以下命令行:
- 卡给 ATR:
3BDF960080B1FE451F870031C16408923201738421E0059000C5
- 转速表 回复:
00A4020C020002
- 卡 回复:
9000
- 转速表 回复:
00B0000009
- 卡 回复:
000103492B022104309000
- 转速表 回复:
00A4040C06FF544143484F
- 卡 回复:
9000
- 转速表 回复:
0022C1B60A8308000DAA06111606A2
- 卡 回复:
9000
- 转速表 回复:
0088000010011EBDDCAFA17487000DAA06111606A2
- 卡 回复:
9000
- 转速表 回复:
00C000008000
- 卡 回复:
6700
- 转速表 回复:
00C0000080
- 卡 回复:
6D00
- 所有通讯结束
对于 Maarten:您可以假设该软件工作正常。这是今天下午一辆卡车的实时数据。电子设备连接到 Tacho,我的软件(将阅读器物理插入服务器端)与电子设备通信。这个设备是由另一个程序员制造的,他向我保证,进出转速计的数据是正确通信的。我知道我的软件可以与智能卡正确通信,因为我们让它与另一张卡和转速计一起工作。
编辑#2
在我们发现内部验证命令中出现了一些错误后,我们尝试80
在内部验证命令后面强制一个十六进制字节。这使该过程更进一步,但在读取二进制文件后仍会取消。不知道为什么会这样,但我们目前正在调查它。APDU 在下面。
- 通讯开始,卡发送 atr:
3BDF960080B1FE451F870031C16408923201738421E0059000C5
- 转速表 回复:
00A4020C020002
- 卡 回复:
9000
- 转速表 回复:
00B0000009
- 卡 回复:
000103492B022104309000
- 转速表 回复:
00A4040C06FF544143484F
- 卡 回复:
9000
- 转速表 回复:
0022C1B60A8308000DAA06111606A2
- 卡 回复:
9000
- 转速表 回复:
0088000010A73D4B33337EBC3D000DAA06111606A280
- 卡 回复:
1C90A7F7796CC9B2082470504DCDCF3D3E9EEDEEE00F4AF1FCA127CC1D7B746D21C63DA4D75138B61D7715C4919B37601BF8897DB7C1DD5F58309D55B9588C007AFBA22F997523300B1351684F65AB5FA59E350295B7EE1170F934FC8AFE191E9DEEEDBF7C582D7D0709FEE0F1B44EF3C9D452AB8F25B1106B1E510EF956D6E79000
- 转速表 回复:
0084000008
- 卡 回复:
2DA8A7836A6FCF1A9000
- 转速表 回复:
00820000800E5EE3CBE4F16EC816E3FB198F86338604455355AC6123E1B057C9A53ED356679B4F1AE34B8A2EBD95FDD96E4707CDECA208BF22BAA6F70A3ED0CCA39FCC6199B3F959F3226E018D46029142314F25A332C1666A44E9EE3616CD19F9A7E169827C3CEDED372F49A8478BCDD97E63EE48ED695EFFC9B556E4246732BB372C9714
- 卡 回复:
9000
- 转速表 回复:
00A4020C020520
- 卡 回复:
9000
- 转速表 回复:
0CB000000997018B8E04F0821140
- 卡 回复:
9000
- 转速表 回复:
00A4020C020501
- 卡 回复:
9000
- 转速表 回复:
0CB00003099701028E046733DD55
- 卡 回复:
6688
- 所有通讯结束
如您所见,我们80
在内部验证命令后面手动添加,使其更进一步,但仍然出错。我们不确定为什么现在出错了,欢迎任何想法和建议,说明为什么卡现在以 6688 响应,而读取的二进制文件应该只返回信息。我们现在正在考虑“Stonedidge”测速仪与“VDO”测速仪的工作方式不同。并且公司/司机没有将转速设置为远程CAN通信,导致错误。我会更新这个问题以供以后使用和其他遇到相同问题的人使用。
已解决(暂时)
事实证明,斯通里奇行车记录仪确实存在问题。我们认为stoneridge 需要由车间配置以启用远程认证和下载。我们有一些文件似乎证实了这一点。我不会解释这是如何完成的,因为这类信息并不适合所有人。我们今天在另一辆装有 VDO 行驶记录仪(不需要此配置)的卡车上进行了现场测试,一切正常,如附录 11 所示。如果我没有忘记,我会在配置 Stoneridge 时更新这个问题和让它工作,所以遇到这个问题的任何其他人也可以尝试它。
解决方案
在 T=1 中(通常)不支持 GET RESPONSE,因为获取响应是 APDU 传输层的一部分。在 T=1 中,您只需将 Le 字节(现在值为 0x80)粘贴到请求数据的命令的末尾,使其成为 ISO CASE 2(仅响应数据)或 4(存在命令和响应数据)命令。
推荐阅读
- python - 如何在 python dateparser 中查找所有正则表达式字符串
- mysql - JSON 插入 MySQL 表或更新(如果存在)
- sql - 在 SQL 中创建日期范围
- c# - C# Visual Unity 独立 .exe 调试符号加载问题
- matlab - MATLAB App Designer 重置属性
- c# - 如何使“链接”添加到文本中?
- java - 启动 jar(maven 编译)时出错,但在 Intellij 上简单运行可以正常工作
- regex - 通过多个分隔符拆分字符串并将分隔符保留在结果中
- string - Prolog - 列表成字符串
- r - 隐藏在图表下的绘制点三元图