# RequestDownload (0x34)

> RequestDownload (0x34) ist der UDS-Service, der eine Datenübertragung vom Tester in den Speicher des Steuergeräts startet, typischerweise einen Firmware-Download. Der Request nennt Format, Adresse und Größe; die positive Antwort 0x74 liefert die maximale Blocklänge für die folgenden TransferData-Nachrichten (0x36). ISO 14229-1 sieht den Service in der Programming Session hinter SecurityAccess vor. Überall sonst erreichbar, ist er eines der schwersten Findings an einem Steuergerät.

UDS RequestDownload (0x34) öffnet einen Download in den ECU-Speicher. Request-Bytes, maxNumberOfBlockLength, NRCs und warum 0x34 ohne Sperre ein Top-Finding ist.

Source: https://auto-st.com/de/glossar/request-download-0x34 · Updated: 2026-10-07

## Was ist RequestDownload (0x34)?

RequestDownload ist der UDS-Service, mit dem ein Tester ankündigt, dass er einen Datenblock in den Speicher des Steuergeräts schreiben will, meist neue Firmware. Er eröffnet die Download-Sequenz: `34` RequestDownload, dann ein oder mehrere `36` TransferData-Blöcke, dann `37` RequestTransferExit. Das Steuergerät antwortet auf 0x34 mit der maximalen Blockgröße, die es akzeptiert, und ab dann liefert der Tester die Daten in Blöcken dieser Größe.

Der Request trägt vier Parameter: den dataFormatIdentifier (hohes Nibble Kompressionsverfahren, niedriges Nibble Verschlüsselungsverfahren, `00` heißt Rohdaten), den addressAndLengthFormatIdentifier (hohes Nibble: Anzahl Bytes von memorySize, niedriges Nibble: Anzahl Bytes von memoryAddress), die memoryAddress und die memorySize. `34 00 44 08 00 00 00 00 02 00 00` fordert einen Download von 0x20000 Byte Rohdaten an Adresse 0x08000000 an. Die positive Antwort `74 20 0F FA` sagt: Der lengthFormatIdentifier `20` kündigt eine zwei Byte lange maxNumberOfBlockLength an, und `0F FA` (4090) ist die maximale Länge jeder TransferData-Nachricht, inklusive SID und blockSequenceCounter-Byte.

## Wo ist es definiert?

ISO 14229-1:2020, Kapitel 14 (Upload download functional unit), definiert RequestDownload (0x34) zusammen mit RequestUpload (0x35), TransferData (0x36), RequestTransferExit (0x37) und RequestFileTransfer (0x38). Die Negative Response Codes speziell für diese Sequenz sind 0x70 uploadDownloadNotAccepted, 0x71 transferDataSuspended und 0x73 wrongBlockSequenceCounter, neben den allgemeinen Codes 0x13, 0x22, 0x31, 0x33 und 0x7F. Auf CAN laufen die Blöcke über ISO 15765-2, weshalb Blocklänge und ISO-TP-Empfangspuffer des Steuergeräts zusammenhängen.

## Was es in der Praxis bedeutet

Ein Tester, der 0x34, 0x36 und 0x37 durchläuft, kann die Software des Steuergeräts ersetzen. Das ist der Zweck des Service, und genau deshalb erwartet ISO 14229-1 ihn nur in der Programming Session (0x02), hinter SecurityAccess (0x27) und normalerweise mit Signaturprüfung des übertragenen Images. Drei Antworten verraten dir die Konfiguration: `7F 34 7F` heißt, der Service existiert, aber nicht in dieser Session; `7F 34 33` heißt, SecurityAccess sperrt ihn; `74 ...` in der Default Session heißt, dass keine der beiden Hürden existiert.

Wir sehen regelmäßig 0x34 in Default oder Extended Session erreichbar, Downloads für beliebige Adressen akzeptiert (`7F 34 31` requestOutOfRange wäre die korrekte Antwort auf eine Adresse außerhalb des Flash-Bereichs) und Steuergeräte, die resetten oder hängen, wenn ein TransferData-Block länger ist als die angekündigte maxNumberOfBlockLength oder der blockSequenceCounter springt. An einem Leistungselektronik-Steuergerät war eine ohne Seed/Key akzeptierte Download-Sequenz der kürzeste Weg vom Diagnosestecker zur Firmware.

## Wie AutoST es testet

Die Enumeration-Engine prüft 0x34 in jeder gefundenen Session und klassifiziert die Antwort: unterstützt, durch SecurityAccess gesperrt, nicht in dieser Session oder nicht vorhanden. Im Service-Risikokatalog ist RequestDownload als riskant markiert und trägt das höchste Gewicht (5), ein Steuergerät, das ihn außerhalb einer geschützten Session akzeptiert, wird entsprechend bewertet. Der UDS-Fuzzer kann 0x34 und 0x36 mit fehlerhaften Längen und Adressen angehen, während der TesterPresent-Liveness-Check auf Hänger oder Reset achtet. AutoST flasht das Steuergerät nicht.

## Häufige Missverständnisse

Der Name ist aus Sicht des Testers gewählt: "Download" heißt, Daten fließen ins Steuergerät, während RequestUpload (0x35) Speicher ausliest. Eine positive Antwort auf 0x34 ist noch kein Schreibvorgang; nichts ändert sich, bis TransferData-Blöcke ankommen und RequestTransferExit abschließt. Für den Security-Test ist die Annahme von 0x34 das Finding, nicht die Daten, die du danach senden könntest.

## FAQ

**Warum enthält maxNumberOfBlockLength SID und Zählerbyte?**

ISO 14229-1 definiert den Wert als Länge der kompletten TransferData-Nachricht. Ein Wert von 0x0FFA (4090) lässt also 4088 Byte Nutzdaten pro Block. Tester, die die zwei Bytes vergessen, senden zu große Blöcke und bekommen 0x13 incorrectMessageLengthOrInvalidFormat, oder sie bringen ein nachlässiges Steuergerät zum Absturz.

**Darf 0x34 jemals in der Default Session antworten?**

Nein. ISO 14229-1 ordnet die Reprogrammierung der Programming Session zu, und eine sichere Implementierung verlangt zusätzlich SecurityAccess. Eine positive Antwort 0x74 in der Default Session heißt, dass jeder mit Buszugang einen Flash-Download starten kann.

**Flasht AutoST das Steuergerät?**

Nein. AutoST prüft, ob und in welcher Session 0x34 erreichbar ist, wie das Steuergerät mit fehlerhaften Download-Requests umgeht, und bewertet die Exposition. Das Flashen selbst bleibt bei deinem Flash-Tool.

## Sources

- [ISO 14229-1:2020 Straßenfahrzeuge, Unified diagnostic services (UDS), Teil 1: Anwendungsschicht, Kapitel 14 Upload download functional unit](https://www.iso.org/standard/72439.html)
- [ISO 15765-2 Straßenfahrzeuge, Diagnosekommunikation über CAN (DoCAN), Teil 2: Transportprotokoll und Netzwerkschichtdienste](https://www.iso.org/standard/84211.html)

## Related

- [Programming Session (0x10 0x02)](https://auto-st.com/de/glossar/programming-session)
- [Diagnose-Session (DiagnosticSessionControl 0x10)](https://auto-st.com/de/glossar/diagnose-session)
- [ISO-TP (ISO 15765-2)](https://auto-st.com/de/glossar/iso-tp)
- [Kenne jede Tür ins ECU.](https://auto-st.com/de/uds-enumeration)
- [Mach es am Prüfstand kaputt, nicht im Feld.](https://auto-st.com/de/ecu-fuzzing)
- [Hält dein Seed/Key wirklich?](https://auto-st.com/de/security-access-test)

---
AutoST by Zyberum. Canonical page: https://auto-st.com/de/glossar/request-download-0x34
