Zum Inhalt springen
AutoST by Zyberum GmbH
Menü
Kostenloses ToolUDS

UDS-Negative-Response-Code-Decoder

Negative UDS-Antwort in einer Sekunde dekodieren: 7F 27 35 oder einen Code einfügen, ISO-14229-Namen, abgelehnten Service und Bedeutung bekommen. Mit NRC-Tabelle.

Aktualisiert Diese Seite als Markdown

Kurz gesagt

Dieses Tool dekodiert UDS Negative Response Codes (NRCs) nach ISO 14229-1 Anhang A. Füge eine komplette negative Antwort wie 7F 27 35 oder einen bloßen Code wie 33 ein, und es zeigt den ISO-Namen, den abgelehnten Service und was der Code beim Testen eines Steuergeräts üblicherweise bedeutet. Die Tabelle unter dem Tool ist durchsuchbar und enthält auch die Codes des Authentication-Service (0x29).

Komplette Antwort (7F 27 35) oder nur den Code (35) einfügen. Hex, Leerzeichen optional.

Dekodiert

0x35 invalidKey

Abgelehnter Service: 0x27 SecurityAccess

Der gesendete SecurityAccess-Key passte nicht zum Seed. Zähle diese Antworten: Eine schwache Implementierung begrenzt die Versuche nicht.

Alle Negative Response Codes

CodeISO-NameWas es am Prüfstand bedeutet
0x10generalRejectDas Steuergerät hat den Request ohne genaueren Grund abgelehnt. Oft ein Sammelcode in der Server-Implementierung.
0x11serviceNotSupportedDer Service ist diesem Steuergerät in keiner Session bekannt. Nützlich für die Enumeration: Der Service existiert hier nicht.
0x12subFunctionNotSupportedDer Service existiert, diese Sub-Funktion aber in keiner Session.
0x13incorrectMessageLengthOrInvalidFormatFalsche Byteanzahl für diesen Request. Auch das, was ein gut implementiertes Steuergerät auf die meisten gefuzzten Nachrichten antworten sollte.
0x14responseTooLongDie Antwort würde die Grenze der Transportschicht überschreiten.
0x21busyRepeatRequestDas Steuergerät ist beschäftigt; der Tester darf den Request später wiederholen.
0x22conditionsNotCorrectEine Vorbedingung ist nicht erfüllt, etwa Fahrzeuggeschwindigkeit, laufender Motor oder eine nötige Session oder ein Zustand.
0x24requestSequenceErrorDer Request kam in falscher Reihenfolge, etwa ein SecurityAccess-Key ohne vorherigen Seed-Request oder TransferData ohne RequestDownload.
0x25noResponseFromSubnetComponentEin Gateway hat den Request weitergeleitet, das Ziel-Steuergerät hat aber nicht geantwortet.
0x26failurePreventsExecutionOfRequestedActionEin Fehler im Steuergerät (zum Beispiel ein gespeicherter Fehler) verhindert die Aktion.
0x31requestOutOfRangeEin Parameter liegt außerhalb des gültigen Bereichs: unbekannte DID oder RID, ungültige Speicheradresse oder nicht unterstützter Wert. Auch die Antwort, wenn eine DID existiert, aber nicht in dieser Session, daher nützlich fürs Mapping.
0x33securityAccessDeniedDas Steuergerät ist gesperrt. Service oder Daten brauchen vorher einen erfolgreichen SecurityAccess (0x27). Für den Tester markiert das die geschützte Oberfläche.
0x34authenticationRequiredDer Service braucht vorher eine erfolgreiche Authentication (0x29).
0x35invalidKeyDer gesendete SecurityAccess-Key passte nicht zum Seed. Zähle diese Antworten: Eine schwache Implementierung begrenzt die Versuche nicht.
0x36exceedNumberOfAttemptsZu viele falsche Keys; das Steuergerät hat SecurityAccess vorübergehend gesperrt. Das ist das korrekte Verhalten.
0x37requiredTimeDelayNotExpiredDie Verzögerung nach einem Fehlversuch oder nach dem Einschalten ist noch nicht abgelaufen.
0x38secureDataTransmissionRequiredDer Request muss über SecuredDataTransmission (0x84) gesendet werden.
0x39secureDataTransmissionNotAllowedDieser Request darf nicht über SecuredDataTransmission gesendet werden.
0x3AsecureDataVerificationFailedDie Prüfung einer gesicherten Datenübertragung ist fehlgeschlagen.
0x50certificateVerificationFailedInvalidTimePeriodAuthentication (0x29): Zertifikat zu diesem Zeitpunkt nicht gültig.
0x51certificateVerificationFailedInvalidSignatureAuthentication (0x29): Zertifikatssignatur ungültig.
0x52certificateVerificationFailedInvalidChainOfTrustAuthentication (0x29): Zertifikatskette nicht vertrauenswürdig.
0x53certificateVerificationFailedInvalidTypeAuthentication (0x29): falscher Zertifikatstyp.
0x54certificateVerificationFailedInvalidFormatAuthentication (0x29): Zertifikatsformat ungültig.
0x55certificateVerificationFailedInvalidContentAuthentication (0x29): Zertifikatsinhalt ungültig.
0x56certificateVerificationFailedInvalidScopeAuthentication (0x29): Zertifikatsumfang deckt das nicht ab.
0x57certificateVerificationFailedInvalidCertificateAuthentication (0x29): Zertifikat widerrufen oder anderweitig ungültig.
0x58ownershipVerificationFailedAuthentication (0x29): Besitznachweis fehlgeschlagen.
0x59challengeCalculationFailedAuthentication (0x29): Das Steuergerät konnte die Challenge nicht berechnen.
0x5AsettingAccessRightsFailedAuthentication (0x29): Zugriffsrechte konnten nicht gesetzt werden.
0x5BsessionKeyCreationOrDerivationFailedAuthentication (0x29): Ableitung des Sitzungsschlüssels fehlgeschlagen.
0x5CconfigurationDataUsageFailedAuthentication (0x29): Konfigurationsdaten konnten nicht genutzt werden.
0x5DdeAuthenticationFailedAuthentication (0x29): De-Authentifizierung fehlgeschlagen.
0x70uploadDownloadNotAcceptedRequestDownload oder RequestUpload abgelehnt: falsche Adresse, Länge, Format oder Zustand.
0x71transferDataSuspendedDie Datenübertragung wurde vom Steuergerät ausgesetzt.
0x72generalProgrammingFailureDas Schreiben in den Speicher ist beim Programmieren fehlgeschlagen.
0x73wrongBlockSequenceCounterTransferData-Blockzähler außer der Reihe.
0x78requestCorrectlyReceived-ResponsePendingKein Fehler: Das Steuergerät braucht mehr Zeit und sendet die endgültige Antwort später. Der Tester verlängert sein P2*-Timeout. Achte auf Steuergeräte, die nie nachliefern.
0x7EsubFunctionNotSupportedInActiveSessionDie Sub-Funktion existiert, aber nicht in der aktuellen Session. Session wechseln (0x10) und erneut versuchen.
0x7FserviceNotSupportedInActiveSessionDer Service existiert, aber nicht in der aktuellen Session. Klassischer Marker für Services, die in der Extended- oder Programming-Session liegen.
0x81rpmTooHighMotordrehzahl zu hoch für diese Aktion.
0x82rpmTooLowMotordrehzahl zu niedrig für diese Aktion.
0x83engineIsRunningNicht erlaubt, während der Motor läuft.
0x84engineIsNotRunningNur erlaubt, während der Motor läuft.
0x85engineRunTimeTooLowDer Motor lief noch nicht lange genug.
0x86temperatureTooHighTemperatur zu hoch für diese Aktion.
0x87temperatureTooLowTemperatur zu niedrig für diese Aktion.
0x88vehicleSpeedTooHighFahrzeuggeschwindigkeit zu hoch für diese Aktion. Der übliche Schutz bei Aktuatortests.
0x89vehicleSpeedTooLowFahrzeuggeschwindigkeit zu niedrig für diese Aktion.
0x8Athrottle/PedalTooHighDrossel- oder Pedalstellung zu hoch.
0x8Bthrottle/PedalTooLowDrossel- oder Pedalstellung zu niedrig.
0x8CtransmissionRangeNotInNeutralGetriebe muss in Neutralstellung sein.
0x8DtransmissionRangeNotInGearGetriebe muss einen Gang eingelegt haben.
0x8FbrakeSwitch(es)NotClosedBremspedal muss gedrückt sein.
0x90shifterLeverNotInParkWählhebel muss in P stehen.
0x91torqueConverterClutchLockedWandlerüberbrückungskupplung ist geschlossen.
0x92voltageTooHighVersorgungsspannung zu hoch, oft beim Programmieren.
0x93voltageTooLowVersorgungsspannung zu niedrig, oft beim Programmieren.
0x94resourceTemporarilyNotAvailableEine benötigte Ressource ist belegt; später erneut versuchen.

So funktioniert es

Eine negative UDS-Antwort hat immer drei Bytes: 7F, den Service Identifier (SID) des abgelehnten Requests und den Negative Response Code. Das Tool nimmt die komplette Antwort oder nur den Code, schlägt ihn in der Tabelle der ISO 14229-1 nach und ergänzt, was der Code beim Testen eines Steuergeräts üblicherweise aussagt, geschrieben aus Sicht des Testers statt aus Sicht des Steuergeräts.

Die Tabelle deckt alle Codes aus ISO 14229-1:2020 Anhang A ab, inklusive des Bereichs 0x50 bis 0x5D für den Authentication-Service (0x29) und der Fahrzeugzustands-Codes 0x81 bis 0x94. Codes außerhalb der Tabelle sind herstellerspezifisch oder reserviert.

So liest du das Ergebnis

Drei Codes tragen bei der Enumeration die meiste Information. 0x11 serviceNotSupported heißt, der Service existiert auf diesem Steuergerät gar nicht. 0x7F serviceNotSupportedInActiveSession heißt, er existiert, braucht aber eine andere Session, typischerweise Extended (0x03) oder Programming (0x02). 0x33 securityAccessDenied markiert die Oberfläche, die SecurityAccess schützt. Ein Steuergerät, das bei Sub-Funktionen 0x12 oder 0x7E antwortet und bei unbekannten Identifiern 0x31, verrät dir seine Landkarte eine Antwort nach der anderen.

Beim SecurityAccess-Test zählst du die 0x35-invalidKey-Antworten. Nach der konfigurierten Zahl an Versuchen muss das Steuergerät 0x36 exceedNumberOfAttempts und danach 0x37 requiredTimeDelayNotExpired antworten. Ein Steuergerät, das weiter 0x35 antwortet, hat keinen Versuchszähler, und das ist ein Finding.

Grenzen

Das Tool kennt die Standardcodes, nicht das, was dein Steuergerät daraus macht. Manche Implementierungen antworten auf alles Unverstandene mit 0x10 generalReject, was die Struktur versteckt. Manche beschriften Bedingungen falsch. Die Enumeration von AutoST wertet die Antworten statistisch über Sessions hinweg aus, und so kartiert sie Services und Identifier auch an solchen Steuergeräten.

FAQ

Häufig gestellte Fragen

Wie ist eine negative UDS-Antwort aufgebaut?

Drei Bytes: 0x7F, der Service Identifier des abgelehnten Requests und der Negative Response Code. Ein Tester, der 27 03 sendet (SecurityAccess, requestSeed Level 3) und 7F 27 7E bekommt, lernt, dass Sub-Funktion 03 existiert, aber nicht in der aktiven Session.

Ist 0x78 ein Fehler?

Nein. requestCorrectlyReceived-ResponsePending sagt dem Tester, dass das Steuergerät mehr Zeit braucht; der Tester verlängert sein P2*-Timeout und wartet auf die endgültige Antwort. Steuergeräte, die 0x78 senden und dann nie antworten, sind ein Finding, weil der Tester hängt.

Warum antworten manche Steuergeräte mit 0x31 statt 0x7F auf unbekannte DIDs?

requestOutOfRange (0x31) ist die korrekte Antwort auf eine DID, die das Steuergerät nicht unterstützt, während serviceNotSupportedInActiveSession (0x7F) heißt, dass der ganze Service in der aktuellen Session nicht verfügbar ist. Das wird oft verwechselt und erschwert die Enumeration; AutoST interpretiert beides.

Quellen

Passende Seiten

Sieh es auf deinem ECU

Nützlich? Die Suite macht das automatisch gegen dein Steuergerät.

In einer einstündigen Demo lassen wir AutoST gegen ein Demo-Steuergerät laufen oder, wenn du eines am Prüfstand hast, gegen deines.

  • Enumeration, SecurityAccess, Fuzzing, DoIP live
  • Deine Fragen beantwortet ein Engineer
  • Kostenlos und unverbindlich
Tom Zaubermann

Deine Demo ist mitTom ZaubermannGründer von Zyberum, früher Leiter des VW InCar Security Testing Lab

Bereits im Einsatz bei Tier-1-, Tier-2-Zulieferern und OEMs. Referenzen auf Anfrage.

Ruf uns an: +49 176 439 17074automotive@zyberum.com

Oder schreib uns eine Nachricht

Wir antworten innerhalb eines Werktags.

Ruf uns anDie ganze Testsuite sehen

Wähle einen Termin, der dir passt

In neuem Tab öffnen