Другое дело — посмотреть на некоторые из распространенных методов сжатия, особенно на zip и gzip, и изучить их «сигнатуры». Большинство этих форматов являются «самоидентифицируемыми», поэтому, когда они начинают распаковывать, они могут быстро проверить правильность того, над чем они работают, в формате, который они понимают.
За исключением шифрования, формат архивного файла в основном является своего рода механизмом индексации (каталог или сортировка) и способом расположения этих элементов внутри архива с помощью указателей в индексе.
При повсеместном распространении стандартных алгоритмов сжатия в основном нужно найти, где начинаются эти блоки, и попытаться найти индекс или оглавление.
Некоторые из них будут иметь весь индекс в одном месте (например, файловая система), другие будут просто предварять каждый элемент в архиве своей идентификационной информацией. Но в конце концов где-то есть информация о смещениях от одного блока к другому, есть информация о типах данных (например, если они хранят файлы GIF, у GIF тоже есть подпись) и т.д.
Это шаблоны, которые вы пытаетесь найти в файле.
Было бы неплохо, если бы вы каким-то образом могли получить две версии данных, используя один и тот же формат. Например, в игре вы можете получить начальную версию с компакт-диска и более новую версию с исправлениями. Они действительно могут выделить информацию, которую вы ищете.
person
Will Hartung
schedule
17.11.2008