Инструмент для поиска шестнадцатеричной последовательности в двоичном файле - PullRequest
2 голосов
/ 23 ноября 2011

Существует ли инструмент Linux, который находит последовательность битов в шестнадцатеричном формате в двоичном файле независимо от того, как эти биты выровнены в файле?

Пример: я хочу найти двухбайтовую последовательность f2 40 в двоичном файле. Идеально выровненное представление f2 40 может быть легко найдено с помощью hd и grep. Но я также хочу найти 01 e4 80, d3 e4 81 или ff e4 80 (которые включают f2 40, сдвинутые на один бит влево).

1 Ответ

3 голосов
/ 23 ноября 2011

Интересное задание!

Вот простой однострочный фильтр 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 для восьмеричных / dex-дампов).Кроме того, вы можете сделать сопоставление в C ++.

...