Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux BASH:将字符串中的十六进制表示形式转换为等价的二进制表示形式_Linux_Bash_Binary_Hex - Fatal编程技术网

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

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/\(

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

为此,我使用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\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/from
eval
:`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/from
eval
:`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