Zum Inhalt springen
AutoST by Zyberum GmbH
Menü
GlossarUDS

RoutineControl (0x31)

UDS RoutineControl (0x31) startet, stoppt und liest Routinen eines Steuergeräts über den Routine Identifier (RID). Die Request- und Response-Bytes und was zu prüfen ist.

Aktualisiert Diese Seite als Markdown

Kurz gesagt

RoutineControl (0x31) führt eine Routine auf einem Steuergerät aus, benannt über einen zwei Byte langen Routine Identifier (RID). Die Sub-Funktion wählt Start (01), Stopp (02) oder requestResults (03). Der Request 31 01 FF 01 startet Routine 0xFF01, die positive Antwort 71 01 FF 01 bestätigt es. Die meisten Routinen brauchen die Extended Session und oft SecurityAccess, weil sie Speicher löschen oder Selbsttests starten. Welche Routinen es gibt und was sie verlangen, ist ein zentraler Prüfpunkt.

Was ist RoutineControl (0x31)?

RoutineControl führt eine vordefinierte Routine auf einem Steuergerät aus. Das Sub-Funktions-Byte wählt die Operation, die zwei Bytes danach sind der Routine Identifier (RID). Eine Routine kann ein Speicherlöschen, ein Selbsttest, ein Kalibrierschritt oder eine Prüfung mit Ergebnis sein.

Ein normaler Ablauf:

RichtungBytesBedeutung
Request31 01 FF 01startRoutine, RID 0xFF01
Positive Antwort71 01 FF 01Routine gestartet
Negative Antwort7F 31 33securityAccessDenied

Weitere typische negative Antworten sind 7F 31 31 (requestOutOfRange, unbekannter RID), 7F 31 12 (subFunctionNotSupported), 7F 31 13 (incorrectMessageLengthOrInvalidFormat), 7F 31 22 (conditionsNotCorrect) und 7F 31 24 (requestSequenceError, Ergebnis angefragt, bevor die Routine lief).

Wo ist es definiert?

ISO 14229-1:2020 definiert RoutineControl (0x31) im Routine functional unit. Die Norm beschreibt die drei Sub-Funktionen, den zwei Byte langen Routine Identifier, den optionalen routineControlOptionRecord im Request und den routineStatusRecord in der Antwort. Die Routinen selbst, ihre Identifier und ihre Ein- und Ausgaberecords, definiert der OEM, meist in einer ODX- oder CDD-Datei (ISO 22901-1 für ODX).

Was es in der Praxis bedeutet

In Routinen leben die stärksten Diagnoseaktionen, deshalb zählen ihre Zugriffsregeln. Die Spezifikation legt fest, welcher RID existiert, welche Session und welches Security-Level er braucht und welche Eingabe er erwartet. Bei der Validierung wird geprüft:

  • jede Routine antwortet nur in der vorgesehenen Session und auf dem vorgesehenen Security-Level;
  • ein unbekannter RID gibt NRC 0x31, keine unerwartete Aktion;
  • requestResults vor dem Start gibt NRC 0x24;
  • ein Option-Record falscher Länge gibt NRC 0x13;
  • die Routine liefert einen sinnvollen Status und lässt das Steuergerät in einem definierten Zustand.

Wir finden regelmäßig Routinen, die in der Extended Session ohne den von der Spezifikation geforderten SecurityAccess starten, was ein echtes Finding ist, wenn die Routine Speicher oder Sicherheitsfunktionen berührt.

Wie AutoST es testet

AutoST brute-forct Routinen nie. Mit einer importierten ODX-, PDX- oder CDD-Datei ruft es nur die Routinen auf, die das Steuergerät tatsächlich definiert, mit dem Request-Payload, den du pro Routine überschreiben kannst, und speichert Request und Antwort. Es hält fest, in welcher Session und auf welchem Security-Level jede Routine mit welchem negativen Antwortcode reagiert, sodass eine Routine, die unter ihrem geforderten Schutzniveau läuft, im Ergebnis auffällt.

FAQ

Häufig gestellte Fragen

Was bedeuten die drei Sub-Funktionen?

startRoutine (0x01) startet die Routine, stopRoutine (0x02) stoppt eine laufende, und requestRoutineResults (0x03) liest ihr Ergebnis. Eine Routine kann alle drei unterstützen oder nur Start, je nachdem, was sie tut.

Warum werden Routinen nicht brute-forct?

Ein Routine Identifier adressiert eine bestimmte Aktion, etwa das Löschen eines Speicherblocks oder das Starten eines Selbsttests, und braucht oft einen strukturierten Eingaberecord. Zufällige RIDs aufzurufen ist sinnlos und riskant, also kommen die Identifier aus der ODX- oder CDD-Datei.

Was steht in der Antwort?

Die positive Antwort spiegelt die Sub-Funktion und den zwei Byte langen RID, optional gefolgt von einem routineStatusRecord und Routinenergebnissen. Bei requestRoutineResults tragen die Ergebnis-Bytes das Resultat, etwa einen Pass- oder Fail-Code.

Quellen

Passende Seiten

Sieh es auf deinem ECU

Ein Begriff, der für dein Steuergerät zählt?

In 15 Minuten sagen wir dir, wie AutoST ihn testet, wie ein Finding aussieht und was er für deinen ISO/SAE-21434-Nachweis bedeutet.

  • Direkte Antwort von einem ECU-Security-Engineer
  • Welcher Test den Begriff abdeckt
  • 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 anAutoST-Team fragen

Wähle einen Termin, der dir passt

In neuem Tab öffnen