我想检查文件内部是否与二进制模式匹配。
为此,我正在使用蛤蜊签名数据库
Trojan.Bancos-166:1:*:3d415d736715ab5ee347238cacac61c7123fe35427224d25253c7b035558baf19e54e8d1a82742d6a7b37afc6d91015f751de1102d0a31e66ec33b74034b1ab471cc1381884dfdf0bb3e4233bd075fef235f342302ffd72ecabfa5aedf1b3dc99b3348346db4d9001026aef44c592fee61493f7262ad2bd1bce8a7ce60d81022533f6473ae184935f25cf6cc07c3aebfdf70a5a09139
我对此进行编码以检索十六进制字符串表示签名
signature=$(echo "$line" |awk -F':' '{ print $4 }')
此外,我将十六进制字符串更改为二进制
printf -v variable $(sed 's/(..)/\x1/g;' <<< "$signature")
直到这里 它完美运行。
最后,我想检查我的文件(*$raw_file_path*)是否与我的二进制模式(现在为$variable)我试试这个
test_var=$(grep -qU "$variable" "$raw_file_path")
或
test_var=$(grep -qU --regexp="$variable" "$raw_file_path")
我不知道为什么它不起作用,Grep 不匹配任何东西.有时还会出现一些错误:
grep:尾随反斜杠
grep:无效的正则表达式
我知道它处理模式匹配问题。在我的测试中,我不想使用正则表达式。
如果您有任何想法或其他 bash 工具。谢谢。
您当前正在使用--quiet
选项进行grep
,方法是在 -qU
中指定 q
。这可以防止grep
打印任何内容到stdout
,因此不会保存到test_var
。
将代码更改为:
test_var=$(grep -UE "$variable" "$raw_file_path")
首先可以避免额外的子外壳:
#!/bin/bash
signature="Trojan.Bancos-166:1:*:3d415d736715ab5ee347238cacac61c7123fe35427224d25253c7b035558baf19e54e8d1a82742d6a7b37afc6d91015f751de1102d0a31e66ec33b74034b1ab471cc1381884dfdf0bb3e4233bd075fef235f342302ffd72ecabfa5aedf1b3dc99b3348346db4d9001026aef44c592fee61493f7262ad2bd1bce8a7ce60d81022533f6473ae184935f25cf6cc07c3aebfdf70a5a09139"
variable=$(echo "${signature//*:/}" | sed 's/(..)/\x1/g;')
只需要确认匹配:
if grep -qU "$variable" "$raw_file_path"; then
# matches
fi
或者需要结果进行进一步处理:
test_var=$(grep -U "$variable" "$raw_file_path")
# contents of match in test_var
返回到变量时,greps -q
选择抑制标准输出
编辑
测试工作示例
> signature="Trojan.Bancos-166:1:All_text before-the last : should be trimed:3d415d736715ab5ee347238cacac61c7123fe35427224d25253c7b035558baf19e54e8d1a82742d6a7b37afc6d91015f751de1102d0a31e66ec33b74034b1ab471cc1381884dfdf0bb3e4233bd075fef235f342302ffd72ecabfa5aedf1b3dc99b3348346db4d9001026aef44c592fee61493f7262ad2bd1bce8a7ce60d81022533f6473ae184935f25cf6cc07c3aebfdf70a5a09139"
> hex_string=$( echo "${signature//*:/}" | sed 's/(..)/\x1/g;' )
> echo "$hex_string"
x3dx41x5dx73x67x15xabx5exe3x47x23x8cxacxacx61xc7x12x3fxe3x54x27x22x4dx25x25x3cx7bx03x55x58xbaxf1x9ex54xe8xd1xa8x27x42xd6xa7xb3x7axfcx6dx91x01x5fx75x1dxe1x10x2dx0ax31xe6x6exc3x3bx74x03x4bx1axb4x71xccx13x81x88x4dxfdxf0xbbx3ex42x33xbdx07x5fxefx23x5fx34x23x02xffxd7x2excaxbfxa5xaexdfx1bx3dxc9x9bx33x48x34x6dxb4xd9x00x10x26xaexf4x4cx59x2fxeex61x49x3fx72x62xadx2bxd1xbcxe8xa7xcex60xd8x10x22x53x3fx64x73xaex18x49x35xf2x5cxf6xccx07xc3xaexbfxdfx70xa5xa0x91x39