![]() |
#1 |
Датамайнинг клиента игры
![]()
Ссылки на полезные ресурсы:
Публичный архив изменений по датамайну на «E7 Vault» Ссылки на полезные посты: потрошилки пакетов/архивов: data.pack (скрипты на python) - https://forums.goha.ru/showthread.ph...#post159273387 (версия 2.7 от 2021.12.02)*.bank (скрипты на python, только под Windows) - https://forums.goha.ru/showthread.ph...#post159275908описание потрошения звуковых файлов (.bank) - https://forums.goha.ru/showthread.ph...#post158649085 конверсия формата файлов: db-файл в csv-формат (скрипты на python) - https://forums.goha.ru/showthread.ph...#post159274578(ВНИМАНИЕ! поддерживается пока только старый формат, использовавшийся до патча от 2021.06.10)scsp-файл в json-формат (скрипты на python) - https://forums.goha.ru/showthread.ph...#post159272975(ВНИМАНИЕ! поддерживается пока только старый формат, использовавшийся до патча от 2021.06.10) Если у кого есть мысли, идеи, предложения или даже конкретные "программные продукты" для датамайна Epic Seven - пишем, не стесняемся. ![]() ![]() В случае, если есть что обсудить со мной, но лень регистрироваться на гохе, меня можно найти и на reddit: /u/nORbDragon
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
Last edited by nORb Dragon; 12.01.2022 at 00:11.
1 пользователь оценил это сообщение: Показать
|
|
Views: 206046
![]() |
![]() |
#2 | |||
|
Re: Датамайнинг клиента игры
https://www.reddit.com/r/EpicSeven/c...assorted_dump/
ну ты можешь поюзать реддит например в подобных темах и именно в этой обязательно есть челик который кричит как ты это делаешь научи меня и его учат в комментах ![]()
__________________
Final fantasy war of the vision player
1 пользователь оценил это сообщение: Показать
|
![]() |
#3 | |||
|
Re: Датамайнинг клиента игры
Реддит - это свалка, где только изрядно покопавшись можно найти что-то ценное.
![]() Пойду чекну линк. ![]() Добавлено через 8 минут Глянул линк. Бесполезная инфа, которую я уже знал. ![]() Основное, что меня интересует: - как нормально перекачать весь клиент игры с эмуля на комп, на примере Nox/Memu/LDPlayer (для дальнейших махинаций над декодингом на компе); - чёткое указание, в каком файле и на какой позиции находится ключ для расшифровки других файлов; - в чём в итоге запаковано всё (zip, java, ещё какой треш), чем именно распаковывать после дешифровки.
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
Last edited by nORb Dragon; 30.04.2019 at 10:09. Reason: Добавлено сообщение |
![]() |
#4 | ||||
|
Re: Датамайнинг клиента игры
Quote:
__________________
Final fantasy war of the vision player
|
![]() |
#5 | ||||
|
Re: Датамайнинг клиента игры
Апну темку.
![]() ![]() ![]() Quote:
Предупреждать о том, что в EULA что-то там мелькает и намекает про "нельзя датамайнить", упоминать не буду. ![]() Про "технические моменты" рассказывать пока не буду. Предложенное там: азы XOR, указание ключа и способ найти что-то интересное в файле data.pack. Это всё: базовая информация, которой мне так реально нехватало год назад. На основе этой инфы, я смогу для себя накидать:
Я не знаю, почему там в темке на reddit пугают народ огромными объёмами. На первый взгляд, png-файлы там непожаты. Насчёт остальных файлов - хз. Углублённо реализовывать это дело буду в свободное от работы время на работе. ![]() Из самого главного, что уже нащупал, и о чём нет инфы в той темке. Но я благодарен написанному там, ибо без той инфы о используемом ключе XOR и насколько сильно запрятаны там файлы (те же PNG), я бы не добрался до этого момента. Мб кому пригодится, поэтому оставлю здесь. Начиная с определённого момента, содержимое data.pack файла превращается в склад разнообразных файлов. Они идут последовательно друг за дружкой, разделителем между ними является последовательность из четырёх байтов B3 02 00 00 (первый байт меняется по ходу пьесы? не разобрался до конца). Начинается всё (ориентируюсь по data.pack от 6 февраля 2020 года) с позиции по адресу - 1407C. И дальше идут файлы, файлы, файлы. Далее по тексту буду использовать фразу "поток записанного файла" под значением: вся информация по одному из множества файлов, которые были присобачены внутрь data.pack, записанная последовательно (инфа о файле + содержимое файла). Описание потока записанного файла (что я понял, поковырявшись в data-pack):
Разберём на примере для закрепления. Допустим, у нас по адресу 14AE2 есть описание потока записанного файла title/bg/1st_anniversary_bg.png Рассматриваем под микроскопом с позиции 14AE2. PHP Code:
С самой же позиции 92646 начинается описание следующего записанного файла - title/bg/20_valentine_bg.png. Сразу предупреждаю: это пока непроверенные мною наброски, сделанные в пятницу вечером на основе прочитанного и анализа "по-диагонали" файла data.pack. ![]() ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#6 | |||
|
Re: Датамайнинг клиента игры
Поглядел на свежую голову.
В общем, маркер окончания записанного потока файла может быть как B3-02-00-00, так и 00-00-00-00. В чём разница? Без понятия. Смущавшие меня байты вида BA-02-00-00 - это последние четыре байта содержимого файлов, а не маркер окончания. Так как этот маркер окончания записанного потока можно не анализировать, а тупо скипать бесполезные 4 байта, то думаю просто закрывать глаза на их содержимое. ![]() Ещё раз упоминаю, что это всё мой теорикрафт. Ковыряться в этом, писать программку по "распилу" data.pack на файлики буду на следующей неделе. Дома на ПК у меня ничего не стоит из нужного. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#7 | |||
|
Re: Датамайнинг клиента игры
__________________
1 пользователь оценил это сообщение: Показать
|
![]() |
#8 | |||
|
Re: Датамайнинг клиента игры
На своём линух-сервачке от нечего делать написал щаз потрошилку data.pack.
![]() ![]() Распотрошил где-то за полторы минуты.
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#9 | |||
|
Re: Датамайнинг клиента игры
В общем, много клипарта и т.д. Аккуратно распихано по папкам и подпапкам. Но то, что меня интересует, кажется содержится в неизвестного мне формата файлах.
![]() Может кто в теме, чем открываются .atlas, .scsp, .sct файлы? ![]() Архив для экспериментов - portrait.zip Ну и так, что в глаза бросилось. Артефакт, которого я не видел в игре: Значок сета, которого нет в игре (и я хз как его понимать, ибо вамп и НР сеты есть): Сценка, которую я не видел вроде. ![]() Карта рейд-лабиринта. Ну и Басар ждёт ваших кристаллов. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
2 пользователя оценили это сообщение: Показать
|
![]() |
#10 | |||
|
Re: Датамайнинг клиента игры
В общем, если кто хочет поиграться с датамайном. Или поделиться на реддите, вдруг кому там будет интересно.
![]() ![]() Вот что я набросал сегодня: epic7ripper.zip Это - скрипт под python3. Предполагаемое место выполнения: linux. Под виндой не факт, что "взлетит", надо скорее всего допиливать "напильником". Но мне лень. ![]() Для работы необходимо наличие на линухе питона третьей версии и уже подготовленного ранее файлика data.pack . Под "подготовленностью" подразумеваю, что его уже прогнали через XOR. Инструкция со скриптом на питоне находится на реддите в темке по ссылке (см. Step 1, Step 2) - https://www.reddit.com/r/EpicSeven/c...ine_e7_assets/ Выполнять мой скрипт через команду: Code:
python3 epic7ripper.py - лог со списком "выпотрошенного" в файл epic7ripper.log - сами "выпотрошенные" файлы будут вкинуты в папку от сегодняшнего числа (допустим: 20200209). Не буду удивлён, если часть файлов (допустим те же .db) дополнительно зашифрованы и/или запакованы. Поэтому и решил поделиться скриптом, чтоб ускорить процесс "раскуривания". Да и может кто там сообразит, как открыть файлы с расширением .atlas, .scsp, .sct Если вкинете на реддите этот скрипт, рекомендую моё имя не упоминать там всуе. Не хочу быть забаненным в игре за минутную шалость. ![]() Переводить на великий и могучий английский я комменты в скрипте конечно же не буду. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#11 | |||
|
Re: Датамайнинг клиента игры
![]() Добавлено через 16 минут Нашел. https://e7herder.com/tools/model-viewer Там слева вводишь имя персонажа и получает анимации. С автором можно связаться через гитхаб или реддит. Last edited by Kapes; 09.02.2020 at 20:55. Reason: Добавлено сообщение |
![]() |
#12 | |||
|
Re: Датамайнинг клиента игры
Немножко допилил напильником скрипт. Вписал в него дешифровщик (xor) data.pack. Теперь достаточно будет снять с эмуля файл data.pack, закинуть его в папку со скриптом и запустить скрипт без всяких лишних манипуляций.
Конечно, процесс дешифровки довольно долгий, если чего. Дешифрованный data.pack закинет в созданную папку от сегодняшнего числа вместе с результатом потрошения. Новая версия скрипта: epic7ripper_v1_1.zip
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#13 | |||
|
Re: Датамайнинг клиента игры
Файлики .pigz упакованы в gzip, если кого волновал этот вопрос.
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#14 | |||
|
Re: Датамайнинг клиента игры
Наброски того, что из себя представляют .pack файлы у Epic7. Скорее для себя, чтоб не забыть.
PHP Code:
![]() Описание формата списка файлов я уже упоминал ранее, найти можно по ссылке - https://forums.goha.ru/showthread.ph...#post158315163 Осталось теперь понять, где спрятаны ключи для дешифрования .db файлов. И как расковырять файлы спрайтов .sct. ![]() Есть мысль, что они дополнительно ещё и запакованы, но не могу на глаз определить использованный алгоритм. ![]() Вообще, нагуглил, что .atlas и .scsp - это результат работы с программой 2d анимации Spine - http://esotericsoftware.com/spine-texture-packer Но не могу разобраться с sct-файликами. И да, это не Scitex CT, судя по результам моих экспериментов. Или он как-то странно упакован. ![]() Теперь касаемо Я думаю, что если бы он хотел поделиться инфой о датамайне, он бы ею давно поделился. ![]() Все его посты: это предложение оценить результат его работы по датамайну (тот же сайт) и/или сообщить ему об ошибках. В общем, даже пытаться не буду с ним выходить на связь. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#15 | |||
|
Re: Датамайнинг клиента игры
Разобрался со вторым блоком файла. Там действительно идёт тупое перечисление адресов позиций, где в файле находится старт очередного блока описания вложенного файла.
Второй блок имеет вид: PHP Code:
![]() Осталось раскурить, за что отвечает первый блок. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#16 | |||
|
Re: Датамайнинг клиента игры
Возвращаясь к блоку с файлами, их описанию.
Ради интереса попробовал посмотреть, что если заюзать это значение в качестве позиции в файле, и... таки да, это ссылки на другие файлы. Вопрос: зачем? ![]() Вскрываются ли .scsp и .sct файлы программкой Spine - не в курсе. Ибо программка платная, триал версия не даёт возможности заюзать нужный мне функционал. Хотя... надо будет проверить, наверняка существует "торрент-эдишен"? А то платить за ПО, которое мне не поможет... я уже давно перешёл в категорию "я не настолько богат". Чем вскрыть файлики .db я тоже так и не разобрался. В общем, мои силы на "соло мозговой штурм" закончились. Кажется, пора отрихтовать немножко скрипт потрошилки, мб "перевести" комменты на анл, и закинуть этот скрипт + волнующие меня файлы под "анонимом" на реддит. С предложением раскурить вместе, как эти файлы можно вскрыть. Следующий этап: соберу наверн отдельный скрипт для сравнения результатов датамайнов от разных дат для поиска новых/изменённых файлов. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#17 | |||
|
Re: Датамайнинг клиента игры
Предположительно, окончательный вариант скрипта потрошилки на python3 с "ру-комментами внутри".
![]() Исполнять на линухе. На винде скорее всего не взлетит. Скрипт для скачивания: epic7ripper_v1_2.zip Исполнять через команду: PHP Code:
Скрипт сам дешифрует файл, после чего начнёт его потрошить. Результат будет сохранён в папку с названием вида YYYYMMDD. В эту же папку будет сохранён дешифрованный вариант data.pack. Лог работы будет сохранён в файл epic7ripper.log. Выглядеть лог будет как-то так: PHP Code:
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#18 | |||
|
Re: Датамайнинг клиента игры
Оп. Кажется в куче комментов на реддите я таки нашёл нужную мне инфу на расшифровку db-файлов. Щаз ковыряюсь, подбираю xor-ключ методом научного тыка... Надеюсь, что он подойдёт ко всем db-файлам.
![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#19 | |||
|
Re: Датамайнинг клиента игры
Как йа задолбался... Но я таки сделалЪ. Смог собрать ключ к одному из db-файлов на основе... млять, вот этого - https://pastebin.com/DY0db2D2 Четыре часа угробил!
![]() Кому интересно, оригинальный зашифрованный файл и уже дешифрованный мною на основе "подсказки" можно забрать по ссылке, в архиве: character_player.zip И да, я этот подобранный ключик прогнал по поиску в data.pack. ![]() Касаемо же формата данных в дешифрованном db-файлике: пока не ковырялся. Но по ходу ковыряния над ключом обратил внимание на наличие маркеров колонок. Думаю, там табличные данные. В анализ формата не углублялся ещё.
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#21 | |||
|
Re: Датамайнинг клиента игры
Я просто хз, не заглючит ли питон под виндой при юзании в пути обратного слеша.
![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#22 | |||
|
Re: Датамайнинг клиента игры
Разобрался со структурой db-файлов. Универсальный конвертер их в текстовые файлы с табулятором-разделителем собрал. Но проблема с тем, что надо к каждому такому db-файлу индивидуально подбирать xor-ключ - осталась.
Если кому любопытно, содержание файла character_player.db, приведённое к табличке экселя: character_player.zip Так как db-файлов много, а подбирать подходящий ключ к каждому из них я не буду. Лень. ![]() Если кто считает, что в каком-то из db-файлов находится ОЧЕНЬ важная и полезная инфа - тыкните в него пальцем. Мб поковыряюсь над ним, подберу к нему xor-ключ. ![]() PS: забыл приложить сам текстовый файл с табуляторами - character_player.test-20200217.db.txt.zip
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
Last edited by nORb Dragon; 17.02.2020 at 12:39. Reason: Добавил аттач с текстовым файлом с табуляторами-разделителями |
![]() |
#23 | |||
|
Re: Датамайнинг клиента игры
Накидал мозгодробительное описание формата .db для тех, кто постарше и любит ковыряться во всякой хрени.
![]() PHP Code:
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#24 | |||
|
Re: Датамайнинг клиента игры
Оставлю здесь скрипт по преобразованию уже дешифрованного db-файла в текстовый файлик с разделителями-табуляторами.
Результирующий текстовый файлик можно при желании открыть в Excel. Только при импорте данных необходимо будет проставить всем колонкам принудительное отображение всех данных в виде "текста". Иначе оно поломает часть данных, переведёт их в дату (типа "3 янв") и прочий треш. Скрипт: epic7_db2txt.zip К архиву приложен файлик character_player.test-20200214.db для извращений и экспериментов. Юзать через python3 epic7_db2txt.py <имя db-файла> <имя файла для результата> Допустим: PHP Code:
Есть мысли как автоматизировать поиск ключа под db-файлы, но... это пока мысли. Если удастся реализовать, то соберу скрипт, который будет сразу и декодить файл и преобразовывать его содержимое к текстовому варианту с табуляторами. ![]()
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|
![]() |
#25 | |||
|
Re: Датамайнинг клиента игры
Оп. Кажется, я случайно нашёл где спрятан ключ дешифровки для db-файлов...
__________________
not an Ordinary Rainbow Dragon - анахроничный танцующий с лезвиями дракон
Epic Seven, сводки с полей:
|