BASH:将字符串内的十六进制表示形式转换为二进制等效形式



我想在二进制文件内部检查它是否与二进制模式匹配。

为此,我正在使用蛤蜊签名数据库

Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f

我对此进行编码以检索十六进制签名字符串

signature=$(echo "$line" |awk -F':' '{ print $4 }')

此外,我想将十六进制字符串更改为二进制

tmp=$(echo -n $signature | sed 's/([0-9A-F]{2})/\\\x1/gI' | xargs print)

最后,我想检查我的文件(*$raw_file_path*)是否与我的二进制模式(现在在$tmp

test_var=$(cat $raw_file_path | grep -U -P "$tmp")

我不知道为什么它不起作用。

如果你有任何想法。

谢谢。

这个怎么样?

line=Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f
printf $(sed 's/.*://;s/(..)/\x1/g' <<< "$line")

这会产生:

<object type="////////////

您可以将 bin 输出放在变量中,以便:

printf -v variable $(sed 's/.*://;s/(..)/\x1/g' <<< "$line")

现在,请避免无用地使用cat

grep -U "$variable" "$raw_file_path"

就够了。如果你想测试grep的结果(并要求grep保持安静):

if grep -qU "$variable" "$raw_file_path"; then
    echo "Pattern found"
else
    echo "Pattern not found"
fi

相关内容

  • 没有找到相关文章

最新更新