Вернулся я тут к давнешней затее (хотел лет 5 назад, но тогда руки не дошли сесть и разобраться) сделать свой (на C#) минималистичный парсер реплеев (минимум данных, состав команды, нанесенный дамаг, чат и по мелочи), но столкнулся с непониманием как это работает.
Сперва распишу, что понял:
Понял как распарсить файл реплеев, вытянуть незашифрованный json, распаковать и раскодировать остальное до получения отдельных NetPacket. Структура пакетов более менее понятна благодаря Monstrofil и его описанию. А вот дальнейшее, как парсить содержимое пакетов - темный лес.
Опытным путем, по сигнатурам нашел и понял как распарсить пакеты (по определенным messageID) содержащие нанесенный урон, кто кому и сколько, кто кого уничтожил ну и чат.
Просто брал данные из генерируемого replays_unpack json и искал их в пакетах, так нашел пакеты в которых содержится нанесенный урон, пакеты сождержащие информацию кто-кого убил нашел аналолгичным способом. Пакеты содержащие сообщения чата практически случайно сам.
Собственно это практически половина того, что мне надо.
Но вот мне не понятно, в частности, как распарсить пакет содержащий начальные данные о составе команд (для версии 12.7 это 0x8 с messageID 130). В hex редакторе нахожу раздельно все что мне надо, но цельную структуру файла понять не могу.
Исходник replays_unpack я смотрел, кое что оттуда подчеркнул, но python знаю плохо и там все сложно и запутано.
В частности вообще не могу понять взаимосвязь между .xml,.def файлами и пакетами и тем более как ими пользоваться.
Так же не могу понять как, например, replays_unpack парсит то, что я уже сам разобрался как получить, например кто кому и сколько нанес дамага или кто кого убил, ведь я там не нашел какой бы то нибыло привязки к messageID (или плохо искал?).
Я видимо не понял какой-то базовый принцип.
Прошу вкратце, но с какой-то конкретикой разъяснить принцип. По сути меня интересует только вышеупомянутый пакет с базовыми настройками боя.
Прикреплю его дамп (взят из случайного реплея, принятого как исходный для разбора) к сообщению, вдруг пригодится.
P.S. WoWS-ReplaysUnpack я видел и смотрел, но знаний C# и способности разбираться в чужом коде не хватает для понимая базового принципа завязанного на .xml и .def файлах.
08_130