Hexagex ------- Hexagexes are regexes using hexadecimals and bits for matching binary data. The syntax is mostly the same as in the regex crate, but the literals have been replaced: * `0`-`9`, `a`-`f`: 4-bits sequences interpreted as base 16 numbers * `.`: 4-bit wildcard * `O`, `I`: 1-bit value corresponding to 0 and 1 * `_`: 1-bit wildcard * `^`, `$`: these match the start and end of the text, not of the line * `\t`: this is an escape to interprete the content immediately after it into a non-hexagex regular regex A hexagex binary can be compiled with `cargo build` that allows one to find matches with `hexagex [exp] [file]`. Examples ======== * `01020304`: match the bytes [1, 2, 3, 4] * `([2-7].){5,}00`: match bytes from `0x20` to `0x7f` of length at least 5 with a null terminator * `I_I_I_I_|_O_O_O_O`: match bytes that have all even bits set or odd bits unset * `[0-69CEF][6-F]|[0EF]0|[23EF]2|[0-37-F]3|[018ACDEF]4|D[67]|(.1|[78AD]I___|[0-69CEF]5|[2-79]4|[4-8A-D][02]|[78A][67]|92)..|(B[4-F]|[01]2|[1239]0|[456]3|[78D]5)....`: match 8051 instructions