Vault 7: Projects
This publication series is about specific projects related to the Vault 7 main publication.
1.6.3.2.1.4 PROGRAM_DEVICE
The PROGRAM_DEVICE (0x05) command sends the data that is going to be written to the device.
Description
The PROGRAM_DEVICE (0x05) command sends the data that is going to be written to the device. Since this command has
a maximum data payload of 58 bytes, it is necessary to issue multiple commands to program a single area of memory.
The data payload section of the packet is packed from the end, with the padding following the Size field. Ex: If the host
sends 4 bytes of data to be programmed, the resulting packet would have 54 bytes of padding followed by four bytes data.
This command does not have any associated response.
Table: PROGRAM_DEVICE command format
Packet Byte Content
0 PROGRAM_DEVICE (0x05)
1-4 32-bit address to program (little endian)
5 Size (1-58 bytes)
6-(n) Padding (0-57 bytes)
(n+1) Data Payload
1.6.3.2.1.5 PROGRAM_COMPLETE
The PROGRAM_COMPLETE command (0x06) is used to indicate to the device that the host program is finished sending
contiguous address PROGRAM_DEVICE commands.
Description
The PROGRAM_COMPLETE command (0x06) is used to indicate to the device that the host program is finished sending
contiguous address PROGRAM_DEVICE commands. This is required in case the device has any remaining bytes buffered
that it needs to commit to NVM, before a new memory address range can begin to be address/programmed. Always issue
this command after the last PROGRAM_DEVICE command is sent for any given memory region, or if the
PROGRAM_DEVICE address will contain a non-contiguous jump (ex: because the .hex file contains a blank region in
between implemented code sections, as one example).
The command does not have any data payload or associated response.
Table: PROGRAM_COMPLETE command format
Packet Byte Content
0 PROGRAM_COMPLETE(0x06)
1-63 (padding)
1.6.3.2.1.6 GET_DATA
The GET_DATA (0x07) command reads the requested data from the device.
Description
The GET_DATA (0x07) command reads the requested data from the device. This command is normally used to allow the
host/PC GUI software to perform programming verification operations, by reading back a program region that has just
recently been reprogrammed (and check it against the original input .hex file contents for that location). The Size field is the
number of bytes to be read from the device.
Table: GET_DATA command format (sent from host to device)
1.6 Demos MLA - USB Library Help Device - Boot Loader - HID
246
Protego_Release_01_05-Related-OEM-Documentation-MLA_v2013_12_20-help_mla_usb.pdf