I'm looking or a tool that will allow me to textually describe data/packet structures for the purposes of creating visual representations of the structures. If it's capable of expressing constraints or assertations that would be even better. Examples of constraints/assertions:<p>- This field should always be n bits into the start of the structure
- The size of this structure shouldn't exceed B bits
- This field should never be less than s bits<p>The capability to output image formats directly is preferred, but I'm not opposed to having to script it and tie it up to an image generation library.<p>I'd prefer a CLI tool so the flow is all on my local machine.
Checkout kaitai<p><a href="https://doc.kaitai.io/" rel="nofollow">https://doc.kaitai.io/</a><p>Its not for generating visual structure, but just defining the structure with the constraints like you mentioned
In the network security space there's pcap-ng and yara that's pretty common as a network filter ruleset generator.<p>There's also a lof of visual IDEs for the creation of yara rules, which tend to break it down in a flow-based graph so that the logical conditions are easier to understand.<p>Yara is pretty flexible in what you can do with it, a lot of anti malware tools use it for detection, as well as more modern hex editors like ImHex.<p>Older-generation tech used to use snort and its rule format, especially in the Enterprise space it's (sadly) still common.
Protocol exists but is unmaintained (I think) <a href="https://www.luismg.com/protocol/" rel="nofollow">https://www.luismg.com/protocol/</a><p>Wavedrom and ascii wave is for tming <a href="https://github.com/Wren6991/asciiwave">https://github.com/Wren6991/asciiwave</a>