バイナリ パターンに一致するかどうか、ファイル内をチェックしたい。
そのために、clamAV署名データベースを使用しています
Trojan.Bancos-166:1:*:3d415d736715ab5ee347238cacac61c7123fe35427224d25253c7b035558baf19e54e8d1a82742d6a7b37afc6d91015f751de1102d0a31e66ec33b74034b1ab471cc1381884dfdf0bb3e4233bd075fef235f342302ffd72ecabfa5aedf1b3dc99b3348346db4d9001026aef44c592fee61493f7262ad2bd1bce8a7ce60d81022533f6473ae184935f25cf6cc07c3aebfdf70a5a09139
これをコーディングして、16 進文字列表現の署名を取得します
signature=$(echo "$line" |awk -F':' '{ print $4 }')
さらに、16進文字列を2進文字列に変更します
printf -v variable $(sed 's/\(..\)/\\x\1/g;' <<< "$signature")
ここまでは問題なく動作します。
最後に、ファイル ( *$raw_file_path* ) がバイナリ パターン (現在は $variable) と一致するかどうかを確認したいと思います。
test_var=$(grep -qU "$variable" "$raw_file_path")
また
test_var=$(grep -qU --regexp="$variable" "$raw_file_path")
なぜ機能しないのかわかりません.Grepは何にも一致しません. そして時々いくつかのエラー:
grep: 末尾のバックスラッシュ
grep: 正規表現が無効です
パターンマッチングの問題を扱っていることは知っています。私のテストでは、正規表現を使用したくありません。
アイデアがある場合、または他の bash ツール。ありがとう。