Апну темку.
ЭТО НЕ НЕКРОПОСТ!
Ну, почти.
В общем, поковырялся я немножко сегодня, раскуривая написанное по ссылке.
Предупреждать о том, что в EULA что-то там мелькает и намекает про "нельзя датамайнить", упоминать не буду.
Подозреваю, что это скорее угроза для тех, кто попробует использовать результаты "майнинга" в своей "коммерческой деятельности" (клип-арты и т.д.) или начнёт модифицировать клиент.
Про "технические моменты" рассказывать пока не буду. Предложенное там: азы XOR, указание ключа и способ найти что-то интересное в файле data.pack.
Это всё: базовая информация, которой мне так реально нехватало год назад.
На основе этой инфы, я смогу для себя накидать:
- динамический поиск нового ключа для XOR, если креативы решат его внезапно поменять для data.pack, но саму структуру файла менять не будут;
- выгрузку ВСЕХ вложенных в data.pack файлов (не только png);
- автоматизировать весь этот процесс до "нажатия одной кнопки".
Я не знаю, почему там в темке на reddit пугают народ огромными объёмами. На первый взгляд, png-файлы там непожаты. Насчёт остальных файлов - хз. Углублённо реализовывать это дело буду в свободное от работы время на работе.
Из самого главного, что уже нащупал, и о чём нет инфы в той темке. Но я благодарен написанному там, ибо без той инфы о используемом ключе XOR и насколько сильно запрятаны там файлы (те же PNG), я бы не добрался до этого момента. Мб кому пригодится, поэтому оставлю здесь.
Начиная с определённого момента, содержимое data.pack файла превращается в склад разнообразных файлов. Они идут последовательно друг за дружкой, разделителем между ними является последовательность из четырёх байтов
B3 02 00 00 (первый байт меняется по ходу пьесы? не разобрался до конца).
Начинается всё (ориентируюсь по data.pack от 6 февраля 2020 года) с позиции по адресу -
1407C. И дальше идут файлы, файлы, файлы.
Далее по тексту буду использовать фразу "поток записанного файла" под значением: вся информация по одному из множества файлов, которые были присобачены внутрь data.pack, записанная последовательно (инфа о файле + содержимое файла).
Описание потока записанного файла (что я понял, поковырявшись в data-pack):- 4 байта - общий размер ВСЕГО блока, который посвящён данному файлу (маркеры окончания записанного потока включительно);
- 1 байт - служебный маркер с хз какой задачей, обычно значение равно 02;
- 1 байт - хранит длину строки с названием файла (в байтах);
- 4 байта - хранит размер содержимого файла (в байтах);
- 1 байт - служебный маркер с хз какой задачей, обычно значение равно 00;
- 4 байта - служебный маркер с хз какой задачей, часто содержит всякую ересь, но может быть равен и 00 00 00 00;
- имя файла, где найти размер строки для его вырезания - упомянуто несколькими пунктами выше;
- содержимое файла, где найти размер файла для его вырезания - упомянуто несколькими пунктами выше;
- 4 байта - служебный маркер окончания записанного потока файла, обычно имеет вид B3 02 00 00 (первый байт меняется по ходу пьесы? в конце data.pack используется BA).
Разберём на примере для закрепления.
Допустим, у нас по адресу 14AE2 есть описание потока записанного файла
title/bg/1st_anniversary_bg.png
Рассматриваем под микроскопом с позиции 14AE2.
PHP Code:
64-DB-07-00 02 1F 32-DB-07-00 00 00-00-00-00 74-69-74-6C-65-2F-62-67-2F-31-73-74-5F-61-6E-6E-69-76-65-72-73-61-72-79-5F-62-67-2E-70-6E-67-89
^ ^ ^ ^ ^ ^ ^- имя файла (title/bg/1st_anniversary_bg.png)
| | | | | ^- 4 байта - служебный маркер с хз какой задачей, часто содержит всякую ересь
| | | | ^- 1 байт - служебный маркер с хз какой задачей, обычно значение равно 00
| | | ^- 4 байта - размер содержимого файла, равняется в данном случае: 514 866 байт
| | ^- 1 байт - длина строки с названием файла, в данном случае: 31 байт
| ^- 1 байт - служебный маркер с хз какой задачей, обычно значение равно 02
|
^- общий размер ВСЕГО блока описания файла, в данном случае равен 514 916 байт, что соответствует:
= 514 866 байт (размер содержимого файла)
+ 31 байт (длина строки с названием файла)
+ 15 байт (служебные символы заголовка)
+ 4 байта (служебные символы маркера окончания записанного потока файла)
Ради интереса, смещаемся с позиции 14AE2 на позицию 92646 (+514 916 байт). И мы видим перед этим местом 4 байта со служебным маркером окончания файла (
B3 02 00 00).
С самой же позиции 92646 начинается описание следующего записанного файла -
title/bg/20_valentine_bg.png.
Сразу предупреждаю: это пока непроверенные мною наброски, сделанные в пятницу вечером на основе прочитанного и анализа "по-диагонали" файла data.pack.
Мне не нравится
BA 02 00 00.
Надо будет присмотреться, что с ним не так.