2016-08-21 6 views
0

Я хочу, чтобы fuzzer был пухлым, но не сломал сам файл. Я имею в виду, я хочу случайным образом fuzz файл, но я хочу, чтобы иметь возможность открыть его и проверить его после (я не хочу поврежденный файл).Как fuzz и сохранить файл

Возьмите zzuf, например, когда я использую его для fuzz mp3 или png-файла, fuzzed-файл больше не открывается. Поэтому я хочу знать, как я могу заглушить содержимое и не разорвать файл.

У меня есть ощущение, что это связано с опцией -b, которая говорит, какие байты для пуха. Но скажу, что я пытаюсь использовать zzuf -b 8- для файла png для заголовка презерватора, он все равно не работает. Я не использую это правильно?

UPDATE

Я попытался сделать это для MP3, WAV, PNG, JPG и mp4 много много раз, и не один раз там открываемый файл. Итак, фузцер буквально «ломает» файл?

+0

Непонятно, что вы на самом деле пытаетесь выполнить. Что вы подразумеваете под словом «fuzz the contents»? Какова конечная цель возиться с изображениями или аудиоданными (но не с заголовками)? –

+0

Я хочу «увидеть» fuzzed изображение или музыкальный файл. Если это испортит заголовки, разве это не означает, что wlll поврежден, и я больше не могу его открывать? По крайней мере, это то, что происходит со мной сейчас. –

ответ

0

Вы можете найти, где заголовки PNG и области данных имеют такой инструмент, как hachoir, но это не спасет вас, потому что проблемы здесь нет.

Проблема заключается не только в заголовках, так как вы имеете дело со сжатым форматом (PNG), то область данных не является немым растровым изображением, где биты могут быть изменены и пусть файл будет действительным, форматным.

Сжатые данные содержат какие-то «инструкции», которые алгоритм декомпрессора должен обрабатывать для восстановления распакованных данных. В некотором смысле сжатый формат данных является своего рода двоичным языком, специфичным для домена, который декомпрессор анализирует и интерпретирует.

Принимая действительную программу на этом языке (действительный файл PNG с действующей областью сжатых данных) и случайные биты с чередованием, можно получить другую действующую программу (другой действующий PNG) в соответствии с этим конкретным языком или нет.

Например, наивный RLE algorithm создает последовательность {байтов, количество входов} байтов. Измените один бит в байте «количество экземпляров», и внезапно распакованные данные имеют другое количество байтов, чем ожидаемое число width * height * depth, поэтому изображение следует разумно считать поврежденным.

Для положительного окончания, если программа отказывается открывать fuzzed PNG без сбоев, изнуряя ресурсы CPU/памяти или форматируя ваш жесткий диск, программа просто ведет себя правильно, что хорошо (но помните, любая ошибка не означает, что нет, это означает, что вы их не нашли).

Если вы действительно хотите заглушить данные изображения и ничего больше, вам нужен фюзер, который работает с распакованными данными. Я не знаю, существует ли он, но тогда он должен полностью знать о форматах, которые вы хотите использовать (PNG, MP3 и т. Д.), Он не может быть универсальным двоичным fuzzer.

+0

Спасибо, я думаю, что понимаю, что вы говорите. Поэтому, когда я fuzz говорю png, я не могу сказать, могу ли я его открыть или будет ли он впоследствии поврежден, потому что он сжат. Это то же самое, что и для музыкальных файлов, таких как mp3 или файлы изображений, такие как jpg, bmp и т. Д.? или есть способ пухнуть и все-таки позволить мне открыть его потом? –