是否有一个Linux的工具,在二进制文件中find一个以hex表示的位序列,无论这些位在文件中是如何alignment的?
例如:我想在一个二进制文件中find两个字节长的序列f2 40
。 使用hd
和grep
很容易find完美alignment的表示f2 40
。 但我也想find01 e4 80
, d3 e4 81
或ff e4 80
(其中包括f2 40
向左移一位)。
有趣的任务!
这是一个简单的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
do)。 或者,您可以在C ++中进行匹配。