用于检测端口号的 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 之间的数字,周围没有任何数字或字母。
所以我一直在尝试构建一个可以检测端口号 (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 之间的数字,周围没有任何数字或字母。