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

    文章

    113

    浏览量

    45018
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48618
  • MASTER
    +关注

    关注

    0

    文章

    78

    浏览量

    11160
收藏 人收藏

    评论

    相关推荐

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

    在UDS诊断过程中,会涉及到安全访问的问题,也就是所谓的Seed&KeyTSMaster诊断模块支持通过.dll文件载入Seed&Key
    的头像 发表于 04-02 08:20 83次阅读
    在<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文件中的标定变量同时记录在一个记录文件。针对此应用场景,TSMaster软件提供了一种方法来满足此需求。今天重点
    的头像 发表于 03-25 08:20 229次阅读
    <b class='flag-5'>TSMaster</b>如何同时记录标定变量和DBC信号至BLF文件

    电机干货!了解电机的原理及分类

    了解电机的原理及分类 电机是传动及控制系统的重要部分,目前电机应用的重点也从过去简单的传动向电机的速度、位置、转矩的精确控制转移; 电机为何能够转动?电机又有哪些分类?不同工作环
    发表于 03-12 09:35

    变频器的两种无速度传感器矢量控制模式有什么区别?

    在变频器控制模式,有无速度矢量传感器模式,该模式又分为两种,无感矢量0和无感矢量1,这两种模式的本质原理是什么?对变频器的控制电机性能和系统稳定性响应什么的有什么影响?具体应用上哪种方式更好
    发表于 02-22 21:45

    使用两种不同的数字签名对用户应用程序进行签名是否适用?

    我想问下使用两种不同的数字签名对用户应用程序进行签名是否适用,安全映像将
    发表于 01-18 10:43

    带你了解FPGA直方图操作

    度较低 对比度很高的图像## FPGA功能分析 对于FPGA进行直方图操作的时候有两种方式,一种是真操作,一种是伪操作:真操作就是将图像缓存后进行后续处理(均衡等),然后再将图像发送出
    发表于 01-10 15:07

    关于51单片机的矩阵键盘扫描的两种方法的困惑求解

    key_value,然后在主函数里将根据key_value的值来做出相应的动作! 分析上述两种方法:对于第一种方法,如果主程序特别长且很消耗时间,那么很可能出现按键漏扫的情况,不可靠。
    发表于 10-26 08:02

    常见的ARM架构分为两种一种是M系列另外一种是A系列,这两种有什么区别啊?

    现在市面上常见的ARM架构分为两种一种是M系列另外一种是A系列,这两种有什么区别啊,用的时候他们般分别用在什么地方啊。
    发表于 10-26 07:00

    STM32中文显示有什么抗锯齿方法

    STM32中文显示有什么抗锯齿方法
    发表于 10-15 11:49

    了解新能源汽车包含多少芯片

    辆汽车到底需要多少个芯片? 在过去的几十年,半导体产品在汽车的应用迅速扩大,汽车电子成为增速最快的细分市场之。根据中国汽车工业协会提供的数据显示,传统燃油车所需汽车芯片数量为6
    发表于 08-25 11:32

    推测性处理器漏洞常见问题

    以下信息提供了有关推测性处理器漏洞的常见问题解答。 你能用通俗易懂的话解释这个问题吗? ·这两种攻击都利用了现有的旁路技术,并可能导致通过使用恶意软件访问少量数据。 ·使用这种方法并在本地运行的恶意
    发表于 08-25 07:15

    TSMaster小功能—Python小程序如何导入外部库

    今天给大家介绍TSMaster功能之Python小程序如何导入外部库。通过在TSMaster默认的解析器路径下导入外部库来介绍,以便我们去使用Python外部库。TSMaster默认Python
    的头像 发表于 08-14 10:06 672次阅读
    <b class='flag-5'>TSMaster</b>小功能—Python小程序如何导入外部库

    带你了解PCB印刷电路板的铜箔

    铜箔分成不同类别,其中包括LP(低轮廓)、VLP(超低轮廓)和HVLP(甚超低轮廓)。 铜箔粗糙度有多种测量方法 铜箔粗糙度测量方法有多种,由于方法差异其测量结果可能让人迷惑。般来说
    发表于 06-15 16:59

    两种生产线的共同点与他们可重复使用的程序

    两种生产线的共同点与他们可重复使用的程序。 每设备,只可生产个半成品。 每设备,按类型可分为 模具与装配。其它还有些别类的如弹簧生产。 模具,般按设计它已经是一种成品了,只是诸多
    发表于 06-09 16:26

    请问下无线局域网的两种网络结构是什么?

    请问下无线局域网的两种网络结构是什么?
    发表于 05-09 16:22