Что я должен знать, прежде чем копаться в неизвестном архивном файле?

StackOverflow https://stackoverflow.com/questions/295711

  •  08-07-2019
  •  | 
  •  

Вопрос

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

Что я должен знать о проверке формата файла в целях извлечения данных, прежде чем углубиться в это?

РЕДАКТИРОВАТЬ: Я хотел бы получить общие советы, так как изучение форматов файлов кажется интересным. Я хотел бы иметь возможность взять Файл X и узнать, как подойти к проблеме изучения его.

Это было полезно?

Решение

<Ол>
  • Вы определенно захотите шестнадцатеричный редактор, прежде чем зайдете слишком далеко. Это позволит вам видеть необработанные данные в виде чисел, а не больших пустых блоков в любом блокноте шрифта (или любом текстовом редакторе).
  • Попробуйте открыть его в любых имеющихся у вас экстракторах архивов (например, zip, 7z, rar, gz, tar и т. д.), чтобы проверить, является ли это просто переименованным форматом файла (.PK3 что-то в этом роде).
  • Найдите заголовки известных форматов файлов где-то внутри файла, что поможет вам определить, где хранятся определенные части данных (т. е. выполнить поиск "IPNG", чтобы найти какие-либо (несжатые) файлы PNG где-то внутри).
  • Если вы обнаружите, где хранится определенный фрагмент данных, запишите его местоположение и длину и посмотрите, сможете ли вы найти числа, равные любому из этих значений, в начале файла, которые обычно действуют как указатели к фактическим данным.
  • Иногда вам просто нужно угадать или интуитивно понять, что означает определенное значение, и если вы ошибаетесь, продолжайте двигаться. Вы ничего не можете с этим поделать.
  • Я обнаружил, что http://www.wotsit.org является особенно полезно для известных форматов типов файлов, для помощи в поиске заголовков в файле .dat.
  • Другие советы

    Сначала создайте резервную копию файла. После того, как вы ограничите количество урона, которое вы можете нанести, просто поэкспериментируйте, как предложил Эд.

    Глядя на ваш уровень повторений, я думаю, что базовый учебник по шестнадцатеричным числам, порядку байтов, представлениям для различных типов данных и всему остальному будет излишним. Конечно, очень важен хороший инструмент, который может отображать данные в шестнадцатеричном формате, так же как и способность писать быстрые сценарии для проверки сложных предположений о структуре данных. Все это должно быть очевидно для вас, но, возможно, может помочь кому-то еще, поэтому я подумал, что упомяну их.

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

    Другое дело - взглянуть на некоторые распространенные методы сжатия, в частности zip и gzip, и изучить их "сигнатуры". Большинство из этих форматов являются "самоидентифицирующимися". поэтому, когда они начинают распаковывать, они могут быстро проверить работоспособность в том формате, который они понимают.

    Запрет шифрования, формат файла архива - это, по сути, своего рода механизм индексации (каталог или сортировка) и способ определения местоположения этих элементов внутри архива с помощью указателей в индексе.

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

    Некоторые будут иметь индекс все в одном месте (как файловая система), другие просто будут предшествовать каждому элементу в архиве с его идентификационной информацией. Но, в конце концов, где-то есть информация о смещениях от одного блока к другому, есть информация о типах данных (например, если они хранят файлы GIF, у GIF также есть подпись) и т. Д.

    Это те шаблоны, которые вы пытаетесь найти в файле.

    Было бы неплохо, если бы вы каким-то образом взялись за две версии данных в одном и том же формате. Например, в игре вы можете получить исходную версию с компакт-диска и более новую исправленную версию. Они действительно могут выделить информацию, которую вы ищете.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top