Difference between revisions of "GSD"
(→Blocks) |
(→Blocks) |
||
Line 42: | Line 42: | ||
!Prefix !!Type !!Length !!Data | !Prefix !!Type !!Length !!Data | ||
|- | |- | ||
|0x0108 ||05 ||13 ||"Graphtec Craft ROBO" | |0x0108 ||05 ||13 ||"Graphtec Craft ROBO" - Optional | ||
|- | |- | ||
|0x0208 ||05 ||13 ||"Graphtec Craft ROBO" | |0x0208 ||05 ||13 ||"Graphtec Craft ROBO" - Optional | ||
|- | |- | ||
|0x0408 ||05 ||06 ||"Letter" - Text Paper Size | |0x0408 ||05 ||06 ||"Letter" - Text Paper Size | ||
Line 50: | Line 50: | ||
|0x0508 ||03 ||02 ||56 54 00 00 24 6D 00 00 - Paper size in 1/2540" units (Little Endian) 4-byte width, 4-byte height | |0x0508 ||03 ||02 ||56 54 00 00 24 6D 00 00 - Paper size in 1/2540" units (Little Endian) 4-byte width, 4-byte height | ||
|- | |- | ||
|0x1B08 ||01 ||01 ||00 | |0x1B08 ||01 ||01 ||00 - Portrait(0) or Landscape(1) | ||
|- | |- | ||
|0x2708 ||01 ||01 ||00 | |0x2708 ||01 ||01 ||00 | ||
Line 134: | Line 134: | ||
|0x030E ||02 ||01 ||01 00 | |0x030E ||02 ||01 ||01 00 | ||
|- | |- | ||
|0x0A0E ||04 ||01 ||CD CC CC CC CC 0C 33 40 - | |0x0A0E ||04 ||01 ||CD CC CC CC CC 0C 33 40 - Registration Mark Size | ||
|- | |- | ||
|0x0B0E ||02 ||01 ||A8 C6 4B 37 89 41 E0 3F - | |0x0B0E ||02 ||01 ||A8 C6 4B 37 89 41 E0 3F - Registration Mark Thickness | ||
|- | |- | ||
|0x0C0E ||03 ||01 ||66 66 66 66 66 66 29 40 - | |0x0C0E ||03 ||01 ||66 66 66 66 66 66 29 40 - Origin X | ||
|- | |- | ||
|0x0D0E ||03 ||01 ||52 B8 1E 85 EB 51 24 40 - | |0x0D0E ||03 ||01 ||52 B8 1E 85 EB 51 24 40 - Origin Y | ||
|- | |- | ||
|0x0E0E ||03 ||01 ||01 00 00 00 00 D0 67 40 - | |0x0E0E ||03 ||01 ||01 00 00 00 00 D0 67 40 - Distance 1-2 | ||
|- | |- | ||
|0x0F0E ||03 ||01 ||48 E1 7A 14 AE 87 6E 40 - | |0x0F0E ||03 ||01 ||48 E1 7A 14 AE 87 6E 40 - Distance 1-3 | ||
|- | |- | ||
|0x110E ||01 ||01 ||00 | |0x110E ||01 ||01 ||00 | ||
Line 156: | Line 156: | ||
|0x020F ||02 ||01 ||00 00 | |0x020F ||02 ||01 ||00 00 | ||
|- | |- | ||
|0x030F ||04 ||01 ||66 66 66 66 66 66 29 40 - | |0x030F ||04 ||01 ||66 66 66 66 66 66 29 40 - Grid Spacing | ||
|- | |- | ||
|0x040F ||01 ||01 ||01 | |0x040F ||01 ||01 ||01 |
Revision as of 19:04, 4 November 2009
The GSD binary file format
This is my first try to reverse engineer a binary file format. If you like, you could add your thoughts! By comparison between different files with the extention .gsd i try to see what data is stored where. It has some parts in ansi-text and the most parts are just binary numbers of different length. As identification, the file starts with the text "GRAPHTEC PRT&CUT". The next line at offset 0000:0010 starts with binary numbers "03 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00" (I don't know if they make any sense there).
- From offset 0000:0080 to offset 0000:00cf is unknown binary data.
- From offset 0000:00d3 to offset 0000:00de is binary data, which is exactly repeated from offset 0000:00fb to 0000:0107. It starts with the hex numbers 40 6a 40 which seems to be a marker for file seek. It ends with 40 00 04. Inbetween those bytes is data which funktion is still unknown.
- Every object can have a different color in the 8bit-RGB-color-range. E.g. RGB(254,254,254), but most probably it is only black. RGB(0,0,0).
- The size of the canvas is written in pure ansi text. The value could be "ISO A4" or "Letter".
- The hex value 40 seems to be the delimiter between chunks of data of different length. Hex value ff ff ff semms to be a start delimiter and ff ff ff ff semms to be the end delimiter.
The footer is composed of blocks of data. Each block begins with a 2-byte code indicating the type of data, followed by 1 byte code indicating the datatype and a second 1 byte code indicating how many elements of data are stored.
Header
54 bytes - unknown data
Blocks
The first two bytes of the block provide information on the purpose of the block. The following 2 bytes indicate the type of data and the number of data elements of that type.
Header | Description |
---|---|
00 | 1 byte of data stored in length byte |
01 | 1-byte data chunks |
01 | 1-byte data chunks |
02 | 2-byte data chunks |
03 | 4-byte data chunks |
05 | ASCII data chunks |
Prefix | Type | Length | Data |
---|---|---|---|
0x0108 | 05 | 13 | "Graphtec Craft ROBO" - Optional |
0x0208 | 05 | 13 | "Graphtec Craft ROBO" - Optional |
0x0408 | 05 | 06 | "Letter" - Text Paper Size |
0x0508 | 03 | 02 | 56 54 00 00 24 6D 00 00 - Paper size in 1/2540" units (Little Endian) 4-byte width, 4-byte height |
0x1B08 | 01 | 01 | 00 - Portrait(0) or Landscape(1) |
0x2708 | 01 | 01 | 00 |
0x1A08 | 02 | 01 | 64 00 |
0x0908 | 01 | 01 | 00 |
0x0A08 | 03 | 01 | 00 00 00 00 |
0x0B08 | 03 | 01 | 00 00 00 00 |
0x0C08 | 01 | 01 | 00 |
0x0D08 | 03 | 01 | 00 00 00 00 |
0x2208 | 01 | 01 | 00 |
0x2008 | 01 | 01 | 00 |
0x2108 | 02 | 01 | 00 00 |
0x2308 | 02 | 01 | 01 00 |
0x2408 | 03 | 01 | 6F 08 00 00 |
0x2508 | 03 | 01 | EA 0A 00 00 |
0x2608 | 02 | 01 | 01 00 |
0x0808 | 02 | 01 | 00 00 |
0x0E08 | 01 | 01 | 00 |
0x0F08 | 01 | 01 | 01 |
0x1008 | 03 | 01 | 00 00 00 00 |
0x1E08 | 01 | 01 | 01 |
0x1F08 | 01 | 01 | 01 |
0x1108 | 01 | 01 | 00 |
0x1C08 | 03 | 01 | 00 00 00 00 |
0x1D08 | 03 | 01 | 00 00 00 00 |
0x1408 | 03 | 01 | 00 00 00 00 |
0x0306 | 00 | 00 | |
0x0009 | 00 | 09 | |
0x0109 | 01 | 01 | 00 |
0x0209 | 01 | 01 | 05 |
0x0309 | 01 | 01 | 05 |
0x0409 | 01 | 01 | 00 |
0x0406 | 00 | 00 | |
0x000A | 00 | 0A | |
0x010A | 03 | 01 | 00 00 00 00 |
0x020A | 00 | 00 | |
0x000C | 00 | 01 | |
0x010C | 03 | 01 | 00 00 00 00 |
0x0506 | 00 | 00 | |
0x000E | 00 | 0A | |
0x010E | 01 | 01 | 01 - Show Registration Marks |
0x020E | 02 | 01 | 01 00 |
0x030E | 02 | 01 | 01 00 |
0x0A0E | 04 | 01 | CD CC CC CC CC 0C 33 40 - Registration Mark Size |
0x0B0E | 02 | 01 | A8 C6 4B 37 89 41 E0 3F - Registration Mark Thickness |
0x0C0E | 03 | 01 | 66 66 66 66 66 66 29 40 - Origin X |
0x0D0E | 03 | 01 | 52 B8 1E 85 EB 51 24 40 - Origin Y |
0x0E0E | 03 | 01 | 01 00 00 00 00 D0 67 40 - Distance 1-2 |
0x0F0E | 03 | 01 | 48 E1 7A 14 AE 87 6E 40 - Distance 1-3 |
0x110E | 01 | 01 | 00 |
0x0606 | 00 | 00 | |
0x000F | 00 | 04 | |
0x010F | 01 | 01 | 00 |
0x020F | 02 | 01 | 00 00 |
0x030F | 04 | 01 | 66 66 66 66 66 66 29 40 - Grid Spacing |
0x040F | 01 | 01 | 01 |
0x0010 | 03 | 01 | 00 00 00 00 - End of file? |