From a2a6f8d4e52bcb698638ae96b86382bf94b4d9b9 Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 27 Jan 2026 14:33:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CanUds.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/CanUds.c b/CanUds.c index e7a23d4..6ca2357 100644 --- a/CanUds.c +++ b/CanUds.c @@ -557,18 +557,30 @@ static uint16_t SecurityAccess_27(tCanUds *env) { env->dataResponse[0] = UDS_SecurityAccess | 0b1000000; env->dataResponse[1] = env->data.data[1] & 0b01111111; // sub-function - env->dataResponse[2] = randomSecuritySeed >> 24; - env->dataResponse[3] = randomSecuritySeed >> 16; - env->dataResponse[4] = randomSecuritySeed >> 8; - env->dataResponse[5] = randomSecuritySeed; + // Доступ уже получен + if (env->SA.stateSecurityAccess) { + env->dataResponse[2] = 0; + env->dataResponse[3] = 0; + env->dataResponse[4] = 0; + env->dataResponse[5] = 0; + } else { + if (randomSecuritySeed == 0) { + randomSecuritySeed = 0x11223344; + } + + env->dataResponse[2] = randomSecuritySeed >> 24; + env->dataResponse[3] = randomSecuritySeed >> 16; + env->dataResponse[4] = randomSecuritySeed >> 8; + env->dataResponse[5] = randomSecuritySeed; + } return 6; } if (com->sub_function == UDS_sub_sendKey) { if (env->data.len < 6) { - return setResponseError(env, UDS_SecurityAccess, UDS_error_incorrectMessageLengthOrInvalidFormat); + return setResponseError(env, UDS_SecurityAccess, UDS_error_requestOutOfRange); } // Ранее не получен запрос UDS_sub_requestSeed @@ -605,6 +617,8 @@ static uint16_t SecurityAccess_27(tCanUds *env) { return 2; } + + return setResponseError(env, UDS_SecurityAccess, UDS_error_invalidKey); } // конец --------------------------- Security Access ------------------------------------------------------------- // конец --------------------------- Security Access -------------------------------------------------------------