#binary-data #regex #hex #bits #matching #sequences #literals

bin+lib hexagex

匹配二进制数据与十六进制正则表达式

6 个版本

0.2.3 2024年4月20日
0.2.2 2023年1月31日
0.2.1 2022年7月22日
0.1.1 2022年3月5日
0.1.0 2022年2月9日

#412算法

33 每月下载次数
biodiff 中使用

MIT 许可证

43KB
981

Hexagex

Hexagexes 是使用十六进制和位进行二进制数据匹配的正则表达式。

语法与 regex crate 中的语法基本相同,但已将文字替换

  • 0-9a-f:解释为基16数字的4位序列
  • .:4位通配符
  • OI:对应于0和1的1位值
  • _:1位通配符
  • ^$:这些匹配文本的开始和结束,而不是行的开始和结束
  • \t:这是一个转义符,用于将紧跟其后的内容解释为一个非 hexagex 正则表达式

可以使用 cargo build 编译 hexagex 二进制文件,允许使用 hexagex [exp] [file] 找到匹配项。

示例

  • 01020304:匹配字节数组 [1, 2, 3, 4]
  • ([2-7].){5,}00:匹配长度至少为5的字节,从0x200x7f,并以空终止符结束
  • I_I_I_I_|_O_O_O_O:匹配所有偶数位都设置或奇数位都未设置的字节
  • [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)....:匹配8051指令

依赖项

~2.2–3MB
~54K SLoC