【CANoe】CAPL_UDS安全算法dll制作

这篇具有很好参考价值的文章主要介绍了【CANoe】CAPL_UDS安全算法dll制作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

使用UDS进行刷写时,需要27服务解密后,才能正确执行刷写,本文提供两种制作27解密dll的方法,用于CANoe的CAPL脚本中。

【特别说明】
遇到问题时,CAPL帮助文档提供了很好的指引,大家可以好好利用。

二、方法一:在CAPL中引入dll的制作【制作dll的通用方法】

1、在CAPL中打开帮助文档

【CANoe】CAPL_UDS安全算法dll制作

2、找到CAPL DLL相关的说明,以下图中标记的为Demo进行dll的制作

CAPL DLL示例所在路径:
C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\Programming\Capldll
【CANoe】CAPL_UDS安全算法dll制作

3、拷贝到桌面,我用VS2019打开

1)下图点击确定:
【CANoe】CAPL_UDS安全算法dll制作
2)右键点击工程“重新生成",报如下错误代码【C2338】:

C2338 Windows headers require the default packing option. Changing this can lead to memory corruption. This diagnostic can be disabled by building with WINDOWS_IGNORE_PACKING_MISMATCH defined
【CANoe】CAPL_UDS安全算法dll制作3)更改如下配置:
【CANoe】CAPL_UDS安全算法dll制作

【CANoe】CAPL_UDS安全算法dll制作
4)再次"重新生成”,可编译成功:
【CANoe】CAPL_UDS安全算法dll制作

4、解析其中一个函数,制作dll类似原理【☆核心☆】

【CANoe】CAPL_UDS安全算法dll制作
【CANoe】CAPL_UDS安全算法dll制作一些说明:

typedef struct CAPL_DLL_INFO4{
  char              cdlName[MAX_CDL_NAME2];        // 在CAPL中调用时显示的函数名
  CAPL_FARCALL      adr;                           // 函数地址,即vs工程中函数定义时的函数名
  const char*       categoryName;                  // 函数在CAPL中的所属目录,可以用于对函数的分类
  const char*       hintText;                      // 对该函数功能的描述介绍(在CAPL中显示)
  char              resultType;                    // 函数的返回值类型,用CAPL中的类型的首字母大写去表示
  int               parCount;                      // 函数的参数个数
  char              parTypes[MAXCAPLFUNCPARS_8_1]; // 函数的参数类型,用CAPL中的类型的首字母大写去表示
  unsigned char     array[MAXCAPLFUNCPARS_8_1];    // 函数的参数是否是数组:\001表示是数组;\000表示不是数组。默认则为\000
  const char*       parNames[MAXCAPLFUNCPARS_8_1]; // 函数显示的参数名(在CAPL中的声明介绍时)
} CAPL_DLL_INFO4;

【CANoe】CAPL_UDS安全算法dll制作
【CANoe】CAPL_UDS安全算法dll制作

5、27解锁示例

1)在刚才的工程中增加如下代码:

/*27解密算法*/
void CAPLEXPORT far CAPLPASCAL appGetDataThreePars(unsigned long mask, long SecurityLevel,
	unsigned char SeedArray[], unsigned char KeyArray[])
{
	/*27解密算法--根据实际算法进行更改即可*/
	KeyArray[0] = SeedArray[0] + 1;
	KeyArray[1] = SeedArray[0] + 1;
	KeyArray[2] = SeedArray[0] + 1;
	KeyArray[3] = SeedArray[0] + 1;
}

【CANoe】CAPL_UDS安全算法dll制作

{"dllUnlock27", (CAPL_FARCALL)appGetDataThreePars,"CAPL_DLL","This function will get two datas from DLL into CAPL memory",'V', 4, "DLBB", "\000\000\001\001", {"mask","SecurityLevel","seedblock","keyblock"}},

【CANoe】CAPL_UDS安全算法dll制作

2)“重新生成”dll,并将capldll.dll改名为27Unlock.dll

【CANoe】CAPL_UDS安全算法dll制作

3)将dll引入到CAPL工程中

【CANoe】CAPL_UDS安全算法dll制作

【CANoe】CAPL_UDS安全算法dll制作【CANoe】CAPL_UDS安全算法dll制作

三、方法二:在UDS模块中导入dll的制作【推荐:跑UDS诊断也可以用到】

1、导入dll的方法:

【CANoe】CAPL_UDS安全算法dll制作

2、dll制作方法:

1)打开CAPL帮助文档

【CANoe】CAPL_UDS安全算法dll制作【CANoe】CAPL_UDS安全算法dll制作【CANoe】CAPL_UDS安全算法dll制作

2)进入到如下路径:

C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\CAN\Diagnostics\UDSSystem\SecurityAccess\Sources

将如下文件夹拷贝到桌面,进行制作dll
【CANoe】CAPL_UDS安全算法dll制作

3)代码解读:【☆核心☆】

【CANoe】CAPL_UDS安全算法dll制作
【CANoe】CAPL_UDS安全算法dll制作

右键点击工程“重新生成",工程可正确编译生成dll:
【CANoe】CAPL_UDS安全算法dll制作
【CANoe】CAPL_UDS安全算法dll制作

核心代码解读:
【CANoe】CAPL_UDS安全算法dll制作

4)CAPL中调用27解密算法的核心代码:

result=diagGenerateKeyFromSeed(tmpseed,4,Unlocktype,"CommonDiagnostics","",tmpkey,4,gkeysize);      

【CANoe】CAPL_UDS安全算法dll制作文章来源地址https://www.toymoban.com/news/detail-458882.html

到了这里,关于【CANoe】CAPL_UDS安全算法dll制作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CANoe——CAPL案例

    on signal:信号发生变化是触发代码 on signal_update:信号每一帧都触发代码 一、发送报文 (1)周期发送 (2)按键触发发送  (3)按键触发后周期发送 (3)打印并赋值 write输出的内容在CANoe的write界面显示 (4)监听报文 二、报文接收 当从CAN总线接收到消息并为该消息定义了事

    2023年04月16日
    浏览(35)
  • 怎么用Canoe CAPL发送诊断

    以UDS诊断为例,GMLAN会有些许差异,大同小异。 一般Canoe工程加载CDD以后,可以直接通过canoe工程的诊断界面,点击需要的诊断命令就可以发送诊断了。 那为什么还需要通过CAPL来发送诊断呢, 1.诊断界面的数据长度和有的参数范围是有限制(最大值最小值)的,但是如果你需

    2024年02月14日
    浏览(34)
  • CANOE学习笔记-CAPL语言设计

    CAPL可以说是CANoe的灵魂,使CANoe满足仿真、分析、测试和诊断的各种复杂的要求,同时使CANoe的功能得以不断扩展。概括起来,CAPL的主要用途有以下几点。 (1)使用易于理解的编程语言来仿真节点或模块; (2)仿真事件报文、周期报文或者附加条件的重复报文; (3)使用

    2023年04月08日
    浏览(27)
  • C#开发DLL,CAPL调用(CAPL>> .NET DLL)

    ret为dll里函数返回的值。 在visual studio中建立。

    2024年02月08日
    浏览(36)
  • 如何使用ffmpeg制作透明背景的视频

      最近我们尝试在网页上叠加数字人讲解的功能,发现如果直接在网页上放一个矩形的数字人视频,效果会很差,首先是会遮挡很多画面的内容,其次就是不管使用任何任务背景,画面都和后面的网页不是很协调,如图所示:   如果能去掉视频的背景,只展示人物效果就

    2024年02月05日
    浏览(36)
  • Vector - CAPL - AES算法介绍

            前面已经介绍过MD5的算法介绍,不过随着车载行业的迅速发展,特别是OTA技术的逐渐成熟,对于安全的考虑也越来越多,因此涉及的各种算法来进行验证,保证车载电子设备的完全性和安全性;不过对于车载网络测试的同行来说,挑战也越来越多,不仅需要实现自动

    2023年04月09日
    浏览(23)
  • Vector - CAPL - CRC算法介绍(续)

             不常用CRC算法 目录 Crc_CalculateCRC8H2F 代码示例  Crc_CalculateCRC32P4 代码示例 Crc_CalculateCRC64 代码示例 功能:根据数据计算CRC8H2F的相应校验和。 data: 待计算CRC8H2F校验和的数据 dataSize: 待计算CRC8H2F校验和的数据长度 dataOffset: 用于计算有效载荷数据中的CRC的起始索

    2023年04月09日
    浏览(22)
  • Vector - CAPL - AES算法介绍(续1)

            前面介绍了CAPL自带函数库中包含的AES相关的4种算法,今天咱们介绍下CAPL库包含的一些其他的低级加密函数。 目录 SecurityLocalGenerateSHA256 代码示例 SecurityLocalGenerateSHA512 代码示例 SecurityLocalGenerateCMAC SecurityLocalGenerateSharedSecretECDH 功能: 将给定的数据和秘钥,生成哈希

    2023年04月08日
    浏览(23)
  • 【车载开发系列】UDS诊断---安全访问服务($0x27)

    该服务提供了一种保护机制,该机制用来保护访问限制的诊断服务。 加密策略采用种子和密钥相关联的方法。采用随机产生的种子,通过安全算法得到唯一的秘钥。 若秘钥匹配正确则可以调用受到保护的诊断服务。这个服务解锁的是处在某个安全等级下的服务。 诊断工具请

    2024年02月03日
    浏览(45)
  • 汽车诊断之UDS入门-0x27(SecurityAccess)安全访问

    安全访问服务 0x27 用来解锁 ECU 对应的安全等级 , 一般处在非默认会话 下 进行解锁,这个服务解锁的是 处在某个安全等级下的服务 。 服务格式   安全等级解闭锁   需要注意的是: 1.P owerOn 或者 R eset 后, ECU 处在 locked 状态; 2.同一时刻只有 1 个安全等级是 active ,与这个

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包