我正在尝试在 Apache 日志文件中搜索与特定漏洞扫描相关的特定条目。我需要将单独文件中的字符串与博客中的 URI 内容进行匹配。我试图找到的一些字符串包含重复的特殊字符,如“?”。
例如,我需要能够匹配只包含字符串 '????????' 的攻击 但我不想在字符串'??????????????????'上收到警报 因为每次攻击都与特定的攻击 ID 号相关联。因此,使用:
if attack_string in log_file_line:
alert_me()
...不管用。因此,我决定将字符串放入正则表达式:
if re.findall(r'\%s' % re.escape(attack_string),log_file_line):
alert_me()
...这也不起作用,因为任何包含字符串 '????????' 的日志文件行 即使有超过 8 个 '?' 也匹配 在日志文件行中。
然后我尝试向正则表达式添加边界:
if re.findall(r'\\B\%s\\B' % re.escape(attack_string),log_file_line):
alert_me()
...在这两种情况下都停止了匹配。我需要能够动态分配我正在寻找的字符串,但我不想只匹配包含该字符串的任何行。我怎样才能做到这一点?