Я пытался весь день заставить это работать.Кто-нибудь знает, как получить grep или что-то подобное, чтобы получить смещения шестнадцатеричных строк в файле?
У меня есть куча hexdumps, которые мне нужно проверить на наличие строк, а затем снова запустить и проверить,значение изменилось.
Я пробовал hexdump и dd, но проблема в том, что это поток, я теряю смещение для файлов.
Кто-то должен был иметь эту проблему и обходной путь,Что я могу сделать?
Чтобы уточнить, у меня есть серия выгруженных областей памяти из GDB.
Я пытаюсь сузить число, отыскивая все места, где хранится число,затем повторяем это и проверяем, хранится ли новое значение в той же ячейке памяти.
Я не могу заставить grep что-либо делать, потому что я ищу шестнадцатеричные значения, поэтому все время, что я пробовал (например, bazillion,грубо говоря) это не даст мне правильного вывода.
Шестнадцатеричные дампы - это просто полные двоичные файлы, паттерны находятся в пределах значений с плавающей запятой при больших значениях, поэтому 8?байты?
Шаблоны не обертывают строки, которые мне известны.Я знаю о том, что он меняет, и я могу сделать тот же процесс и сравнить списки, чтобы увидеть, какие из них совпадают.Шестнадцатеричные дампы обычно заканчиваются (в общей сложности) 100 мегабайтами.
Perl МОЖЕТ быть вариантом, но на данный момент, я бы предположил, что мой недостаток знаний с bash и его инструментами является основной причиной.
Немного сложно объяснить вывод, который я получаю, поскольку я действительно не получаю вывод ..
Я ожидаю (и ожидаю) что-то вроде:
<offset>:<searched value>
Это довольно хороший стандартный вывод, который я обычно получаю с grep -URbFo <searchterm> . > <output>
Проблема в том, что, когда я пытаюсь искать шестнадцатеричные значения, я получаю проблему, если просто не ищу шестнадцатеричные значения, поэтому, если я ищу 00, я получу около миллиона обращений, потому что это всегда пробел, но вместо этого он ищет 00 как текст, так что в шестнадцатеричном, 3030. Любая идея?
Я МОГУ заставить его пройтиhexdump или что-то вроде ссылки, но поскольку он является потоком, он не даст мне смещения и имени файла, в котором он нашел совпадение.
Использование опции grep -b
, похоже, тоже не работает, я попробовал все flАгенты, которые показались мне полезными, но ничего не помогло.
Используя в качестве примера xxd -u /usr/bin/xxd
, я получил бы вывод, который был бы полезен, но я не могу использовать его для поиска ..
0004760: 73CC 6446 161E 266A 3140 5E79 4D37 FDC6 s.dF..&j1@^yM7..
0004770: BF04 0E34 A44E 5BE7 229F 9EEF 5F4F DFFA ...4.N[."..._O..
0004780: FADE 0C01 0000 000C 0000 0000 0000 0000 ................
Хороший вывод, именно то, что я хочу увидеть, но в этой ситуации у меня это просто не работает ..
Вот некоторые вещи, которые я пробовал с момента публикации этого сообщения:
xxd -u /usr/bin/xxd | grep 'DF'
00017b0: 4010 8D05 0DFF FF0A 0300 53E3 0610 A003 @.........S.....
root# grep -ibH "df" /usr/bin/xxd
Binary file /usr/bin/xxd matches
xxd -u /usr/bin/xxd | grep -H 'DF'
(standard input):00017b0: 4010 8D05 0DFF FF0A 0300 53E3 0610 A003 @.........S.....