用于检测端口号的 Yara 正则表达式不起作用

Yara regex for detecting port numbers not working

所以我一直在尝试构建一个可以检测端口号 (0-65535) 的正则表达式。 我试过下面 post 中给出的那个:

Regex to validate port number

这个:

^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$

上面的在 https://regex101.com/.

上测试时似乎工作正常

但是当我尝试构建一个 yara 规则以使用与上述相同的模式检测此问题时,即使上述模式具有文档中所述的所有允许字符,它也不起作用:

https://yara.readthedocs.io/en/stable/writingrules.html#regular-expressions

您的正则表达式具有起点 (^) 和终点 ($) 检查。 因此,只有当您输入的是端口号时,它才会起作用。 如果您想匹配字符串中的端口号部分,这将不起作用。 要对字符串进行此操作,请从正则表达式的起点和终点删除 ^ 和 $。

^$ 替换为 \b

\b([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\b

\b是一个单词边界;单词字符 ([A-Za-z0-9_]) 和非单词字符(任何其他)之间的边界。该模式将匹配 0 到 65535 之间的数字,周围没有任何数字或字母。