0x27服务解锁ECU。诊断仪(Tester)需要先向ECU发送请求种子,种子就是ECU通过自己内部的随机算法,生成的一个随机的数值,常见的有两个字节,四个字节。然后ECU就会把生成的这个种子作为本次诊断的响应,返回种子给诊断仪(Tester)。同时ECU也会用安全算法,根据种子计算出一个钥匙(key),以便后面去进行验证。诊断仪也会用同样的安全算法,根据ECU返回的种子去计算一个钥匙(key)。接着诊断仪就会把这个key作为第二阶段的请求,再发送给ECU,让ECU去进行验证。ECU收到了诊断仪发出的key会跟它自己计算出的key进行对比。如果对比相同,则返回肯定响应;对不不同,则返回否定响应。
示例如下
诊断仪发送27 01请求一个种子(01就是请求一个种子);ECU生成随机种子3A F2;ECU返回种子为 67 01 3A F2;同时使用安全算法计算出key为91 5C;
第二阶段诊断仪向ECU发送key验证,27 02 91 5C;如果与ECU的key相同,则返回肯定响应67 02。
注意事项
第一:必须在扩展会话下才能使用27服务来解锁ECU,否则一定会返回一个否定响应;
第二:子功能是成对出现的,01/02, 03/04 ,05/06,奇数01 03 05都代表发送请求一个种子,偶数 02 04 06都代表发送一个key让ECU去验证。不同的对数代表不同的安全级别,一般由主机厂自定义决定。但01 02一定会有。
第三:27服务否定响应时的常见否定响应码。