Difference between revisions of "GSD"
(→Footer) |
|||
Line 105: | Line 105: | ||
!Length !!Description | !Length !!Description | ||
|- | |- | ||
| | |0x34 bytes ||unknown | ||
|- | |||
|4 bytes ||unknown (00 0E 00 0A) | |||
|- | |||
|5 bytes ||unknown (01 0E 01 01 01) | |||
|- | |||
|6 bytes ||unknown (02 0E 02 01 01 00) | |||
|- | |||
|5 bytes ||unknown (03 0E 02 01 01) | |||
|- | |- | ||
|1 byte ||use registration mark (bool) | |1 byte ||use registration mark (bool) | ||
|- | |- | ||
| | |4 bytes ||unknown (0A 0E 04 01) | ||
|- | |||
|8 bytes ||unknown dimension | |||
|- | |||
|3 bytes ||unknown (0B 0E 02) | |||
|- | |- | ||
|1 byte ||unknown (0x01) | |1 byte ||unknown (0x01) | ||
Line 115: | Line 127: | ||
|8 bytes ||registration mark size | |8 bytes ||registration mark size | ||
|- | |- | ||
|16 bytes ||unknown | |16 bytes ||unknown (0C 0E 03 01) | ||
|- | |- | ||
|8 bytes ||origin X | |8 bytes ||origin X | ||
|- | |- | ||
|4 bytes ||unknown | |4 bytes ||unknown (0D 0E 03 01) | ||
|- | |- | ||
|8 bytes ||origin Y | |8 bytes ||origin Y | ||
|- | |- | ||
|3 bytes ||unknown | |3 bytes ||unknown (0E 0E 03) | ||
|- | |- | ||
|1 byte ||show grid (boolean) | |1 byte ||show grid (boolean) | ||
Line 129: | Line 141: | ||
|8 bytes ||Registration Mark distance 1-2 | |8 bytes ||Registration Mark distance 1-2 | ||
|- | |- | ||
|4 bytes ||unknown | |4 bytes ||unknown (0F 0E 03 01) | ||
|- | |- | ||
|8 bytes ||Registration mark distance 1-3 | |8 bytes ||Registration mark distance 1-3 | ||
|- | |- | ||
| | |5 bytes ||unknown (11 0E 01 01 00) | ||
|- | |||
|4 bytes ||unknown (06 06 00 00) | |||
|- | |||
|4 bytes ||unknown (00 0F 00 04) | |||
|- | |||
|4 bytes ||unknown (01 0F 01 01) | |||
|- | |||
|1 byte ||unknown (00) | |||
|- | |||
|4 bytes ||unknown (02 0F 02 01) | |||
|- | |- | ||
| | |2 bytes ||grid type(0=line, 1=dot) | ||
|- | |- | ||
| | |4 bytes ||unknown (03 0F 04 01) | ||
|- | |- | ||
|8 bytes ||grid size | |8 bytes ||grid size | ||
|- | |- | ||
|4 bytes ||unknown | |4 bytes ||unknown (04 0F 01 01) | ||
|- | |- | ||
|1 byte ||snap to grid(bool) | |1 byte ||snap to grid(bool) | ||
|- | |- | ||
|8 bytes ||unknown | |8 bytes ||unknown (00 10 03 01 00 00 00 00) | ||
|- | |- | ||
|<EOF> | |<EOF> | ||
|} | |} |
Revision as of 17:06, 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 several sections. A header portion, and several blocks of data. These blocks seem to be related to various configuration information, although the exact purpose is unknown. This is followed by a footer section of static length.
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 |
---|---|
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" |
0x0208 | 05 | 13 | "Graphtec Craft ROBO" |
0x0408 | 05 | 06 | "Letter" (or whatever) |
0x0508 | 03 | 02 | 56 54 00 00 24 6D 00 00 (unk) |
0x1B08 | 01 | 01 | 00 |
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 |
Length | Description |
---|---|
0x34 bytes | unknown |
4 bytes | unknown (00 0E 00 0A) |
5 bytes | unknown (01 0E 01 01 01) |
6 bytes | unknown (02 0E 02 01 01 00) |
5 bytes | unknown (03 0E 02 01 01) |
1 byte | use registration mark (bool) |
4 bytes | unknown (0A 0E 04 01) |
8 bytes | unknown dimension |
3 bytes | unknown (0B 0E 02) |
1 byte | unknown (0x01) |
8 bytes | registration mark size |
16 bytes | unknown (0C 0E 03 01) |
8 bytes | origin X |
4 bytes | unknown (0D 0E 03 01) |
8 bytes | origin Y |
3 bytes | unknown (0E 0E 03) |
1 byte | show grid (boolean) |
8 bytes | Registration Mark distance 1-2 |
4 bytes | unknown (0F 0E 03 01) |
8 bytes | Registration mark distance 1-3 |
5 bytes | unknown (11 0E 01 01 00) |
4 bytes | unknown (06 06 00 00) |
4 bytes | unknown (00 0F 00 04) |
4 bytes | unknown (01 0F 01 01) |
1 byte | unknown (00) |
4 bytes | unknown (02 0F 02 01) |
2 bytes | grid type(0=line, 1=dot) |
4 bytes | unknown (03 0F 04 01) |
8 bytes | grid size |
4 bytes | unknown (04 0F 01 01) |
1 byte | snap to grid(bool) |
8 bytes | unknown (00 10 03 01 00 00 00 00) |
<EOF> |