ログを調査するために、ワークフローで最初に悪用された脆弱性を見つけようとしました。
パターンは複数行にあります。
パターンは次のとおりです。
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
問題は
AAAAAAAAA
または
BBBBBBBBB
または
CCCCCCCCC
脆弱性を表示せずにログのどこにでも個別に見つけることができます。これらの正確な順序のパターンが役立ちます。
例えば
grep -Ei "AAAAAAAAA|BBBBBBBBB|CCCCCCCCC" logfile
個別に表示されるすべての行がAAAAAAAAA BBBBBBBBB CCCCCCCCC
そこにあるので、私には役立ちません。
この問題をどのように解決できますか?
ベストアンサー1
Pythonでは、次のことができます。 (ログファイルがAAAAAAAAA、BBBBBBBBB、またはCCCCCCCCCCのいずれかの行に散在していても、目的の一致を取得できることを示すために、例に少し追加しました。)
以下はfind_log_vulns.pyの内容です。
#! /usr/bin/python3
import re
test_string = """1234324
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
absdfjv4er4
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
123466666
AAAAAAAAA
ghrhvhhhfh
BBBBBBBBB
fjwjefjsjfjwjf
CCCCCCCCC
24wfsgggg
AAAAAAAAA
BBBBBBBBB
CCCCCCCCC
zzzz"""
matches = re.findall('AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n', test_string, re.MULTILINE)
print(matches)
上記の実行結果は次のとおりです。
$ ./find_log_vulns.py
['AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n', 'AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n', 'AAAAAAAAA\nBBBBBBBBB\nCCCCCCCCC\n']
上記のように、各一致はリストの要素として返されます。