0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文了解TSMaster中Seed和key的两种处理方法

上海同星智能科技有限公司 2023-08-26 08:23 次阅读

在UDS诊断过程中,会涉及到安全访问的问题,也就是常说的Seed&Key。TSMaster中提供了两种 Seed&Key 的处理方法:第一种是直接加载DLL文件;第二种是直接在TSMaster的编译器中直接添加安全算法

加载外部 Seed&Key DLL

TSMaster 诊断模块支持通过 dll 载入 Seed&Key 算法,该算法 dll 跟主流工具的计算接口兼容,接口定义如下图所示:

b8f61cd2-43a6-11ee-8e12-92fbcf53809c.png

DLL 加载界面如下图所示:

b90a1688-43a6-11ee-8e12-92fbcf53809c.png


【1】 加载 DLL

【2】 删除 DLL


【3】 DLL 校验器,通过此按钮,用户可以判断自己加载的 dll 接口是否正确,算法是否符合设计要求。如下图所示:

b926c422-43a6-11ee-8e12-92fbcf53809c.png

如上图所示界面,用户选择 Seed 的 Level 过后,输入 Demo Seed 值,点击 GenKey 进行判断。如果该 DLL 接口跟模板定义接口统一,则会输出提示信息:Generate Key Success,然后用户根据 Key 值跟目标值对比,进一步确认DLL 中的算法是否符合设计要求。


【4】 打开 TSMaster 安装目录下 Seed&Key 接口工程所在的路径。用户可以拷贝该工程添加自己的 Seed&Key 算法。


默认SeedKey函数接口

目前,要想被 TSMaster 的诊断模块直接加载,该 DLL 必须实现如下三种函数接口中的一种:


【1】 接口 1:

unsigned int GenerateKeyEx(

const unsigned char* ipSeedArray, /* Array for the seed [in] */

unsigned int iSeedArraySize, /* Length of the array for the seed [in] */

const unsigned int iSecurityLevel, /* Security level [in] */

const char* ipVariant, /* Name of the active variant [in] */

unsigned char* iopKeyArray, /* Array for the key [in, out] */

unsigned int iMaxKeyArraySize, /* Maximum length of the array for the key [in] */

unsigned int& oActualKeyArraySize); /* Length of the key [out] */


【2】 接口 2:

unsigned int GenerateKeyExOpt(

const unsigned char* ipSeedArray, /* Array for the seed [in] */

unsigned int iSeedArraySize, /* Length of the array for the seed [in] */

const unsigned int iSecurityLevel, /* Security level [in] */

const char* ipVariant, /* Name of the active variant [in] */

const char* iPara, /* */

unsigned char* iopKeyArray, /* Array for the key [in, out] */

unsigned int iMaxKeyArraySize, /* Maximum length of the array for the key [in] */

unsigned int& oActualKeyArraySize) /* Length of the key [out] */


【3】 接口 3:

bool ASAP1A_CCP_ComputeKeyFromSeed(

const unsigned char* ipSeedArray, /* Array for the seed [in] */

unsigned short iSeedArraySize, /* Length of the array for the seed [in] */

unsigned char* iopKeyArray, /* Array for the key [in, out] */

unsigned short iMaxKeyArraySize, /* Maximum length of the array for the key [in] */

unsigned short* opSizeKey) /* Length of the key [out] */


用户的 DLL 只要实现了上述任意一种函数接口,即可直接加载到 TP 层模块中。如果出现加载失败,主要检查如下情况:

1. 是否用 Release 模式发布,如果是 Debug 模式,常常会有以上失败的情况出现。

2. 是否采用 x86 平台发布,目前 TSMaster 为支持 X86 的版本,用来调试的 DLL 也必须为X86 模式。


如何兼容其他函数接口

日常使用中,经常出现用户已经开发好了 dll,如果该 dll的接口不是上述三种中的任何一种,就无法直接加载到 TSMaster 的诊断模块中。对于这种情况,推荐采用如下方案来解决此问题:

b930c648-43a6-11ee-8e12-92fbcf53809c.png


下面以一个实际的实例来讲解如何兼容用户现有的 DLL 文件。


1. 用户现有的 DLL,名称为 UserSeedKey.dll。该函数内部的 API 函数有:

➢ Seed 等级为 1 的时候,调用函数 void GetKeyFromSeed01(byte* ASeed, byte* AKey);

➢ Seed 等级为 3 的时候,调用函数 void GetKeyFromSeed03(byte* ASeed, byte* AKey);

➢ Seed 等级为 11 的时候,调用函数 void GetKeyFromSeed11(byte* ASeed, byte* AKey);


该 dll 不支持上述默认加载接口,无法直接加载到 TSMaster 中使用。因此,需要把这些 DLL 再包装一层,才能载入到 TSMaster 的诊断模块中。


2. 选择 TSMaster 安装目录中提供的 GenerateKeyEx 的模板工程,在该工程中调用上述 DLL的函数接口。基本思路是:

➢ 采用 Loadlibrary 动态用户现有的 dll。

➢ 根据传入的 Level 参数,采用 GetProcAddress 函数动态获取实际的用于计算 Key 的函数指针。

➢ 如果获取函数指针成功,则使用该函数指针传输 Seed 值,并计算对应的 Key 值。


详细调用示例函数如下图所示:

b94ab6ac-43a6-11ee-8e12-92fbcf53809c.png


3. 该 GenerateKeyEx 工程开发结束后,TSMaster 直接加载 GenerateKeyEx 所在的 dll。需要注意的是,用户需要把现有的UserSeedKey.dll 拷贝到TSMaster 根目录或者GenerateKeyEx.dll 所在的目录。如果不拷贝过去,GenerateKeyEx.dll 执行的时候会出现找不到对应依赖 dll 的情况,解锁失败。

总结:

在 TSMaster 安装目录中,提供了封装 Seed&Key 算法的模板工程。如 GenerateKeyEx,GenerateKeyExOpt ASAP1A_CCP_ComputeKeyFromSeed,用户基于此模板工程开发即可得到能够直接加载的 dll 函数。

同时,也提供了二次封装的 dll 的工程,比如 GenerateKeyEx_Wrapper_Demo,该工程演示了如何基于已经存在的 SeedKey 算法库进行包装,生成可以直接加载到 TSMaster 诊断模块中的 dll 的过程。


采用内置的算法编辑器

基本步骤如下所示:

b969e716-43a6-11ee-8e12-92fbcf53809c.png

注意事项:

【1】 算法函数的接口,TSMaster 目前提供了最常用的接口形式,如果用户有自己特殊的接口形式,无法覆盖住,请联系上海同星把此接口增加到选项中。

b982d636-43a6-11ee-8e12-92fbcf53809c.png

【2】 所有的接口函数都定义了返回值 s32。增加此约束,主要是增加函数的严谨性。返回值为 0 表示成功,为其他值则有对应的错误码。用户在编辑代码的时候,最后一行一定不要忘了输入返回值,否则系统执行函数过后,会认为算法执行失败,不予往后面执行。如下所示:

b98d1664-43a6-11ee-8e12-92fbcf53809c.png

【3】 添加算法过后,点击 OK 退出。TSMaster 内置编译器会自动解释该算法,并准备好在执行诊断的过程中使用。

以上就是Seed&Key 的两种处理方法,如有任何问题可与同星联系。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dll
    dll
    +关注

    关注

    0

    文章

    115

    浏览量

    45408
  • 编译器
    +关注

    关注

    1

    文章

    1623

    浏览量

    49103
  • MASTER
    +关注

    关注

    0

    文章

    103

    浏览量

    11281
收藏 人收藏

    评论

    相关推荐

    芯片制造过程两种刻蚀方法

    本文简单介绍了芯片制造过程两种刻蚀方法   刻蚀(Etch)是芯片制造过程相当重要的步骤。 刻蚀主要分为干刻蚀和湿法刻蚀。 ①干法刻蚀 利用等离子体将不要的材料去除。 ②湿法刻蚀
    的头像 发表于 12-06 11:13 195次阅读
    芯片制造过程<b class='flag-5'>中</b>的<b class='flag-5'>两种</b>刻蚀<b class='flag-5'>方法</b>

    Pythondict支持多个key方法

    ​ 在Python,字典(dict)是一种非常强大的数据结构,它允许我们通过键(key)来存储和检索值(value)。有时候,我们可能想要根据多个键来检索或操作字典的数据。虽然Py
    的头像 发表于 11-29 15:59 141次阅读

    噪声传导的两种模式

    噪声传导有两种模式,一种为差模传导,一种为共模传导。
    的头像 发表于 10-15 11:33 273次阅读
    噪声传导的<b class='flag-5'>两种</b>模式

    比较分析两种不同的可提高栅极驱动电流的方法

    电子发烧友网站提供《比较分析两种不同的可提高栅极驱动电流的方法.pdf》资料免费下载
    发表于 09-23 11:13 0次下载
    比较分析<b class='flag-5'>两种</b>不同的可提高栅极驱动电流的<b class='flag-5'>方法</b>

    放大电路的基本分析方法有哪两种

    放大电路是电子学的基础组成部分,用于增强信号的幅度而不改变其基本特性。在电子工程,放大电路的设计和分析是至关重要的。放大电路的基本分析方法主要有两种:直流分析和交流分析。 直流分析
    的头像 发表于 09-23 10:40 442次阅读

    linux驱动程序的编译方法有哪两种

    Linux驱动程序的编译方法主要可以归纳为两种: 手动编译 和 使用内核构建系统(Makefile)自动编译 。 1. 手动编译 手动编译驱动程序通常涉及直接使用GCC(GNU Compiler
    的头像 发表于 08-30 14:39 616次阅读

    地物光谱仪的两种天空光测量方法比较

    地物光谱仪的两种天空光测量方法比较天空光是指太阳光经过大气分子及大气气溶胶散射后经任意方向到达地面的辐射。
    的头像 发表于 07-29 14:40 403次阅读
    地物光谱仪的<b class='flag-5'>两种</b>天空光测量<b class='flag-5'>方法</b>比较

    TSMaster Hex 文件编辑器使用详细教程

    TSMaster软件的Hex文件编辑器提供了文件处理的功能,这特性让使用TSMaster软件的用户可以更便捷地对Hex、bin、mot、s19和tsbinary类型的文件进行
    的头像 发表于 06-01 08:21 769次阅读
    <b class='flag-5'>TSMaster</b> <b class='flag-5'>中</b> Hex 文件编辑器使用详细教程

    详解TSMaster CAN 与 CANFD 的 CRC E2E 校验方法

    面对切换工具链的用户来说,在TSMaster上完成总线通讯的CRC/E2E校验处理不是特别熟悉,该文章可以协助客户快速使用TSMaster完成CAN/CANFD总线通讯的CRC/E2
    的头像 发表于 05-25 08:21 2254次阅读
    详解<b class='flag-5'>TSMaster</b> CAN 与 CANFD 的 CRC E2E 校验<b class='flag-5'>方法</b>

    TSMaster VLAN配置方法

    ,以太网目录Catalog1.VLAN的配置方法2.TCP/IP通讯带VLAN测试1.TSMaster配置VLANVLAN配置流程如下:1)VLAN配置窗口位于菜单
    的头像 发表于 05-18 08:21 472次阅读
    <b class='flag-5'>TSMaster</b> VLAN配置<b class='flag-5'>方法</b>

    TSMaster中加载基于DotNet平台的Seed&amp;amp;Key

    在UDS诊断过程,会涉及到安全访问的问题,也就是所谓的Seed&KeyTSMaster诊断模块支持通过.dll文件载入Seed&
    的头像 发表于 04-02 08:20 554次阅读
    在<b class='flag-5'>TSMaster</b>中加载基于DotNet平台的<b class='flag-5'>Seed</b>&amp;amp;<b class='flag-5'>Key</b>

    TSMaster如何同时记录标定变量和DBC信号至BLF文件

    客户在使用TSMaster软件标定功能时,有如下使用场景:将DBC文件的信号与A2L文件的标定变量同时记录在个记录文件。针对此应用场景,TSM
    的头像 发表于 03-25 08:20 700次阅读
    <b class='flag-5'>TSMaster</b>如何同时记录标定变量和DBC信号至BLF文件

    两种简单、精确、灵活的热电偶温度测量方法

    电子发烧友网站提供《两种简单、精确、灵活的热电偶温度测量方法.pdf》资料免费下载
    发表于 02-28 14:41 1次下载

    OpenCV两种不同方法实现粘连大米分割计数

    测试图如下,图中有个别米粒相互粘连,本文主要演示如何使用OpenCV用两种不同方法将其分割并计数。
    的头像 发表于 01-22 14:55 1676次阅读
    OpenCV<b class='flag-5'>两种</b>不同<b class='flag-5'>方法</b>实现粘连大米分割计数

    高频电流探头的两种测量方法的过程与特点分析

    高频电流探头的两种测量方法的过程与特点分析  高频电流探头是一种用于测量高频电流的仪器,常用于电力系统、通信系统和电子设备。它具有非接触式测量、高精度、宽频带等特点,广泛应用于各个领
    的头像 发表于 01-05 16:12 807次阅读