Linux BASH:将字符串中的十六进制表示形式转换为等价的二进制表示形式
我想检查二进制文件内部是否匹配二进制模式 为此,我使用clamAV签名数据库Linux BASH:将字符串中的十六进制表示形式转换为等价的二进制表示形式,linux,bash,binary,hex,Linux,Bash,Binary,Hex,我想检查二进制文件内部是否匹配二进制模式 为此,我使用clamAV签名数据库 Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f 我对其进行编码以检索十六进制签名字符串 signature=$(echo "$line" |awk -F':' '{ print $4 }') 此外,我想将十六进制字符串更改为二进制 tmp=$(echo -n $signature | sed 's/\(
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\u file\u path*)是否匹配我的二进制模式(现在为$tmp)
我不知道为什么它不起作用
如果你知道的话
谢谢。这个怎么样
line=Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f
printf $(sed 's/.*://;s/\(..\)/\\x\1/g' <<< "$line")
够了。如果您想测试grep
的结果(并要求grep
保持安静):
这个怎么样
line=Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f
printf $(sed 's/.*://;s/\(..\)/\\x\1/g' <<< "$line")
够了。如果您想测试grep
的结果(并要求grep
保持安静):
grep和unix工具通常不用于读取二进制文件,因为它们包含\000(空)字符作为其正常数据的一部分。Unix工具依赖于读取数据行,这些数据行用行尾字符分隔(\n,或Windows文件系统中的\r\n)。空字符使此基本处理模型无效。您可以找到一个组合选项来
od
,它可以让您随心所欲。Good luck.grep和unix工具通常不用于读取二进制文件,因为它们包含\000(null)字符作为其正常数据的一部分。Unix工具依赖于读取数据行,这些数据行用行尾字符分隔(\n,或Windows文件系统中的\r\n)。空字符使此基本处理模型无效。您可以找到一个组合选项来od
,它可以让您随心所欲。祝你好运。熟练使用printf
和sed
:+1!(备注:您可以使用bash variable motor并编写:$(sed's/\(..\)/\\x\1/g;“@F.Hauri您对参数扩展的看法是正确的。尽管我有这样一个习惯,即当我开始分叉一个sed
,我会尽可能多地获取它(在合理可能的情况下)此外,我的基准测试证明,在这种情况下,100%sed
方法比sed
参数扩展方法:-)
快近1%(!)。关于printf
和数组,我知道没有任何选项可以告诉printf
来构造数组(例如,使用-read
内置的-a
选项)。谢谢!我将使用signature=$(echo“$line”| awk-F':“{print$4}”)printf-v变量$(sed's/(..)/\\x\1/g;”’到目前为止,我使用sed
构建bash数组,甚至关联数组,而不是fork to/fromeval
:`declare-a字段;eval“现场现场=(“$(df-PlkT-PlkT/作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为printf
和sed
的良好用法:+1!(备注:您可以使用bash variable motor并编写:$(sed's/\(..\)/\\x\1/g;“@F.Hauri您对参数扩展的看法是正确的。尽管我有这样一个习惯,即当我开始分叉一个sed
,我会尽可能多地获取它(在合理可能的情况下)此外,我的基准测试证明,在这种情况下,100%sed
方法比sed
参数扩展方法:-)
快近1%(!)。关于printf
和数组,我知道没有任何选项可以告诉printf
来构造数组(例如,使用read
内置的-a
选项)。谢谢!我将使用signature=$(echo“$line”| awk-F':“{print$4}”)printf-v变量$(sed's/(..)/\\x\1/g;”’到目前为止,我使用sed
来构建bash数组,甚至是关联数组,而不是fork to/fromeval
:`declare-a fields;eval“在本次现场,除了除了上述两个地区外,任何一方都将作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为作为uj;}<
<object type="////////////
printf -v variable $(sed 's/.*://;s/\(..\)/\\x\1/g' <<< "$line")
grep -U "$variable" "$raw_file_path"
if grep -qU "$variable" "$raw_file_path"; then
echo "Pattern found"
else
echo "Pattern not found"
fi