Поиск двоичного фрагмента в файле - PullRequest
2 голосов
/ 13 мая 2009

У меня есть кусок довольно случайных двоичных данных. Я хочу найти, где этот фрагмент существует в файле, сколько раз он встречается и с каким байтом (или сектором) смещается. Есть идеи как это сделать?

Спасибо, Джастин

Ответы [ 3 ]

3 голосов
/ 13 мая 2009

Я считаю, что ни одна из существующих команд не делает именно то, что вы хотите. Если ваш кусок маленький и ваш файл помещается в память, вы легко можете написать свой собственный. Просто просмотрите содержимое файла, применяя strncmp в каждой позиции.

Если ваш файл очень большой, но все еще умещается в вашем адресном пространстве, вы можете сделать то же самое с mmap.

Если ваш чанк не маленький, вам, вероятно, будет лучше использовать алгоритм Бойера-Мура вместо strncmp. Это все еще не слишком много работы, так как уже есть реализации, которые вы можете использовать.

2 голосов
/ 13 мая 2009

Я бы порекомендовал X-Ways WinHex для этого. Я часто использую его для поиска произвольных данных на жестких дисках или в больших файлах образов дисков.

0 голосов
/ 13 мая 2009

Вы можете сделать это с помощью grep

Это выводит строки со смещением байта

grep --text --byte-offset 'ls' /bin/ls

Добавьте параметр --count, чтобы получить общее количество совпадений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...