在解析Snort正则表达式集时,我发现了一个非常奇怪的字符类语法,例如[\x80-t][\x01-t\x0B\x0C\x0E-t\x80-t],并且我不知道(真的不知道) -t 是什么意思。我什至不知道这是标准的PCRE还是Snort扩展。

这是一些包含这些字符类的正则表达式:

/\x3d\x00\x12\x00..........(.[\x80-t]|...[\x80-t])/smiR
/^To\x3A[^\r\n]+[\x01-t\x0B\x0C\x0E-t\x80-t]/smi

PS:请注意,按标准方式\x80-t甚至都不是有效范围,因为字符 t \x74

最佳答案

这可能引用了一个不同的字符编码,其中t大于x80,而x80无法正常处理。

以EBCDIC扫描代码为例(请参阅here for a reference)。

(但我也不知道为什么有人会这样写)

对于ASCII,我有一个大胆的猜测:如果-t的意思是“直到下一个标记-1”,或者如果放在最后一行“直到允许的字符的末尾”,则第二个查询将指出:

To:(not a newline, more than one character)(not a newline)

因此,基本上,表达式[\x01-t\x0B\x0C\x0E-t\x80-t]表示[^\r\n]

如果将其应用于(.Ç-t]|...[Ç-t]),它将解决大于7位ASCII的任何字符,也可以解决所有unicode(除了前127个字符之外)。

(话虽如此,我仍然不知道为什么有人应该这样写,但是除了“Its a bug”之外,至少那是一个连贯的解释)

可能有帮助:如果写出\xYY,您发布的rexexes是什么意思?
ASCII:
/=\NULL\DEVICE_CONTROL_2\NULL\.{10}\(.Ç-t]|...[Ç-t])/smiR
/^To\:[^\r\n]+[\START_OF_HEADING-t\VERTICALTAB\FORMFEED\SHIFTOUT\Ç-t]/smi

照顾\0x12 aka Device control 2可能会有所帮助,因为这不会显示在文本中,但可能会显示在网络流量中。

关于regex - Snort/PCRE正则表达式: odd character class syntax,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20546667/

10-11 03:16