当前位置:   article > 正文

CAPL 自动化脚本 - UDS 安全解锁 Lv1_uds$27安全解锁capl如何实现

uds$27安全解锁capl如何实现

一种简易的UDS$27解锁方式,使用capl脚本去实行自动化。

利用CANoe自己的Diagnostic去诊断,返回。

首先:声明2701 2702

拿到种子后,使用diagGenerateKeyFromSeed函数去调用工程里面的DLL文件去计算。

再将计算好的密钥发送到ECU。

  1. void SecurityAccess_Lv1()
  2. {
  3. diagRequest DCM.request Seed_1; // 27 01
  4. diagRequest DCM.request Key_2; // 27 02
  5. const dword Response_time = 50; // diagnostic response time
  6. byte SeedArray[4]; // Actual Seed length
  7. byte KeyArray[4]; // Actual key length
  8. dword KeyActualSize; // Actual key length
  9. int i;
  10. diagSendRequest(Seed_1);// send 27 01 request
  11. if(testWaitForDiagResponse(Seed_1,Response_time)) // Waiting for 2701 response, Waiting for 2701 response, place the seed in array
  12. {
  13. for(i=0;i<elcount(SeedArray);i++)
  14. {
  15. SeedArray[i]=diagGetRespPrimitiveByte(Seed_1,i+2);
  16. // write("%d",SeedArray[i]);
  17. }
  18. }
  19. /* if there is no response within the defined time, consider adding testfail function */
  20. // else
  21. // {
  22. // testStepFail("");
  23. // }
  24. if(0==diagGenerateKeyFromSeed("ecuQualifier",SeedArray,elcount(SeedArray),1,"","",KeyArray,elcount(KeyArray),KeyActualSize))
  25. {
  26. // write("%d, %d, %d, %d",KeyArray[0],KeyArray[1],KeyArray[2],KeyArray[3]);
  27. diagSetParameterRaw(Key_2,"SecurityKey",KeyArray,elcount(KeyArray)); // set 27 02 raw
  28. diagSendRequest(Key_2); // send key to ECU
  29. }
  30. }

这种方式简单,可以快速的去操作。

如果想要做一个通用库,不一定适用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/998691
推荐阅读
相关标签
  

闽ICP备14008679号