【问题标题】:Yara regex for detecting port numbers not working用于检测端口号的 Yara 正则表达式不起作用
【发布时间】:2020-06-09 05:38:30
【问题描述】:

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

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

【问题讨论】:

    标签: regex port yara


    【解决方案1】:

    ^$ 替换为\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 之间的数字,而周围没有任何数字或字母。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 当我把这些字符放在开头和开头时,它没有检测到我给它的任何端口号(例如 4444)。请注意,我在 yara 规则中使用它。当我从开头和开头删除字符时,它只会将我输入的每个数字视为端口号。我的正则表达式:/([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 之间的数字,周围没有任何数字或字母。
      • 这是您的建议吗? /\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/
      • @MarkusJarderot 您能否将其发布为答案,以便我接受。再次感谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多