0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文了解TSMaster中Seed和key的兩種處理方法

上海同星智能科技有限公司 ? 2023-08-26 08:23 ? 次閱讀

在UDS診斷過程中,會涉及到安全訪問的問題,也就是常說的Seed&Key。TSMaster中提供了兩種 Seed&Key 的處理方法:第一種是直接加載DLL文件;第二種是直接在TSMaster的編譯器中直接添加安全算法。

加載外部 Seed&Key DLL

TSMaster 診斷模塊支持通過 dll 載入 Seed&Key 算法,該算法 dll 跟主流工具的計(jì)算接口兼容,接口定義如下圖所示:

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

DLL 加載界面如下圖所示:

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


【1】 加載 DLL

【2】 刪除 DLL


【3】 DLL 校驗(yàn)器,通過此按鈕,用戶可以判斷自己加載的 dll 接口是否正確,算法是否符合設(shè)計(jì)要求。如下圖所示:

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

如上圖所示界面,用戶選擇 Seed 的 Level 過后,輸入 Demo Seed 值,點(diǎn)擊 GenKey 進(jìn)行判斷。如果該 DLL 接口跟模板定義接口統(tǒng)一,則會輸出提示信息:Generate Key Success,然后用戶根據(jù) Key 值跟目標(biāo)值對比,進(jìn)一步確認(rèn)DLL 中的算法是否符合設(shè)計(jì)要求。


【4】 打開 TSMaster 安裝目錄下 Seed&Key 接口工程所在的路徑。用戶可以拷貝該工程添加自己的 Seed&Key 算法。


默認(rèn)SeedKey函數(shù)接口

目前,要想被 TSMaster 的診斷模塊直接加載,該 DLL 必須實(shí)現(xiàn)如下三種函數(shù)接口中的一種:


【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 只要實(shí)現(xiàn)了上述任意一種函數(shù)接口,即可直接加載到 TP 層模塊中。如果出現(xiàn)加載失敗,主要檢查如下情況:

1. 是否用 Release 模式發(fā)布,如果是 Debug 模式,常常會有以上失敗的情況出現(xiàn)。

2. 是否采用 x86 平臺發(fā)布,目前 TSMaster 為支持 X86 的版本,用來調(diào)試的 DLL 也必須為X86 模式。


如何兼容其他函數(shù)接口

日常使用中,經(jīng)常出現(xiàn)用戶已經(jīng)開發(fā)好了 dll,如果該 dll的接口不是上述三種中的任何一種,就無法直接加載到 TSMaster 的診斷模塊中。對于這種情況,推薦采用如下方案來解決此問題:

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


下面以一個(gè)實(shí)際的實(shí)例來講解如何兼容用戶現(xiàn)有的 DLL 文件。


1. 用戶現(xiàn)有的 DLL,名稱為 UserSeedKey.dll。該函數(shù)內(nèi)部的 API 函數(shù)有:

? Seed 等級為 1 的時(shí)候,調(diào)用函數(shù) void GetKeyFromSeed01(byte* ASeed, byte* AKey);

? Seed 等級為 3 的時(shí)候,調(diào)用函數(shù) void GetKeyFromSeed03(byte* ASeed, byte* AKey);

? Seed 等級為 11 的時(shí)候,調(diào)用函數(shù) void GetKeyFromSeed11(byte* ASeed, byte* AKey);


該 dll 不支持上述默認(rèn)加載接口,無法直接加載到 TSMaster 中使用。因此,需要把這些 DLL 再包裝一層,才能載入到 TSMaster 的診斷模塊中。


2. 選擇 TSMaster 安裝目錄中提供的 GenerateKeyEx 的模板工程,在該工程中調(diào)用上述 DLL的函數(shù)接口?;舅悸肥牵?/strong>

? 采用 Loadlibrary 動態(tài)用戶現(xiàn)有的 dll。

? 根據(jù)傳入的 Level 參數(shù),采用 GetProcAddress 函數(shù)動態(tài)獲取實(shí)際的用于計(jì)算 Key 的函數(shù)指針。

? 如果獲取函數(shù)指針成功,則使用該函數(shù)指針傳輸 Seed 值,并計(jì)算對應(yīng)的 Key 值。


詳細(xì)調(diào)用示例函數(shù)如下圖所示:

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


3. 該 GenerateKeyEx 工程開發(fā)結(jié)束后,TSMaster 直接加載 GenerateKeyEx 所在的 dll。需要注意的是,用戶需要把現(xiàn)有的UserSeedKey.dll 拷貝到TSMaster 根目錄或者GenerateKeyEx.dll 所在的目錄。如果不拷貝過去,GenerateKeyEx.dll 執(zhí)行的時(shí)候會出現(xiàn)找不到對應(yīng)依賴 dll 的情況,解鎖失敗。

總結(jié):

在 TSMaster 安裝目錄中,提供了封裝 Seed&Key 算法的模板工程。如 GenerateKeyEx,GenerateKeyExOpt ASAP1A_CCP_ComputeKeyFromSeed,用戶基于此模板工程開發(fā)即可得到能夠直接加載的 dll 函數(shù)。

同時(shí),也提供了二次封裝的 dll 的工程,比如 GenerateKeyEx_Wrapper_Demo,該工程演示了如何基于已經(jīng)存在的 SeedKey 算法庫進(jìn)行包裝,生成可以直接加載到 TSMaster 診斷模塊中的 dll 的過程。


采用內(nèi)置的算法編輯器

基本步驟如下所示:

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

注意事項(xiàng):

【1】 算法函數(shù)的接口,TSMaster 目前提供了最常用的接口形式,如果用戶有自己特殊的接口形式,無法覆蓋住,請聯(lián)系上海同星把此接口增加到選項(xiàng)中。

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

【2】 所有的接口函數(shù)都定義了返回值 s32。增加此約束,主要是增加函數(shù)的嚴(yán)謹(jǐn)性。返回值為 0 表示成功,為其他值則有對應(yīng)的錯(cuò)誤碼。用戶在編輯代碼的時(shí)候,最后一行一定不要忘了輸入返回值,否則系統(tǒng)執(zhí)行函數(shù)過后,會認(rèn)為算法執(zhí)行失敗,不予往后面執(zhí)行。如下所示:

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

【3】 添加算法過后,點(diǎn)擊 OK 退出。TSMaster 內(nèi)置編譯器會自動解釋該算法,并準(zhǔn)備好在執(zhí)行診斷的過程中使用。

以上就是Seed&Key 的兩種處理方法,如有任何問題可與同星聯(lián)系。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • dll
    dll
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    46090
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1657

    瀏覽量

    49916
  • MASTER
    +關(guān)注

    關(guān)注

    0

    文章

    106

    瀏覽量

    11625
收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    銣原子鐘與CPT原子鐘:兩種時(shí)間標(biāo)準(zhǔn)的區(qū)別

    在物理學(xué)的世界,精密的時(shí)間測量是至關(guān)重要的。這就需要個(gè)高度準(zhǔn)確且穩(wěn)定的時(shí)間標(biāo)準(zhǔn),這就是原子鐘。今天我們將探討兩種重要的原子鐘:銣原子鐘和CPT原子鐘,以及它們之間的主要區(qū)別。首先,我們來
    的頭像 發(fā)表于 05-22 15:49 ?110次閱讀
    銣原子鐘與CPT原子鐘:<b class='flag-5'>兩種</b>時(shí)間標(biāo)準(zhǔn)的區(qū)別

    解鎖TSMaster fifo函數(shù):報(bào)文讀取的高效方法

    前言:TSMaster目前有兩種讀取報(bào)文的模式:回調(diào)函數(shù)模式和fifo模式。fifo函數(shù)是TSMaster近期新增的函數(shù),本文將重點(diǎn)介紹fifo模塊。關(guān)于回調(diào)函數(shù)的使用方法可以參考幫助
    的頭像 發(fā)表于 03-14 20:04 ?369次閱讀
    解鎖<b class='flag-5'>TSMaster</b> fifo函數(shù):報(bào)文讀取的高效<b class='flag-5'>方法</b>

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

    OpenAI API Key 全攻略:官方獲取、費(fèi)用詳解與“白嫖”實(shí)戰(zhàn) 引言: 想要體驗(yàn) OpenAI 強(qiáng)大的 GPT 模型,卻苦于沒有 API Key?別擔(dān)心,本文將為你提供份詳盡
    的頭像 發(fā)表于 02-24 22:16 ?8797次閱讀
    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>)

    AMC1204有兩種封裝,SOIC-8和SOIC-16,功能樣嗎?為什么要推出兩種封裝?

    呢?AMC1204,AMC1304這樣做有什么好處嗎? 2、AMC1204有兩種封裝,SOIC-8和SOIC-16,功能樣嗎?為什么要推出兩種封裝?
    發(fā)表于 12-27 07:22

    芯片制造過程兩種刻蝕方法

    本文簡單介紹了芯片制造過程兩種刻蝕方法 ? 刻蝕(Etch)是芯片制造過程相當(dāng)重要的步驟。 刻蝕主要分為干刻蝕和濕法刻蝕。 ①干法刻蝕 利用等離子體將不要的材料去除。 ②濕法刻蝕
    的頭像 發(fā)表于 12-06 11:13 ?1276次閱讀
    芯片制造過程<b class='flag-5'>中</b>的<b class='flag-5'>兩種</b>刻蝕<b class='flag-5'>方法</b>

    Pythondict支持多個(gè)key方法

    ? 在Python,字典(dict)是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許我們通過鍵(key)來存儲和檢索值(value)。有時(shí)候,我們可能想要根據(jù)多個(gè)鍵來檢索或操作字典的數(shù)據(jù)。雖然Py
    的頭像 發(fā)表于 11-29 15:59 ?493次閱讀

    噪聲傳導(dǎo)的兩種模式

    噪聲傳導(dǎo)有兩種模式,一種為差模傳導(dǎo),一種為共模傳導(dǎo)。
    的頭像 發(fā)表于 10-15 11:33 ?682次閱讀
    噪聲傳導(dǎo)的<b class='flag-5'>兩種</b>模式

    比較分析兩種不同的可提高柵極驅(qū)動電流的方法

    電子發(fā)燒友網(wǎng)站提供《比較分析兩種不同的可提高柵極驅(qū)動電流的方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-23 11:13 ?0次下載
    比較分析<b class='flag-5'>兩種</b>不同的可提高柵極驅(qū)動電流的<b class='flag-5'>方法</b>

    放大電路的基本分析方法有哪兩種

    放大電路是電子學(xué)的基礎(chǔ)組成部分,用于增強(qiáng)信號的幅度而不改變其基本特性。在電子工程,放大電路的設(shè)計(jì)和分析是至關(guān)重要的。放大電路的基本分析方法主要有兩種:直流分析和交流分析。 直流分析
    的頭像 發(fā)表于 09-23 10:40 ?1072次閱讀

    linux驅(qū)動程序的編譯方法有哪兩種

    Linux驅(qū)動程序的編譯方法主要可以歸納為兩種: 手動編譯 和 使用內(nèi)核構(gòu)建系統(tǒng)(Makefile)自動編譯 。 1. 手動編譯 手動編譯驅(qū)動程序通常涉及直接使用GCC(GNU Compiler
    的頭像 發(fā)表于 08-30 14:39 ?1403次閱讀

    邏輯函數(shù)的化簡方法有哪兩種

    邏輯函數(shù)的化簡是數(shù)字電路設(shè)計(jì)的重要步驟,它有助于減少電路的門數(shù)量,提高電路的性能和可靠性。邏輯函數(shù)的化簡方法主要可以分為大類: 公式化簡法 : 代數(shù)法 :利用布爾代數(shù)的公理、定理
    的頭像 發(fā)表于 08-22 16:40 ?2304次閱讀

    晶閘管的阻斷狀態(tài)有兩種是什么

    晶閘管(Thyristor)是一種半導(dǎo)體器件,具有單向?qū)щ娦裕瑥V泛應(yīng)用于電力電子領(lǐng)域。晶閘管的阻斷狀態(tài)有兩種:正向阻斷狀態(tài)和反向阻斷狀態(tài)。以下是對這兩種阻斷狀態(tài)的分析。 正向阻斷狀態(tài) 正向阻斷狀態(tài)
    的頭像 發(fā)表于 08-14 16:49 ?1314次閱讀

    地物光譜儀的兩種天空光測量方法比較

    地物光譜儀的兩種天空光測量方法比較天空光是指太陽光經(jīng)過大氣分子及大氣氣溶膠散射后經(jīng)任意方向到達(dá)地面的輻射。
    的頭像 發(fā)表于 07-29 14:40 ?902次閱讀
    地物光譜儀的<b class='flag-5'>兩種</b>天空光測量<b class='flag-5'>方法</b>比較

    wdm設(shè)備的兩種傳輸方式

    系統(tǒng),有多種傳輸方式,其中最常見的兩種是密集波分復(fù)用(DWDM)和粗波分復(fù)用(CWDM)。 1. 密集波分復(fù)用(DWDM) 1.1 DWDM技術(shù)原理 密集波分復(fù)用(Dense Wavelength Division Multiplexing,簡稱DWDM)是
    的頭像 發(fā)表于 07-18 09:45 ?807次閱讀

    TSMaster 不同總線報(bào)文消息過濾的操作方式

    TSMaster軟件平臺支持對不同總線(CAN、LIN、FlexRay)報(bào)文和信號的過濾,包括全局接收過濾、數(shù)據(jù)流過濾、窗口過濾、字符串過濾、可編程過濾,針對不同的總線信號過濾器的使用方法基本相
    的頭像 發(fā)表于 06-22 08:21 ?2064次閱讀
    <b class='flag-5'>TSMaster</b> <b class='flag-5'>中</b>不同總線報(bào)文消息過濾的操作方式

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品