0


CAPL 自动化脚本 - UDS 安全解锁 Lv1

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

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

首先:声明2701 2702

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

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

void SecurityAccess_Lv1()
{
  diagRequest DCM.request Seed_1; // 27 01
  diagRequest DCM.request Key_2; // 27 02 
  const dword Response_time = 50; // diagnostic response time
  byte SeedArray[4]; // Actual Seed length
  byte KeyArray[4]; // Actual key length
  dword KeyActualSize; // Actual key length
  int i;
  
  diagSendRequest(Seed_1);// send 27 01 request
  if(testWaitForDiagResponse(Seed_1,Response_time)) // Waiting for 2701 response, Waiting for 2701 response, place the seed in array
  {
    for(i=0;i<elcount(SeedArray);i++)
      {
        SeedArray[i]=diagGetRespPrimitiveByte(Seed_1,i+2); 
        // write("%d",SeedArray[i]);
      }
  }
/* if there is no response within the defined time, consider adding testfail function */
//  else
//  {
//    testStepFail("");
//  }
  if(0==diagGenerateKeyFromSeed("ecuQualifier",SeedArray,elcount(SeedArray),1,"","",KeyArray,elcount(KeyArray),KeyActualSize))
  {
    // write("%d, %d, %d, %d",KeyArray[0],KeyArray[1],KeyArray[2],KeyArray[3]);
    diagSetParameterRaw(Key_2,"SecurityKey",KeyArray,elcount(KeyArray)); // set 27 02 raw
    diagSendRequest(Key_2); // send key to ECU
  }
}

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

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

标签: 自动化

本文转载自: https://blog.csdn.net/YOUYOU_teacher/article/details/137027761
版权归原作者 YoungMan* 所有, 如有侵权,请联系我们删除。

“CAPL 自动化脚本 - UDS 安全解锁 Lv1”的评论:

还没有评论