UDS诊断之0x27服务
服务作用:
SecuriyAccess(0x27)服务主要为了确认访问数据的人是否合法,因为数据是无价的,各主机厂都针对一些特有数据进行保密,为了鉴别是否授权获取保密数据、写入数据,出现了安全访问服务,只有正确解锁对应的安全锁级,才能访问该安全等级的数据,否则无法访问。
服务格式:
Tester:27 01
ECU: 67 01 seed(4byte)
Tester: 27 02 key(4byte)
ECU : 67 02
服务解析:
01和02定义由主机厂定义,但格式保持请求种子2n-1.请求密钥2n.请求顺序也必须先请求种子,再请求密钥,若顺序不对,则ECU会回复NRC 24,告诉你顺序反了。
通过ECU响应的seed通过各主机厂定义的密钥算法算出key,再将key与ECU的key做比较,若一致安全访问通过,可以访问私密数据,若不通过则会恢复NRC=35的否定响应码,若操作多次,ECU会回复NRC=36告诉你已经超过失败的次数了,不能再请求安全解锁了。若你执意再请求,ECU就会回复你NRC=37告诉你ECU现在不接受安全访问,这就是ECU锁死的现象,需等待一定时间后才可继续请求安全访问。
ECU上电后,保持上锁状态,一般进入扩展会话(1003进入)才能请求27服务,而编程会话的安全等级与扩展会话的安全的等级不一致。
若已成功解锁安全等级,再请求相同层级的解锁服务,ECU一般会回复0种子。
实际应用:
当我们要将一些数据写入ECU时,应先获得权限,才能写入数据,所以需要先解锁能写入数据的安全等级。若没有授权则ECU会回复NRC 33未解锁的提示。
2E服务、2F服务、31服务、34、36、37服务等
这个人很懒,催更就会更新。