假设我生成了以下二进制文件:
# generate file:
python -c 'import sys;[sys.stdout.write(chr(i)) for i in (0,0,0,0,2,4,6,8,0,1,3,0,5,20)]' > mydata.bin
# get file size in bytes
stat -c '%s' mydata.bin
# 14
Run Code Online (Sandbox Code Playgroud)
并说,我想0x00使用类似grep的语法找到所有零()的位置.
到目前为止,我能做的最好的事情是:
$ hexdump -v -e "1/1 \" %02x\n\"" mydata.bin | grep -n '00'
1: 00
2: 00
3: 00
4: 00
9: 00
12: 00
Run Code Online (Sandbox Code Playgroud)
但是,这会隐式地将原始二进制文件中的每个字节转换为多字节ASCII表示,并在其上grep运行; 不完全是优化的主要例子:)
是否有类似grepLinux 的二进制文件?也可能是支持正则表达式语法的东西,也支持字节"字符" - 也就是说,我可以a(\x00*)b在'a'之间编写类似' '并匹配'零或更多'字节0的出现'(' 97)和'b'(98)?
编辑:上下文是我正在研究一个驱动程序,我捕获8位数据; 数据中出现问题,可能是千字节到兆字节,我想检查特定的签名及其出现的位置.(到目前为止,我正在使用千字节片段,所以优化并不重要 - 但如果我开始在兆字节长的捕获中得到一些错误,我需要分析那些,我的猜测是我想要更优化的东西:).特别是,我想要一些东西,我可以"grep"一个字节作为一个字符 - hexdump迫使我每个字节搜索字符串)
EDIT2:同样的问题,不同的论坛:) 通过二进制文件grepping一个字节序列 …