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

    浏览量

    45361
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49026
  • MASTER
    +关注

    关注

    0

    文章

    103

    浏览量

    11254
收藏 人收藏

    评论

    相关推荐

    噪声传导的两种模式

    噪声传导有两种模式,一种为差模传导,一种为共模传导。
    的头像 发表于 10-15 11:33 217次阅读
    噪声传导的<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 282次阅读

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

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

    TSMaster VLAN配置方法

    ,以太网目录Catalog1.VLAN的配置方法2.TCP/IP通讯带VLAN测试1.TSMaster配置VLANVLAN配置流程如下:1)VLAN配置窗口位于菜单
    的头像 发表于 05-18 08:21 427次阅读
    <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 503次阅读
    在<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 618次阅读
    <b class='flag-5'>TSMaster</b>如何同时记录标定变量和DBC信号至BLF文件

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

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

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

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

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

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

    了解相控阵天线的真时延

    了解相控阵天线的真时延
    的头像 发表于 12-06 18:09 1825次阅读

    VCXO和TCXO:两种常用的晶体振荡器,你了解它们的原理和应用吗?

    VCXO和TCXO:两种常用的晶体振荡器,你了解它们的原理和应用吗?
    的头像 发表于 12-06 14:55 1655次阅读
    VCXO和TCXO:<b class='flag-5'>两种</b>常用的晶体振荡器,你<b class='flag-5'>了解</b>它们的原理和应用吗?

    LED这两种 PWM 调光方法 哪种更好?

    的占空比来调节 LED 的发光亮度。本文介绍两种常见的 LED PWM 调光方法。 01 带低通滤波 PWM 调光 我们以   TI   LED 驱动器   TPS61165   举例:下图是个具有低
    的头像 发表于 11-29 20:15 6270次阅读
    LED这<b class='flag-5'>两种</b> PWM 调光<b class='flag-5'>方法</b> 哪种更好?

    两种常见EMC整改流程!

    两种常见EMC整改流程!|深圳比创达电子EMC
    的头像 发表于 11-23 10:10 930次阅读

    电阻最大电压如何计算?告诉你两种方法

    电阻最大电压如何计算?告诉你两种方法
    的头像 发表于 11-23 09:08 1777次阅读
    电阻最大电压如何计算?告诉你<b class='flag-5'>两种</b>好<b class='flag-5'>方法</b>