是否有Linux工具可以在二进制文件中找到以十六进制表示形式给出的位序列,无论这些位在文件中如何对齐?
示例:我想在二进制文件中找到两个字节长的序列f2 40
。使用f2 40
和hd
可以轻松找到完美对齐的代表grep
。但我也希望找到01 e4 80
,d3 e4 81
或ff e4 80
(其中包括f2 40
左移一位)。
答案 0 :(得分:3)
有趣的任务!
这是一个简单的1行C ++过滤器,您可以使用:
#include <bitset>
#include <iostream>
int main()
{
for (char ch; std::cin.get(ch); std::cout << std::bitset<8>(ch));
}
像这样使用:
cat file.bin | binfilter | grep '1111001001000000'
您可能希望改进过滤器以打印地址标识(例如xxd
或od
执行八进制/ dex转储。或者,您可以在C ++中进行匹配。