Что я должен знать, прежде чем копаться в неизвестном архивном файле?
-
08-07-2019 - |
Вопрос
Игра, в которую я играю, хранит все свои данные в файле .DAT. была проведена некоторая работа при проверке файла. Есть также несколько существующих инструментов , но я не уверен насчет их текущее состояние. Я думаю, что было бы интересно самому покопаться в данных, но я никогда не пытался изучить файл, а тем более что-то подобное раньше.
Что я должен знать о проверке формата файла в целях извлечения данных, прежде чем углубиться в это?
РЕДАКТИРОВАТЬ: Я хотел бы получить общие советы, так как изучение форматов файлов кажется интересным. Я хотел бы иметь возможность взять Файл X и узнать, как подойти к проблеме изучения его.
Решение
Другие советы
Сначала создайте резервную копию файла. После того, как вы ограничите количество урона, которое вы можете нанести, просто поэкспериментируйте, как предложил Эд.
Глядя на ваш уровень повторений, я думаю, что базовый учебник по шестнадцатеричным числам, порядку байтов, представлениям для различных типов данных и всему остальному будет излишним. Конечно, очень важен хороший инструмент, который может отображать данные в шестнадцатеричном формате, так же как и способность писать быстрые сценарии для проверки сложных предположений о структуре данных. Все это должно быть очевидно для вас, но, возможно, может помочь кому-то еще, поэтому я подумал, что упомяну их.
Один из лучших способов атаковать неизвестные форматы файлов, когда у вас есть некоторый контроль над содержимым, - это использовать дифференцированный подход. Сохраните файл, внесите небольшое контролируемое изменение и сохраните снова. Сделайте двоичное сравнение файлов, чтобы найти разницу - желательно с помощью инструмента, который может обнаружить вставки и удаления. Если вы имеете дело с зашифрованным файлом, небольшое изменение вызовет огромную разницу. Если он просто сжат, разница не будет локализована. А если формат файла тривиален, простое изменение состояния приведет к простому изменению файла.
Другое дело - взглянуть на некоторые распространенные методы сжатия, в частности zip и gzip, и изучить их "сигнатуры". Большинство из этих форматов являются "самоидентифицирующимися". поэтому, когда они начинают распаковывать, они могут быстро проверить работоспособность в том формате, который они понимают.
Запрет шифрования, формат файла архива - это, по сути, своего рода механизм индексации (каталог или сортировка) и способ определения местоположения этих элементов внутри архива с помощью указателей в индексе.
Принимая во внимание повсеместность стандартных алгоритмов сжатия, в основном необходимо определить, где начинаются эти блоки, и попытаться найти индекс или оглавление.
Некоторые будут иметь индекс все в одном месте (как файловая система), другие просто будут предшествовать каждому элементу в архиве с его идентификационной информацией. Но, в конце концов, где-то есть информация о смещениях от одного блока к другому, есть информация о типах данных (например, если они хранят файлы GIF, у GIF также есть подпись) и т. Д.
Это те шаблоны, которые вы пытаетесь найти в файле.
Было бы неплохо, если бы вы каким-то образом взялись за две версии данных в одном и том же формате. Например, в игре вы можете получить исходную версию с компакт-диска и более новую исправленную версию. Они действительно могут выделить информацию, которую вы ищете.