| 7 | | This section will discuss existing tools related to my project, so they can be used for inspiration. |
| | 11 | I am researching existing tools related to my project, so they can be used for inspiration. |
| | 12 | |
| | 13 | === [http://construct.wikispaces.com/ Construct] === |
| | 14 | |
| | 15 | TODO: looks promising. Also look at issues and forks. |
| | 16 | |
| | 17 | === [http://bindata.rubyforge.org/ BinData] === |
| | 18 | |
| | 19 | TODO: looks promising. |
| | 20 | |
| | 21 | === [http://wsgd.free.fr/index.html Wireshark Generic Dissector] === |
| | 22 | |
| | 23 | The length and real value of a field can depend on all previous fields and use |
| | 24 | complex expressions. Structures can contain `if`/`while`/`continue`/`break`/… |
| | 25 | statements. |
| | 26 | |
| | 27 | === Less interesting tools === |
| | 28 | |
| | 29 | [https://www.wireshark.org/ Wireshark] and [http://www.tcpdump.org/ tcpdump]:: |
| | 30 | As the Construct wiki notes, you would expect these developers to have some |
| | 31 | sort of DSL, but they just use C for everything. Wireshark does use ASN.1, |
| | 32 | Diameter, and MIDL for protocols developed with them. |
| | 33 | [http://kde.org/applications/utilities/okteta/ Okteta]:: |
| | 34 | Has an XML format for simple structures, where the length of a field can |
| | 35 | depend on a previous value. Also has an on‐line database of structures, but |
| | 36 | it isn’t very popular—there are only nine submissions! |
| | 37 | [http://ff-extractor.sourceforge.net/ ffe]:: |
| | 38 | Only the simplest structures. |
| | 39 | Other hex editors:: |
| | 40 | [http://beye.sourceforge.net/ Beye], [http://home.gna.org/bless/ Bless], and |
| | 41 | [https://live.gnome.org/Ghex GHex] lack interesting features. |