[英]BASH: Convert hex representation inside a string to binary equivalent
我想檢查二進制文件中是否匹配二進制模式。
為此,我正在使用clamAV簽名數據庫
Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f
我對此進行編碼以檢索十六進制簽名字符串
signature=$(echo "$line" |awk -F':' '{ print $4 }')
此外,我想將十六進制字符串更改為二進制
tmp=$(echo -n $signature | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/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/\(..\)/\\x\1/g' <<< "$line")
產生:
<object type="////////////
您可以將bin輸出放入變量中,這樣:
printf -v variable $(sed 's/.*://;s/\(..\)/\\x\1/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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.