当我分析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
Run Code Online (Sandbox Code Playgroud)
PS:请注意,\x80-t
标准方式甚至不是有效范围,因为字符t是\ x74.
这可能引用不同的字符编码,其中t
大于x80
且x80
无法正常寻址。
以 EBCDIC 扫描码为例(参考此处)。
\n\n(但我也不知道为什么有人想这样写)
\n\n对于 ASCII 我有一个疯狂的猜测:如果-t
意味着“直到下一个标记 -1”或者如果放在行的最后“直到允许的字符结尾”,第二个查询将说明这一点:
To:(not a newline, more than one character)(not a newline)\n
Run Code Online (Sandbox Code Playgroud)\n\n所以基本上这个表达的[\\x01-t\\x0B\\x0C\\x0E-t\\x80-t]
意思是[^\\r\\n]
。
如果应用该方法,则(.\xc3\x87-t]|...[\xc3\x87-t])
可以寻址任何大于 7 位 ASCII 的字符,这也可以寻址所有 unicode(除了前 127 个字符之外)。
(话虽这么说,我仍然不知道为什么有人应该这样写,但至少这是一个除了“这是一个错误”之外的连贯的解释)
\n\n也许有帮助:如果写出 \\xYY?\nASCII,您发布的 rexexes 意味着什么:
\n\n/=\\NULL\\DEVICE_CONTROL_2\\NULL\\.{10}\\(.\xc3\x87-t]|...[\xc3\x87-t])/smiR\n/^To\\:[^\\r\\n]+[\\START_OF_HEADING-t\\VERTICALTAB\\FORMFEED\\SHIFTOUT\\\xc3\x87-t]/smi\n
Run Code Online (Sandbox Code Playgroud)\n\n照顾\\0x12
别名Device control 2
可能会有所帮助,因为它不会显示在文本中,但可能会显示在网络流量中。
归档时间: |
|
查看次数: |
936 次 |
最近记录: |