簡體   English   中英

BASH:將字符串內的十六進制表示形式轉換為等效的二進制形式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM