Jump to content
Korean Random
Dragon armor

Мод "Эмулятор сервера World of Tanks".

Recommended Posts

@DrWeb7_1  Пока что не знаю. Но при этом снаружи-то ничего и не должно измениться. А может и должно. Вот например, надо loginapp выносить в питон? Это потянет БД за собой туда же. Или надо интерфейс взаимодействия делать.

Вчера попробовал простой тест провести. Сделал бесконечный цикл отправки сообщения ping на сервер. Не успевает обрабатываться, использование памяти выросло до 600 мб и продолжило бы расти. Как только прервал отправку, достаточно быстро всё дообрабатывалось и отправилось. Интересно, а как у картохи дела с этим обстоят? Какая защита от подобных действий?

Edited by Dragon armor

Share this post


Link to post

Short link
Share on other sites
1 час назад, Dragon armor сказал:

Интересно, а как у картохи дела с этим обстоят? Какая защита от подобных действий?

Звучит, конечно, глупо, но может они как-то определяют дублирующиеся пакеты и отсекают их на подлёте? Не это ли называют SYN-флудом?

Share this post


Link to post

Short link
Share on other sites
29 минут назад, DrWeb7_1 сказал:

они как-то определяют дублирующиеся пакеты и отсекают их на подлёте?

Так можно не дублирующие пакеты делать. Пинг - очень простой пакет на 12 байт, который, тем не менее, проходит все стадии парсинга пакетов. Кстати, картоха изменила немного сетевой протокол. По крайней мере, не шифрованные пакеты (тот же пинг) теперь в начале дополняются четырьмя байтами. Похоже, это контрольная сумма, но не банальный crc32 (он просто не подошёл). Хотел тут посмотреть, что за пакет probe такой, а не вышло. Можно, к слову сказать, из клиента отправить и снифером захватить. Не знаю, остался ли функционал, в 0.9.* есть такая функция BigWorld.probe с двумя параметрами, последний - колбек ("argument 2 must be callable"), подозреваю, аналогично колбеку login, который зовётся BigWorld.connect, третий параметр def __serverResponseHandler(self, stage, status, responseDataJSON). Вызываться должен до логина. Ни разу мне в дамп не попал, зачем нужен - не понятно. Ради интереса попробую.

В общем, мой сервер можно будет уронить банальной отправкой кучи сообщений ping. Ну и ладно.

Share this post


Link to post

Short link
Share on other sites
40 минут назад, Dragon armor сказал:

но не банальный crc32

Adler32? Его я встречал в лончере, такой вид к/с применяется для проверки целостности.

Share this post


Link to post

Short link
Share on other sites
45 минут назад, Dragon armor сказал:

но не банальный crc32

 

У CRC32 есть образующий полином, с которого начинается xor. Этот полином можно и нужно менять при юзании CRC32 для внутренних нужд.

Share this post


Link to post

Short link
Share on other sites
4 часа назад, StranikS_Scan сказал:

 

У CRC32 есть образующий полином, с которого начинается xor. Этот полином можно и нужно менять при юзании CRC32 для внутренних нужд.

Хорошая идея думаю это тоже можно затестить

Share this post


Link to post

Short link
Share on other sites

У меня на днях файловая система жёсткого диска развалилась, потихоньку восстанавливаю данные. Добрался до клиента 0.9.22.0.1 с твоим эмулятором. Вроде бы последовательно распаковал все архивы, которые у меня были, но что-то не даёт запуститься.

 

image.png.2859075e86b46727788f3175bf3809c3.png

Edited by DrWeb7_1

Share this post


Link to post

Short link
Share on other sites

UPD: запустил из-под виртуалки, где чудом сохранились все параметры. Вошёл в бой, через несколько минут упало.

image.png.e11a34cd3387e77ec5655ad504626de7.png

Share this post


Link to post

Short link
Share on other sites

@DrWeb7_1 Да брось пока что. Толку-то от того эмуля? Надо нормально этот протестировать и поделюсь с тобой. Только надо, так думаю, ещё и питоновые скрипты переписывать. Если loginapp можно полностью в эмуле оставить, то baseapp неплохо бы частично перенести в питон, а cellapp тем более там должен быть. Плюс, в скриптах там такой ужас сейчас. Надо порядок навести. Сетевая часть оказалась ну очень сложной. BigWorld сделали, по сути, свою реализацию TCP, только с полным контролем.

С probe так нечего не получилось. Актуальный клиент отказывается его отправлять. Хотел посмотреть, как формируется контрольная сумма, надолго задумалась программа, очень похожая на Ida при анализе бинарника, мне надо было уйти, перевёл компьютер в спящий режим. А по возвращению он из спящего режима не вышел, ожили куллеры, диски, но никакой реакции не было, и, что очень странно, ни на кнопку перезагрузки, ни на зажимание кнопки питания. Пришлось выключить, а когда включил, получил сообщение от биоса, что POST не пройден и предложение выбрать настройки по умолчанию. Впервые подобное произошло. Ну его, этот бинарник.

@DrWeb7_1 Там, похоже, стандартные питоновые скрипты не найдены.

Share this post


Link to post

Short link
Share on other sites
2 минуты назад, Dragon armor сказал:

Да брось пока что. Толку-то от того эмуля?

То есть, я на данный момент свободен?

3 минуты назад, Dragon armor сказал:

Хотел посмотреть, как формируется контрольная сумма, надолго задумалась программа, очень похожая на Ida при анализе бинарника, мне надо было уйти, перевёл компьютер в спящий режим.

OllyDbg такое творить не может, если это она.

Share this post


Link to post

Short link
Share on other sites
4 минуты назад, DrWeb7_1 сказал:

То есть, я на данный момент свободен?

:blink: А ты всё это время тестировал эмуль?

5 минут назад, DrWeb7_1 сказал:

OllyDbg такое творить не может

Статический анализ, не отладчик. Не знаю, что произошло.

Share this post


Link to post

Short link
Share on other sites
1 минуту назад, Dragon armor сказал:

А ты всё это время тестировал эмуль?

Я просто ожидал ещё какую-то пачку задач от тебя, над которой можно было бы голову поломать. :smile:

Share this post


Link to post

Short link
Share on other sites
Только что, DrWeb7_1 сказал:

Я просто ожидал ещё какую-то пачку задач от тебя, над которой можно было бы голову поломать.

Вообще, есть. Кроме этого, несколько человек просили меня эмулем поделиться, на что им писал, что нечего показывать ещё. Ведь нечего же? Запустить только да в ангаре покрутить танк. Ну в бой, даже не так, "в бой" выйти можно. И всё.

А что нужно, это со скриптами разобраться. Если ты смотрел, там огромные бинарные данные есть, которые передаются на отправку. Это то, что, по-хорошему, надо бы разобрать и выяснить, как подобное сформировать. Там используется дамп трафика из моего личного аккаунта. Просто скопировал как массив 16-ричных данных, чтобы работало. Есть ещё в технике непонятное, там надо клиенту отправить список всех частей, из каких состоит танк (почему сам клиент не может взять их, непонятно). У меня, вроде бы, просто забиты вручную эти данные. Ну и куча всего по скриптам.

Share this post


Link to post

Short link
Share on other sites
8 минут назад, Dragon armor сказал:

Ведь нечего же?

Да, нечего ещё.

9 минут назад, Dragon armor сказал:

Есть ещё в технике непонятное, там надо клиенту отправить список всех частей, из каких состоит танк (почему сам клиент не может взять их, непонятно).

Это в ангаре, я правильно понял? Клиент ожидает получение данных об ангаре с сервера, какая в нём техника и какие в него комплектующие установлены?

Share this post


Link to post

Short link
Share on other sites
11 минут назад, DrWeb7_1 сказал:

Клиент ожидает получение данных об ангаре с сервера, какая в нём техника и какие в него комплектующие установлены?

Вообще обо всей доступной технике. У меня скрины были вот такие

 

 


shot_028.thumb.jpg.d65a802205cedb02e313129f1a3f125e.jpg
 

 

У клиента нет нужного списка модулей, в логах игры экзепшн с ошибкой об отсутствующем элементе.

И такой объём данных обо всём гоняется постоянно. А потом удивляемся, что это ангар так долго грузится. Это не ангар, это ожидание по сети всех данных.

Вон как у меня сейчас сделано. Очень плохо.

Функция Get_Vehicle в Client.

v_nation = nations.INDICES['germany']

v_id = 190 # 240 F97_ELC_EVEN_90 #190 WE100

 

И закомментированного полно. Мои прошлые попытки.

Кстати, попробуй в эмуле выбрать технику из исследований. Зависнет или что будет?

Edited by Dragon armor

Share this post


Link to post

Short link
Share on other sites
8 минут назад, Dragon armor сказал:

Функция Get_Vehicle в Client.

Это оно берёт десятеричные ID каждого танка?

Share this post


Link to post

Short link
Share on other sites
Только что, DrWeb7_1 сказал:

Это оно берёт десятеричные ID каждого танка?

Не, сейчас там просто забиты данные. Посмотри, как __vehicle формируется.

Надо разбираться, что у меня там. Не помню уже. По-хорошему, надо сделать список доступной техники и формировать для него нужный массив данных. У вафли нет модулей, поэтому там легко всё сделать. Можешь сам поиграться со значениями, добавить другую технику, 268/5 например. Не заменить, а ещё одну добавить.

Тебе скинуть, что сервер шлёт клиенту после логина? Почти 700кб данных. О технике, экипаже, имуществе и прочему. cPickle питоновый.

Share this post


Link to post

Short link
Share on other sites
18 минут назад, Dragon armor сказал:

Тебе скинуть, что сервер шлёт клиенту после логина?

Если хочешь. Главное, чтобы я смог понять составляющие. :swt3:

Share this post


Link to post

Short link
Share on other sites

any major updates?

also, i can assist in any (most) c++ things. i've studied up on the language and have a sturdy understanding of it. if possible to get the project, that'd be great. I also have a really really fat book/guide on c++ coding for reference (in this topic)

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...