regex - Snort 规则正则表达式匹配

标签 regex pcre snort

每当有人访问类似结构的 URL 时,我想在 snort 中生成一个事件

site/year2015.pdf
site/year2014.pdf
:
:
site/year2000.pdf

我考虑使用 PERC,而不是编写多个 snort 规则,因为多年来将添加更多 URL。规则写成。

alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"(/.*site\/year\d\d\d\d\.pdf)/i"; sid: 100003; rev:3;)

我尝试了许多不同的方法在上面的规则中插入正则表达式,但它总是无法解析它。正则表达式做得很好,我想让它做 here .整个事情开始失败,因为它没有开始导致规则未被解析。

收到的错误是

Error: /etc/snort/rules/assignment.rules Line 3 => unable to parse pcre regex "(/.*site\/year\d\d\d\d\.pdf)/i"
Fatal Error Quitting..

最佳答案

(有点疯狂)语法是 pcre:"/regex/flags"。无论如何,你想放在那里的括号都是多余的。您还需要转义作为实际正则表达式一部分的任何斜线,like in the example .

alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"/.*site\/year\d\d\d\d.pdf/i"; sid: 100003; rev:3;)

...尽管您可能应该删除多余的通配符 .* 并在末尾添加一个 anchor $ ,并将点转义以使其成为文字。您可能还想使用量词来精确指定一个数字的四次重复。

alert tcp any any -> any any(msg:"PDF is being downloaded"; pcre:"/site\/year\d{4}\.pdf$/i"; sid: 100003; rev:3;)

您确定要让 /i 标志使匹配不区分大小写吗?

关于regex - Snort 规则正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721456/

相关文章:

php - 正则表达式允许字母数字和点

正则表达式查找括号和文本

java - 使用空格和逗号分隔的分数拆分团队名称

.net - 将PCRE递归正则表达式模式转换为.NET平衡组定义

pcre - snort 的 pcre 规则选项中的/R 是什么意思?

javascript - 从 html greasemonkey 中提取信息

c++ - 用于使用 ostream 左移语法替换 printf 样式调用的正则表达式

regex - 为什么递归正则表达式不是正则表达式?

hadoop - 如何从日志文件查看/删除控制字符

bluetooth-lowenergy - 分析蓝牙低功耗流量