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

    文章

    120

    浏览量

    46670
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51078
  • MASTER
    +关注

    关注

    0

    文章

    110

    浏览量

    12106
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    两种电流检测电路设计方案 高侧 低侧 最高耐压90V

    常用的电流检测电路有两种一种是低压侧电流检测,另一种是高压侧电流检测。 实现方法两种电流检测电路工作原理
    的头像 发表于 11-24 16:16 788次阅读
    <b class='flag-5'>两种</b>电流检测电路设计方案 高侧 低侧 最高耐压90V

    用PLC实现卷径计算的两种算法

    卷径计算,是动态计算如钢卷,纸卷等存料量的一种方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法两种一种是根据机列速度(产线速度)和和被测卷的转动角
    的头像 发表于 11-14 16:54 1346次阅读
    用PLC实现卷径计算的<b class='flag-5'>两种</b>算法

    两种TVS有啥不同?

    当我们查看TVS二极管的规格书,常会看到有以下两种种引脚功能标识图:对于初学者,看到感到疑惑,他们样吗?他们有啥区别?为啥有的个尖头往外,阳极连在起,有的
    的头像 发表于 09-15 20:27 579次阅读
    这<b class='flag-5'>两种</b>TVS有啥不同?

    两种散热路径的工艺与应用解析

    背景:两种常见的散热设计思路 在大电流或高功率器件应用,散热和载流能力是PCB设计必须解决的难题。常见的两种思路分别是: 厚铜板方案:通过整体增加铜箔厚度(如3oz、6oz甚至更高
    的头像 发表于 09-15 14:50 457次阅读

    CMOS 2.0与Chiplet两种创新技术的区别

    摩尔定律正在减速。过去我们靠不断缩小晶体管尺寸提升芯片性能,但如今物理极限越来越近。在这样的背景下,两种创新技术站上舞台:CMOS 2.0 和 Chiplet(芯粒)。它们都在解决 “如何让芯片更强” 的问题,但思路却大相径庭。
    的头像 发表于 09-09 15:42 710次阅读

    别再搜了!国内用户搞定OpenAI API Key两种最佳实践(保姆级教程)

    需要国际卡? 拿到Key了,却不知道怎么在代码里安全地使用? 别慌,你遇到的坑,我都踩过。这篇教程就是你的避坑指南,我将以“技术学长”的身份,带你走通条获取OpenAI API Key的路径,从注册到代码调用,帮你搞定!
    的头像 发表于 08-24 19:02 7647次阅读

    贴片晶振两种常见封装介绍

    贴片晶体振荡器作为关键的时钟频率元件,其性能直接关系到系统运行的稳定性。今天,凯擎小妹带大家聊聊贴片晶振两种常见封装——金属面封装与陶瓷面封装。
    的头像 发表于 07-04 11:29 963次阅读
    贴片晶振<b class='flag-5'>中</b><b class='flag-5'>两种</b>常见封装介绍

    告别摸索!TSMaster官方最全学习路径整理

    在汽车电子和总线通信领域,TSMaster已成为工程师们不可或缺的利器。作为款功能强大的总线分析、仿真、测试和诊断工具,TSMaster广泛应用于CAN、LIN、FlexRay等总线系统的开发
    的头像 发表于 06-13 20:06 760次阅读
    告别摸索!<b class='flag-5'>TSMaster</b>官方最全学习路径整理

    六相永磁同步电机串联系统控制的两种方法分析研究

    摘要:笔者以逆变器驱动合双Y移 30°永磁同步电机(PMSM)的串联系统为例,给出了串联系统的工作原理,采用i0的失量控制策略及电流滞环控制和PWM载波控制两种拉制串联解楀的方法。在Malab
    发表于 06-10 13:09

    两种感应电机磁链观测器的参数敏感性研究

    (MRAS)转速估算对参数的敏感性。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:两种感应电机磁链观测器的参数敏感性研究.pdf【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第时间告知,删除内容!
    发表于 06-09 16:16

    铷原子钟与CPT原子钟:两种时间标准的区别

    在物理学的世界,精密的时间测量是至关重要的。这就需要个高度准确且稳定的时间标准,这就是原子钟。今天我们将探讨两种重要的原子钟:铷原子钟和CPT原子钟,以及它们之间的主要区别。首先,我们来
    的头像 发表于 05-22 15:49 500次阅读
    铷原子钟与CPT原子钟:<b class='flag-5'>两种</b>时间标准的区别

    解锁TSMaster fifo函数:报文读取的高效方法

    前言:TSMaster目前有两种读取报文的模式:回调函数模式和fifo模式。fifo函数是TSMaster近期新增的函数,本文将重点介绍fifo模块。关于回调函数的使用方法可以参考帮助
    的头像 发表于 03-14 20:04 937次阅读
    解锁<b class='flag-5'>TSMaster</b> fifo函数:报文读取的高效<b class='flag-5'>方法</b>

    openai api key获取的三方案(有一种可以白嫖到 api key

    OpenAI API Key 全攻略:官方获取、费用详解与“白嫖”实战 引言: 想要体验 OpenAI 强大的 GPT 模型,却苦于没有 API Key?别担心,本文将为你提供份详尽
    的头像 发表于 02-24 22:16 1.4w次阅读
    openai api <b class='flag-5'>key</b>获取的三<b class='flag-5'>种</b>方案(有<b class='flag-5'>一种</b>可以白嫖到 api <b class='flag-5'>key</b>)

    覆铜的两种形式是什么

    在电子电路设计与制造领域,覆铜的实现形式多样,其中大面积的覆铜和网格铜是最为常见且各具特色的两种,它们在不同的应用场景下发挥着关键作用。 大面积的覆铜,顾名思义,是指在印刷电路板(PCB)的特定区域
    的头像 发表于 02-04 14:10 919次阅读

    AMC1204有两种封装,SOIC-8和SOIC-16,功能样吗?为什么要推出两种封装?

    呢?AMC1204,AMC1304这样做有什么好处吗? 2、AMC1204有两种封装,SOIC-8和SOIC-16,功能样吗?为什么要推出两种封装?
    发表于 12-27 07:22