在解析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/