Подбираем ключ к архивам Visionaire Studio

В этой статье речь пойдет о подборе ключа к архивам, созданным с помощью Visionaire Studio, которые хранят в себе игровые ресурсы.
Visionaire Studio - это среда для упрощенного создания игр в жанре adventure, с её помощью были созданы такие игры, как, например: The Dark Eye: Chains of Satinav, A New Beginning, Deponia. В общем, практически весь репертуар продуктов студии Daedalic Entertainment. Самого процесса распаковки я касаться не буду, так как для этого уже существуют несколько утилит: (скрипт для QuickBMS, VISExt, Unpakke) и более-менее полное описание формата содержимого файла (краткое описание формата VIS*). Минусом всех этих утилит является необходимость собственноручно вбивать ключ, которым зашифрован VIS-файл (ключ шифрования для одной и той же игры может быть различным в зависимости от, например, локализации, а также ключи не сразу добавляются в утилиты при выходе новой игры), попробуем разобраться, как вычислить этот ключ программно.
Как видно из описания формата, в качестве шифрования применяется XOR, где ключом служит половина MD5-хэша, полученного от имени файла (не всегда), то есть ключ шифрования имеет формат [0-9a-f]{16}.
Теперь, для упрощения исследования, нам понадобятся несколько VIS-файлов с известными ключами. Ключи можно получить из вышеперечисленных утилит для распаковки, а файлы, например, из вышеуказанных игр (обычно искомый файл называется data.vis). Если качать игры целиком нет желания, то в качестве примера можно взять этот небольшой файл (выкладывался в качестве примера на XeNTaX). На его примере я объясню алгоритм восстановления ключа.
Читать далее «Подбираем ключ к архивам Visionaire Studio»