Для входа на форум нажмите здесь
Датамайнинг клиента игры

30.04.2019 09:25
#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
Last edited by nORb Dragon; 12.01.2022 at 00:11.
#276
Re: Датамайнинг клиента игры
Перед убеганием из дома успел урвать с собой на работу обновлённый корейский войс-пак.

Есть свежая озвучка. Озвучка для c3132 и c3135.

c3135 - это уже знакомая некоторым 3★:



Кто такой c3132 - хз, но тоже 3★, без вариантов. Пока "хз". Надо дата-пак свежий потрошить. Он у меня остался дома.
#277
Re: Датамайнинг клиента игры
Тыкс. Ну, все вроде в теме, что в клиенте игры незашифрованы остались только картинки и кучка бесполезных для большинства игроков файлов. Поэтому, выкладываю только картинки.

Если смотреть датамайн за сегодня, можно наверное выделить только небольшое количество картинок. Остальные вы сможете просмотреть и без моего упоминания, пройдя по ссылке в конце поста.

id c3132, официальное имя его мне неизвестно:













Ну и я уже упоминал, но повторюсь: в "пакет озвучки" (корейский) завезли озвучку для двух 3★ персонажей - c3132 и c3135. Итого мы имеем уже трёх 3★ новых персонажей.
c3132 / c3134 / c3135
Кстати, есть у меня подозрение, что:
- c3132 - blade_dark (3★ dark)
- c3134 - blade_light (3★ light)
- c3135 - blade_ice (3★ ice)

Но это так, мысли вслух. Ибо я до 4го эпизода не дошёл. В бою с ними не пересекался. Даже как звать не в теме.


Ссылка на полновесные альбомы картинок из датамайна - https://www.norbdragon.com/uploads/e...2021/20211125/
#278
Re: Датамайнинг клиента игры
buttreynolds вышел на связь. Пояснил касаемо интересующих меня форматов sct и scsp.

С sct-файлами вроде понятно всё, но надо поиграться. С scsp-файлами будет наверное затык... ну, размыто ответил. Задал ему уточняющие вопросы, пока молчит. Может и не станет отвечать. А может и сам не обладает чёткой информацией по ним, мб конвертил их другой человек (автор e7herder).
#279
Re: Датамайнинг клиента игры
Тыкс. Конвертить sct в png я научился.

Осталось раскурить scsp, который используется для компоновки изображения из "кусочков". И можно будет попробовать замутить свой бар с блекджеком и шлюхами e7herder.

Ну а это вам в качестве "доказательства", что "йа смогЪ!".

Скин Мерседес



Ну и два новых НПЦ (статика, но всё равно запихнуты в sct)



#280
Re: Датамайнинг клиента игры
Originally Posted by nORb Dragon:
Скин Мерседес
конструктор, "сделай сам"? :)
#281
Re: Датамайнинг клиента игры
Originally Posted by Darkmor:
конструктор, "сделай сам"? :)
Собери себе идеальную женщину из предложенных кусочков!

Если хочешь, могу ещё деталей накидать из других файлов. Любите и уважайте доктора Франкенштейна, который всё придумал задолго до вашего рождения!
#282
Re: Датамайнинг клиента игры
Так это ж можно Айтеру прилепить сиськи Мерседес
#283
Re: Датамайнинг клиента игры
Originally Posted by Darkmor:
прилепить
И анимировать их, анимировать!
#284
Re: Датамайнинг клиента игры
Буду краток: креативы (разрабы э7) - ещё те...

Подлиннее: всё так же ковыряюсь с scsp-файлами. Это те, в которых описание "правильной сборки сисек Мерседес", в том числе параметры анимации.

Благодаря туманным намёкам от buttreynolds, у меня возникла мысль попробовать немножко другой подход. И кое-что получилось. Собрал конвертер в json-файл (под e7herder, допустим), но пока только для "статичных картинок" (где тупо выражение морды лица переключается, но анимации нет). Следующий этап - доработать конвертер, чтоб всю инфу об анимации тоже пихал в json.

Сравниваю свои результаты с файликами из e7herder. Вроде "почти" одинаково. За мелкими исключениями. На глаз в e7herder в сгенерированной картинке модельки разницы не заметил.

Ради интереса попробовал "свежие" модельки перегнать. Неполучилось, дало ошибку. Формат реально переделали. Я сейчас "колдую", чтоб был конвертер под модельки экспортированные из spine v.2, подгоняю свой конвертер под формат e7herder. А нужно будет потом ещё искать концы для нового формата моделек, экспортированных из spine v.3.


Есть мысли... возможно, что и db-файлы зашифрованы в подобном стиле сейчас, как всегда были зашифрованы scsp и sct файлы. Но мне пока не до них.
#285
Re: Датамайнинг клиента игры
Яхз, читает ли кто этот топик. Особенно из тех, кто "в теме". Но всё равно оставлю это здесь.

Есть ли у кого идеи, как можно превратить/декодировать/конвертнуть код цвета (96% уверенности, что это оно) из одного неизвестного цветового режима в код rgba-режима? Примеры моих мучений:
Code:
#8382823E --> #FFFFFF41
#00000000 --> #FFFFFF00
#C5C4443F --> #FFFFFFC4
Погуглил, вроде это даже не CMYK. Я конечно попробую дядьке buttreynolds вопрос задать. Но подозреваю, что ответа от него не будет.

Добавлено через 17 минут

Всё. Сам себе отвечу. Разрабы - конченные...

На самом деле это выглядит так:
Code:
00 00 80 3F  00 00 80 3F  00 00 80 3F  83 82 82 3E --> #FFFFFF41
00 00 80 3F  00 00 80 3F  00 00 80 3F  00 00 00 00 --> #FFFFFF00
00 00 80 3F  00 00 80 3F  00 00 80 3F  C5 C4 44 3F --> #FFFFFFC4
Поясняю: связка из 4 блоков по 4 байта. Каждый блок - это float (4 байта). Первые 4 байта - float значение R, вторые - G, третьи - B, четвёртые - alpha.

Гении, сцуко! 16 байт расходовать на RGBa, которое замечательно помещается в 4 байта!
Last edited by nORb Dragon; 29.11.2021 at 01:31. Reason: Добавлено сообщение
#286
Re: Датамайнинг клиента игры
Originally Posted by nORb Dragon:
id c3132, официальное имя его мне неизвестно:
Muwi водный вор
#287
Re: Датамайнинг клиента игры
Originally Posted by Darkmor:
Muwi водный вор
Я вообще сначала думал, что это девка. Потом уже, после некоторых скринов на реддите и вглядывания в область груди, осознал - це мужик! Трапы атакуют!
#288
Re: Датамайнинг клиента игры
Очередная "изумительная задачка" от разрабов э7.

Code:
55 3C 09 41  EC 51 D8 BF  2B 2B FE C0  48 E1 AC C1  83 A9 DC C1  
71 3D AA C1  F8 0D 79 C2  CD CC 7C C1  B8 1E 9D C2  33 33 4F C1  
A4 70 95 C2  C3 F5 B6 41  B0 2C 5D C2  9A 99 C1 41  31 F1 A5 C1  
8F C2 B3 41  F0 1B 27 BF  E1 7A A2 41  0A D7 03 41  EC 51 D8 BF  
E1 7A 04 C1  48 E1 AC C1  29 5C DF C1  71 3D AA C1  A4 70 79 C2  
CD CC 7C C1  B8 1E 9D C2  33 33 4F C1  A4 70 95 C2  C3 F5 B6 41  
5C 8F 5D C2  9A 99 C1 41  D7 A3 A8 C1  8F C2 B3 41  A4 70 7D BF  
E1 7A A2 41  66 DA 16 41  EC 51 D8 BF  0A EF E2 C0  48 E1 AC C1  
7B DA D5 C1  71 3D AA C1  F1 14 78 C2  CD CC 7C C1  B8 1E 9D C2  
33 33 4F C1  A4 70 95 C2  C3 F5 B6 41  A9 33 5C C2  9A 99 C1 41  
29 22 9F C1  8F C2 B3 41  68 14 4B 3E  E1 7A A2 41  55 3C 09 41  
EC 51 D8 BF  2B 2B FE C0  48 E1 AC C1  83 A9 DC C1  71 3D AA C1  
F8 0D 79 C2  CD CC 7C C1  B8 1E 9D C2  33 33 4F C1  A4 70 95 C2  
C3 F5 B6 41  B0 2C 5D C2  9A 99 C1 41  31 F1 A5 C1  8F C2 B3 41  
F0 1B 27 BF  E1 7A A2 41
Где-то здесь спрятано (и поместилось же!) четыре (!) последовательности чисел с плавающей точкой:
Code:
"vertices": [
                                    -0.10359,
                                    0.0888,
                                    0.10452,
                                    0.04209,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0.36702,
                                    -0.26988,
                                    -0.39985,
                                    -0.2182,
                                    -0.37242,
                                    -0.26208,
                                    0.15728,
                                    -0.65833
                                ]

"vertices": [
                                    0,
                                    0.18258,
                                    0.13976,
                                    -0.09882,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0.21664,
                                    -0.1593,
                                    -0.23601,
                                    -0.12879,
                                    -0.21982,
                                    -0.15469,
                                    -0.58355,
                                    0.08629
                                ]


"vertices": [
                                    -0.70013,
                                    -0.42529,
                                    -0.08866,
                                    0.81469,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    1.19152,
                                    -0.87615,
                                    -1.29809,
                                    -0.70837,
                                    -1.20904,
                                    -0.85083,
                                    4.21899,
                                    -4.74075
                                ]


"vertices": [
                                    -0.10359,
                                    0.0888,
                                    0.10452,
                                    0.04209,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0,
                                    0.36702,
                                    -0.26988,
                                    -0.39985,
                                    -0.2182,
                                    -0.37242,
                                    -0.26208,
                                    0.15728,
                                    -0.65833
                                ]
Наверное какая-то хитрая формула с заполнением нулями промежуточных значений и вычислением значений точек, но я её пока не раскурил.

Гении. Одно слово - гении. Снимаю шляпу перед автором e7herder. Или тем, кто для него писал декодер scsp-файлов.

Я почти набросал свой декодер. Зубки обламываю и облизываю описание ffd в блоке animations. Ну или "по-умному": Free Form Deformation, что бы это ни значило.

Остальное в файле вроде разобрал на запчасти. Но надо будет потом контрольный забег устроить, пробежаться по всем старым персонажам (до изменений в формате scsp в июне 2021), убедиться что расхождений с существующими json с дампа e7herder я своим декодером не делаю.

Добавлено через 47 минут

Что-то нашёл, только пока не понял, что...

Есть система. Блоки по 18 4х байтных последовательностей. Каждая вторая последовательность в одном блоке идентична каждой второй последовательности в остальных блоках. Мне кажется... это заговор.

Code:
               55 3C 09 41  EC 51 D8 BF  
               2B 2B FE C0  48 E1 AC C1  
               83 A9 DC C1  71 3D AA C1  
               F8 0D 79 C2  CD CC 7C C1  
               B8 1E 9D C2  33 33 4F C1  
               A4 70 95 C2  C3 F5 B6 41  
               B0 2C 5D C2  9A 99 C1 41  
               31 F1 A5 C1  8F C2 B3 41  
               F0 1B 27 BF  E1 7A A2 41  <- 18
               
               0A D7 03 41  EC 51 D8 BF  
               E1 7A 04 C1  48 E1 AC C1  
               29 5C DF C1  71 3D AA C1  
               A4 70 79 C2  CD CC 7C C1  
               B8 1E 9D C2  33 33 4F C1  
               A4 70 95 C2  C3 F5 B6 41  
               5C 8F 5D C2  9A 99 C1 41  
               D7 A3 A8 C1  8F C2 B3 41  
               A4 70 7D BF  E1 7A A2 41 <- 18

               66 DA 16 41  EC 51 D8 BF
               0A EF E2 C0  48 E1 AC C1  
               7B DA D5 C1  71 3D AA C1
               F1 14 78 C2  CD CC 7C C1
               B8 1E 9D C2  33 33 4F C1  
               A4 70 95 C2  C3 F5 B6 41  
               A9 33 5C C2  9A 99 C1 41  
               29 22 9F C1  8F C2 B3 41  
               68 14 4B 3E  E1 7A A2 41  <- 18
                                  
               55 3C 09 41  EC 51 D8 BF  
               2B 2B FE C0  48 E1 AC C1  
               83 A9 DC C1  71 3D AA C1  
               F8 0D 79 C2  CD CC 7C C1  
               B8 1E 9D C2  33 33 4F C1  
               A4 70 95 C2  C3 F5 B6 41  
               B0 2C 5D C2  9A 99 C1 41  
               31 F1 A5 C1  8F C2 B3 41  
               F0 1B 27 BF  E1 7A A2 41  <- 18
Last edited by nORb Dragon; 01.12.2021 at 01:42. Reason: Добавлено сообщение
#289
Re: Датамайнинг клиента игры
Замечательно. Плюнул, решил пока скипнуть этот набор байтов, проанализировать следующий набор байтов описания ffd... и... там находится нужная мне последовательность float-данных без всяких регистраций и смс! Хотя по всем индикаторам, я уже закончил анализ блока.

Спрашивается - а что тогда эта хрень делает в начале блока? Судя по e7herder, эти данные - "лишние детали". Ибо они не мелькают в его json-файле.
#290
Re: Датамайнинг клиента игры
Originally Posted by nORb Dragon:
Спрашивается - а что тогда эта хрень делает в начале блока?
its a trap!
#291
Re: Датамайнинг клиента игры
Всё. Мой конвертер полностью перегоняет Расу его scsp-файл в json-файлик для e7herder. Боюсь проверять на других персах, наверняка какая-нибудь хрень и там творится.
#292
Re: Датамайнинг клиента игры
Погонял, подрихтовал, вроде работает.

Вечером ещё погоняю, потесчу, уберу "служебные полотна с байтами" и наверное выложу сюда. Особо не жалко, ибо только со старым форматом оно у меня сейчас работает. А персонажи старого формата давно в дампе e7herder есть.

Так, вдруг кому в "образовательных целях" будет интересно. Вдруг кто любит чертыхаться и охреневать от гениальности разрабов э7, как они переложили json в свой гениальный структурированный формат scsp.

Ещё раз упомяну, что собрал "перегонщик в зад json" только для файлов из spine v2. После того, как убежусь, что он работает без сбоев, займусь раскуриванием формата из spine v3... Но после прочтения части доков и сравнивания у меня возникло подозрение, что возможно придётся ещё и e7herder допиливать напильником для поддержки "новых фич из v3".
#293
Re: Датамайнинг клиента игры
Тыкс. Задолбался. А ведь ещё надо воевать.

В общем, если вдрууууууууууууг кому нравится ковыряться со старьём (scsp под spine v2 иначе не назовёшь) и с чужим кодом, выкладываю ссылку на свой конвертер scsp в json (под формат e7herder). То есть данная версия конвертера рассчитана на работу с файлами, созданными до патча от 2021.06.10.

Проверялась работа конвертера только на содержимом папки portrait. Что будет, если попробовать конвертить scsp-файлы из других папок - не проверялось. Основная задача для данного конвертера - сборка json-файлов для просмотра портретов персонажей на e7herder-клонах.


Ссылка для скачивания - Epic7 scsp2json File Converter v.1.0 (~3.3mb)


Для использования нужен питон не ниже... хз какой версии, но думаю не ниже 3.6.

Запускать через командную строку вида:
Code:
python epic7_scsp2json.py [optional: options] <.scsp file for convert to json> <optional: filename for new .json file (result)>
Опции:
-minify - собирает минималистический json в одну длиннющую строку без переносов каретки и т.д. Без этой опции собирает "читабельный для глаз" json, где много переносов каретки и есть даже отступы для блоков.

-wtempfile - если указать эту опцию, то временный файл с распакованным scsp не будет удалён по завершении работы. Вдруг кто любит ковыряться?

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

Обязательно указывать хотя бы имя scsp-файла, который надо конвертнуть в .json. Имя файла для результата указывать необязательно. В случае, если его не указать, скрипт просто припишет к названию scsp-файла дополнительно ".json".

В архиве в папке examples есть несколько файлов для экспериментов.


Если будет давать ошибку, что не найден lz4:
Code:
python -m pip install --upgrade pip
pip install --upgrade setuptools
pip install wheel
pip install lz4
Если под виндой не захочет ставить lz4, то идём скачивать ms visual c++ build tools - https://visualstudio.microsoft.com/v...p-build-tools/
При установке тулсов выбираем только левый верхний пункт, где чего-то там про разработку классических приложений на c++.

После установки тулсов потребуется перезагрузка. После перезагрузки снова пытаемся установить lz4. Должно установиться.
Last edited by nORb Dragon; 02.12.2021 at 14:17.
#294
Re: Датамайнинг клиента игры
Ну, давно не обновлял потрошилку для data.pack. В принципе, особо обновлений и не требовала. Но всё равно решил обновить, частично подчистить код.

Ссылка для скачивания - Epic7Ripper v.2.7 (~11 kb)

Для использования нужен питон.

Запускать через команду:
Code:
python epic7ripper_v2_7.py [optional: options] <optional: folder for rip result>
Опции:
-wtempfile - если указать эту опцию, то временный файл с декодированным data.pack не будет удалён по завершении работы. Вдруг кто любит ковыряться? Найти его можно будет в таком случае в папке с результатом потрошения под именем data.pack.decoded

Для работы необходимо:
- наличие в папке со скриптом файла data.pack
- наличие свободного места не менее размера data.pack * 2

Допустим, если data.pack занимает 3 гб, то в идеале нужно свободного места в районе 6 гб. Первая половина нужна для хранения дешифрованного файла data.pack. Вторая половина - для хранения результатов потрошения data.pack (кучи файлов, в том числе png-картинок).

Результат работы скрипта будет сохранён в папку с указанным именем. Если имя папки не будет указано, то будет результат будет сохранён в папку с именем даты запуска скрипта (yyyymmdd).

Если папка существовала, то перед стартом работ скрипта она будет полностью очищена.


Алгоритм для работы с data.pack немножко пересмотрен: выкинут в окно код по работе над декодированием db-файлов (формат изменился с 2021.06.10, способ декодирования не найден).

Так как скрипт скурпулёзно просматривает побайтово всё содержимое data.pack, возможно вылавливание внезапных сюрпризов и "дублей" файлов (разные версии). Выяснить, который из этих "дублей" - последняя версия, а кто из них - "устаревший мусор", при подобном подходе к потрошению data.pack, довольно сложно. Поэтому было принято решение просто сохранять каждый файл отдельно, дописывая суффиксы вида (2), (3) и т.д. к имени файла согласно их фактическому расположению в data.pack.

Возможен вариант, что "самая свежая версия" файла носит не оригинальное наименование, а наименование с суффиксом... например - (3). Если будете активно работать с результатом датамайна и заметите наличие этих суффиксов в альтернативных версиях нужных вам файлов - будьте аккуратны при выборе, какой именно файл "окончательный". В случае с db-файлами можно предположить, что "чем больше файл по байтам - тем свежее". С картинками - сложнее.

Для "идеального" датамайна с минимальным количеством "мусора" и "дублей", лучше всего удалить полностью файл data.pack из папки игры на эмуляторе, после чего запустить клиент игры и пропатчеваться. Да, будет скорее всего долго (как установка игры с нуля, ~3gb патч), но оно того стоит, imho.
#295
Re: Датамайнинг клиента игры
Возвращаясь к старым новым добрым любимым воротам. И да, я не баран, а дракон. И не надо мне тут.

Специально выбрал самые короткие шифрованные фразы.
Code:
 no   | id?                  | wtf?                    |bytes| encoded str
      |                      |                         |count|
===================================================================================================================================
  832 |       09 09 38 33 30 | 1b 6b 00 00 46 79 7c fd |  24 | ea 6b 87 1b 70 33 56 ba ae 68 f1 29 42 f2 b4 f5 94 1e 5e b8 f1 d0 25 d3
  966 |       09 09 39 36 34 | 1b 6b 00 00 2d 3f 01 df |  24 | 66 57 43 4d cb 66 dc 20 01 8d 81 a6 c1 c2 dc 5e ee cf 2c 56 30 54 dd a7
  967 |       09 09 39 36 35 | 1b 6b 00 00 03 70 e7 a8 |  28 | f9 9d 39 7e 0d e9 c5 1f b9 f4 f3 90 dd a8 4e a8 7f 17 a8 49 27 c6 d8 d9 3f d2 30 17
 1035 |    09 09 31 30 33 33 | 1b 6b 00 00 06 d6 43 fe |  24 | a5 fe ea 65 44 83 bd e5 83 02 e7 05 38 bc 1d 3b 6e 44 6c 41 3f 3a fc 75
 1043 |    09 09 31 30 34 31 | 1b 6b 00 00 59 88 99 36 |  24 | ef 29 8a 0d 4c 17 d0 f0 be 79 85 04 ee c5 26 99 57 3f 5b 86 0e d5 a6 a7
 2648 |    09 09 32 36 34 36 | 1b 6b 00 00 96 3d 70 aa |  20 | 14 02 90 85 0f 94 f8 fb 09 84 92 be fe 8e 2b e2 e4 e7 fe c8
 3240 |    09 09 33 32 33 38 | 1b 6b 00 00 86 dd c9 1c |  24 | d7 7c e1 03 aa 93 a0 88 4e ef 25 16 6b dc 72 52 84 ec c1 6e 3b 82 4c 37
Предположительно соответствие зашифрованному (строки взял в кавычки, чтобы были нагляднее границы строки + "\x00" на местах "пробелов"):
Code:
 no   | string               | bytes| hex
      |                      | count|
===============================================================================
  832 | "sn_me  I "          |    9 | 73 6E 5F 6D 65 00 00 49 00
  966 | "sn_boy	 Boy "       |   12 | 73 6E 5F 62 6F 79 00 00 42 6F 79 00
  967 | "sn_girl  Girl "     |   14 | 73 6E 5F 67 69 72 6C 00 00 47 69 72 6C 00
 1035 | "sn_roy  Roy "       |   12 | 73 6E 5F 72 6F 79 00 00 52 6F 79 00
 1043 | "sn_leo  Leo "       |   12 | 73 6E 5F 6C 65 6F 00 00 4C 65 6F 00
 2648 | "go  Go "            |    7 | 67 6F 00 00 47 6F 00
 3240 | "con  Hit "          |    9 | 63 6F 6E 00 00 48 69 74 00
Ну? Есть у кого идеи, как можно шифрануть и/или запаковать сроки из второго блока, чтоб в итоге они как на дрожжах выросли в размере в 2-3 раза? Гении, одним словом. Размер того же text_en.db (все тексты локализации за исключением текстов сюжета и сториков) вырос с 8.3 мб до 11.2 мб в день патча 2021.06.10 (изменение формата для db-файлов).

Столбец "wtf?" - яхз используется при шифрации или нет. Но решил его выложить, вдруг у кого будут какие идеи, и этот столбец окажется ключевым. Иначе нахрена он в db-файле. Кстати, я глянул по нескольким другим файлам. Первые 4 байта этого столбца во всех проверенных файлах начинаются на "1b-6b-00-00", что бы это ни значило.

Столбец "id?" скорее всего бесполезен. Тупо нумерация строк в строковом представлении с двумя символами табуляции спереди (#09).
#296
Re: Датамайнинг клиента игры
Продолжаю делиться своим старьём.

Очередные мои скрипты на питоне, связанные с Epic7. На этот раз по конвертации epic7 db-файлов в csv-формат. Получившиеся файлы в csv-формате потом легко открываются/импортируются в MS Excel. Параметры: кодировка "utf-8", разделитель "символ табуляции", формат данных для ВСЕХ столбцов - "текст" (иначе могут получиться косяки в части ячеек, Excel любит автоматически превращать набор символов в дату и т.д. т.п.).

Как обычно, предупреждаю: работать будет только с файлами, выпущенными ДО патча от 2021.06.10. Начиная с упомянутого патча в db-файлах зашифрована каждая отдельно взятая строка данных таблицы. Понимания, как оно зашифровано, у меня всё ещё не возникло. Ну, в посте выше я вам дал несколько примеров с чёткой состыковкой "должно быть <-> сейчас".


Ссылка для скачивания - Epic7 db2csv File Converter v.1.0 (~16 mb)

Относительно большой размер архива из-за приложенных файлов для тестирования. Сами скрипты без "примерочных файлов" весят копейки.


Для использования нужен питон.

Запускать через команду:
Code:
python epic7_db2csv.py [optional: options] <.db file for convert to csv> <optional: filename for new .csv file (result)>
Опции:
-key - если указать эту опцию, то будет создан отдельный файл с расширением .key, содержащий подобранный скриптом ключ к первичной дешифровке db-файла
-wtempfile - если указать эту опцию, то временный файл с декодированным .db не будет удалён по завершении работы. Вдруг кто любит ковыряться? Найти его можно будет в таком случае с расширением .db.decoded

Обязательно указывать хотя бы имя db-файла, который надо конвертнуть в .csv. Имя файла для результата указывать необязательно. В случае, если его не указать, скрипт просто припишет к названию db-файла дополнительно ".csv".

В архиве в папке examples есть несколько файлов для экспериментов. В папке 20210527 находятся файлы, которые были созданы до пресловутого патча. В папке 20210610 [no algorithm for that] - собстно файлы, которые находились в клиенте игры с этой знаменательной даты.


Если кто в теме, как раскуривать db-файлы в новом формате: буду не против услышать от вас об этом поподробнее. Можно как здесь (в личку?), так и на реддите ( /u/nORbDragon ).
#297
Re: Датамайнинг клиента игры
Подправил прикреплённый пост. Чтоб нагляднее было. Ну и вписал "крик души" для тех, кому возможно тупо лень регистрироваться на гохе.


Следующее, что сюда выложу... это будут очередные скрипты на питоне. Теперь на тему потрошения звуковых пакетов .bank, где у epic7 хранится музыка, озвучка персонажей, звуковые эффекты и т.д. На основе поста из этой же темки - https://forums.goha.ru/showthread.ph...#post158649085

Только сразу предупрежу, что они будут работать только под виндой. Половина скрипта - запуск приложенных к скрипту exe-файлов с нужными параметрами.
#298
Re: Датамайнинг клиента игры
Если кто здесь таки скачивал до момента "сейчас" потрошилку data.pack из поста выше ( https://forums.goha.ru/showthread.ph...#post159273387 ), лучше перекачайте эти 11 кб. Мелкий "хот-фикс", недостойный отдельной минорной версии.
#299
Re: Датамайнинг клиента игры
Продолжаю. Очередные мои скрипты на питоне. Как и упоминал выше, на этот раз по потрошению bank-файлов.

В принципе, можно и ручками это делать согласно уже расписанному в этой темке. Но ведь можно и автоматизировать? Переработал свои старые наброски в "экспортный вариант".

По техническим причинам (использование exe-файлов) работать данный скрипт будет только под Windows!


Ссылка для скачивания - Epic7 Debank v.1.0 (~9 mb)

Относительно большой размер архива из-за необходимости использовать quickbms.exe и fsb_aud_extr.exe. Они уже там, в архиве. Сами скрипты без "субподрядчиков" весят копейки.


Для использования нужен питон.

Запускать через команду:
Code:
python epic7_debank.py

Перед запуском не забываем закинуть bank-файлы в папку input, которые вы бы хотели распотрошить. Скрипт смотрит только на файлы, по вложенным папкам внутри input он искать не будет.

Результат работы вы найдёте в папке result (будет создана автоматически, если у вас её нет).


Ну и напоследок отвечу сразу на вероятный вопрос.
[В]: Где находятся bank-файлы Epic7 с музыкой, звуковыми эффектами и озвучкой?
[О]: Не знаю, как на устройствах "яблочной" продукции, но на андроидных (сужу по эмулятору) открываем файловый менеджер и идём по маршруту:
[Android] > [data] > [com.stove.epic7.google] > [files] > [data.unpacked] > [sound]
В этой папке находятся bank-файлы игры с музыкой (bgm) и звуковыми эффектами + вложенная папка с пакетом озвучки персонажей (папка "ko" - корейская озвучка).

И ещё. На закуску. Раз уж Смайлгейты решили громко заявить о том, что они выложили часть треков игры в спотифай, ютуб и т.д., не буду выделяться из толпы. Выкину тоже чуть-чуть wav-файлов.

В браузере у вас их скорее всего не откроет, придётся скачивать и только потом слушать. Но никто не мешает вам их конвертнуть в mp3 самостоятельно?
Lobby - ссылка
Adin's Theme - ссылка
Belian's Theme - ссылка
Belian's Theme (Battle) - ссылка
Ervalen's Theme - ссылка
Kawerik's Theme - ссылка
Lilias's Theme (Base) - ссылка
Lilias's Theme (Battle) - ссылка
Mort's Theme - ссылка
Politis's Theme - ссылка
Ran's Theme - ссылка
Solitaria's Theme - ссылка
Straze's Theme - ссылка
Tiwig's Theme - ссылка
Zahhak's Theme - ссылка
#300
Re: Датамайнинг клиента игры
Originally Posted by nORb Dragon:
Tiwig's Theme - ссылка
хм... а это случаем не новинка?