3. Я бы посмотрел на бенчмарки (RPS) Только что протестировал на ноуте (проц: i7 7700hq): 1) Запустил "пустышку" - TCP сервер, который отправляет обратно полученные пакеты. 2) Прокси с 2 обработчиками (для входящего и исходящего трафика). 3) TCP клиент для генерации трафика. Если учитывать трафик, который шел через прокси в обе стороны, то суммарно обрабатывалось примерно до 155 000 пакетов в секунду. P. S. Естественно, что в "боевых" условиях это значение будет меньше из-за большего количества обработчиков и их более сложной логики.
Хорошая тема, полезная. Были уже попытки донести до людей полезные инструменты, но тут также важен порог входа. JS простой - и это хорошо. Немного критики: 1. Не увидел взаимодействия с isec/osec. Ставим прокси = забываем про шифрование? 2. Нужен сериализатор. Те же gs'ные пакеты имеют все один тип - 0x22, а внутри него уже настоящие "подтипы". Без знания о настоящих подтипах фильтровать/блочить будет бессмысленно. 3. Я бы посмотрел на бенчмарки (RPS) Критика очень приветствуется :) 1) На данный момент да, это не реализовано. Но с другой стороны это увеличит нагрузку, так как данные надо будет расшифровать, проверить, а потом зашифровать обратно. 2) Думаю, что это можно будет реализовать в виде обработчиков. Буду очень благодарен за любую информацию о пакете 0x22 :) 3) Я бы тоже хотел посмотреть, но, к сожалению, на это не хватило вчера времени. В ближайшее время сделаю тесты. На сколько я знаю, то на данный момент Node.js - самое быстрое, что есть среди интерпретируемых решений. Быстрее Node.js только уже что-то компилируемое. --- добавлено: 20 ноя 2017 в 13:53 --- Можно объединить сразу: TradeStart | 0xFA1 AddFriend | 0xCA 1) Дропает все пакеты TradeStart 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketTradeStart({ mode: 'drop' }); // Какой-то код ... 2) Дропает пакаты TradeStart, если их количество за единицу времени превышает допустимое значение (задается в конфиге). 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketTradeStart({ mode: 'limit', limitModeOptions: { // Максимальное количество пакетов в секунду frequency: 10 } }); // Какой-то код ... --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3) Дропает все пакеты AddFriend 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketAddFriend({ mode: 'drop' }); // Какой-то код ... 4) Дропает пакаты AddFriend, если их количество за единицу времени превышает допустимое значение (задается в конфиге). 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketAddFriend({ mode: 'limit', limitModeOptions: { // Максимальное количество пакетов в секунду frequency: 10 } }); // Какой-то код ... Спасибо, вечером добавлю :)
Дополнение к предыдущей теме - http://mmorpg-devs.ru/threads/free-pw-game-services-proxy.20065/ Эта тема, в отличии от предыдущей, нацелена не на разработчиков, а уже на администраторов серверов. Здесь (по мере возможностей) я буду бесплатно выкладывать готовые реализации обработчиков для Game services proxy различных фиксов, "плюшек" и т. д. , которые будут собраны вместе в одной библиотеке. Сорцы - https://github.com/mvcbox/node-pw-service-proxy-handlers (Для использование решений, которые здесь описаны, вам необходимо выполнить установку Game services proxy, которая подробно описана в вышеуказанной теме). Приветствуются предложения и пожелания. P. S. Если возникли проблемы с установкой Proxy или использованием готовых решений - обращайтесь в личные сообщения. 1) validatePacketGetSavedMsg В этом обработчике реализован фикс проблемы с пакетом GetSavedMsg, которая описана в этой теме - http://mmorpg-devs.ru/threads/Шара-Фикс-доса-трафиком.19288/ Возможны 2 варианта поведения: 1) Дропает все пакеты GetSavedMsg 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketGetSavedMsg({ mode: 'drop' }); // Какой-то код ... 2) Дропает пакаты GetSavedMsg, если их количество за единицу времени превышает допустимое значение (задается в конфиге). 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketGetSavedMsg({ mode: 'limit', limitModeOptions: { // Максимальное количество пакетов в секунду frequency: 10 } }); // Какой-то код ... ---------------------------------------------------------------------------------------------------------------------------- 2) validatePacketCreateRole Этот обработчик проверяет корректность пола для оборотня и друида при создании персонажа. Подходит для любой версии сервера. 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validatePacketCreateRole(); // Какой-то код ... Использовать для проверки пакетов, которые идут от glinkd к gdeliveryd. ---------------------------------------------------------------------------------------------------------------------------- 3) validateChat Этот обработчик контролирует количество сообщений игрока за единицу времени. Позволяет избавиться от OOG флуда из-за которого у игроков виснет клиент. Если игрок отправляет больше count сообщений за время time, то все последующие его сообщения будут дропаться. Подходит для любой версии сервера. 'use strict'; // Какой-то код ... const handlers = require('pw-service-proxy-handlers'); let handler = handlers.validateChat({ count: 2, // количество сообщений time: 1000 // миллисекунды }); // Какой-то код ... Использовать для проверки пакетов, которые идут от glinkd к остальным сервисам. ---------------------------------------------------------------------------------------------------------------------------- 4) frequencyControl Универсальный обработчик, который предназначен для контроля количества пакетов за единицу времени: 0x4F: 'PublicChat', 0x12C3: 'FactionChat', 0x60: 'PrivateChat', 0xE3: 'ChatRoomSpeak', 0xFA1: 'TradeStart', 0xCA: 'AddFriend', 0хDD: 'ChatRoomInvite' Использовать для проверки пакетов, которые идут от glinkd к остальным сервисам.
Поздравляю с релизом! Спасибо конечно, но я бы это не назвал релизом :D Там меньше 200 строк кода, которые написаны спонтанно после того, как я решил поностальгировать и поиграть на одном старом сервере, где меня хорошо "встретили" местные OOG'шники :D
Запилил на досуге Proxy для сервисов сервера. Proxy позволит следить за всеми пакетами, которые передаются между сервисами и (при необходимости) их модифицировать, дропать или же использовать кастомные обработчики для определенных пакетов. Область применения самая разнообразная - от банального мгновенного автобана за мат и до фиксов различных уязвимостей, которые можно решить "валидацией" пакетов (создание оборов/друлей с женским/мужским полом, OOG флуд в чат из-за которого у игроков виснет клиент, и т. д.), что особо актуально для владельцев серверов старых версий. Или же можно использовать для отладки - реализовать обработчик, который бы сохранял последние N пакетов пришедших к GS перед падением, чтобы потом среди них искать "виновника" и потом запилить фикс. Также можно реализовать различные свистоперделки для сервера, начиная от, к примеру, вывода игрового чата на сайте и заканчивая какой-то сложной логикой. К примеру, можно реализовать что-то вроде автоматизированной "викторины" для игроков - в системный чат в рандомное время писать вопросы и ждать ответ в мировой чат. Первому, кто правильно ответил, присылать определенное вознаграждение. Все лишь ограничивается фантазией администратора сервера и возможностью реализации идеи на пакетном уровне. Установка: 1) Сначала на сервер необходимо установить Node.js и NPM https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04 2) Далее выполняем команды: sudo npm install -g n sudo n latest sudo npm install -g npm sudo npm install -g pm2 3) Далее в любом удобном месте создаем директорию "proxy", где будут лежать все наши файлы. Я бы создал ее прямо в директории с сервером. Переходим в директорию "proxy" и выполняем команды: npm install pw-service-proxy npm install pw-service-proxy-handlers После всех этих действий у вас будет готово окружение для запуска proxy. Пример использования: Для примера сделаем Proxy для gamedbd с выводом в консоль всех пакетов, которых приходят и уходят. 1) Переходим в директорию gamedbd и открываем файл gamesys.conf 2) В секции [GameDBServer] меняем значение для port из 29400 на 39400 3) Переходим в созданную нами директорию proxy 4) Создаем файл gamedbd-proxy.js и копируем в него следующий код: 'use strict'; const PwServiceProxy = require('pw-service-proxy'); const handlers = require('pw-service-proxy-handlers'); let proxy = new PwServiceProxy; proxy.setServerHandlers([ handlers.consolePacketLogger({ title: '------------------- GameDB => Client -------------------' }) ]).setClientHandlers([ handlers.consolePacketLogger({ title: '------------------- Client => GameDB -------------------' }) ]).start({ listen: { host: '127.0.0.1', port: 29400 }, connect: { host: '127.0.0.1', port: 39400 } }); 5) Далее запускаем Proxy командой: node ./gamedbd-proxy.js 6) Запускаем сервер игры. Далее просто наблюдаете за Proxy. В консоли будет что-то подобное: [IMG] (Client - другой сервис, который установил соединение с GameDB) Подобным образом можно поступить и с остальными сервисами (кроме glinkd) Сорцы - https://github.com/mvcbox/node-pw-service-proxy P. S. Хочу еще раз напомнить, что это не какой-то уже готовый античит с фиксом всех багов, а инструмент, на базе которого можно много чего реализовать. Многие могут спросить - зачем это надо, если есть другие подобные решения? Ответ: 1) Это бесплатно. 2) Простота - все написано на JS, что позволит самостоятельно попытаться написать свои обработчики для Proxy, или же найти того, кто сделает это относительно недорого. Инфу о пакетах можно найти здесь - http://pwdev.ru/ Благодарю за внимание :)
permission denied как бы намекает :) Я не знаю как права выдать,не подскажешь в чем проблема ? https://ru.wikipedia.org/wiki/Chmod https://ru.wikipedia.org/wiki/Chown
permission denied как бы намекает :)
Портфолио где?) [IMG]
info : GameDBServer::OnAddSession, sid=11. TRACE : GetRoleData, roleid=1024,sid=11 info : GameDBServer::OnAddSession, sid=12. info : GameDBServer::OnDelSession, sid=11. debug : Protocol(type=8002,size=6250) Decode Error. info : GameDBServer::OnDelSession, sid=12. Сервер 1.5.3. Вангую, что в 1.5.3 изменилась структура :)
Ответь в лс пожалуйста,а ту я так понимаю им по кайфу меня обсуждать а помочь никто не желает Скайп такой же, как и ник здесь :) Подобное решение я уже пилил, но для другой сферы. Чтобы портировать его под PW - надо ознакомиться с протоколом этой игры. А заниматься этим бесплатно - лень. Возможно тебе будет быстрее и дешевле обратиться к тому, у кого подобный софт уже поставлен "на конвейер" :)
Если у тебя есть защита или знаешь кто сможет помочь скажи примерную цену Можно "на коленке" собрать универсальный TCP Proxy (с набором правил, на пример, в JSON файлике), чтобы мониторить то, что приходит от юзера. Все очень просто. Если то, что приходит от юзера, подходит под определенное правило (на пример - слишком часто прилетает определенный пакет) - устраиваем этому юзеру анальную кару в виде бана чара и/или IP.
лучше подскажите у кого реально можно купить защиту от оог бота Смотря сколько есть денег :)
2014-2016 года с доната поимел в районе 420к <offtop> 420к за 3 года, или же примерно 11,7к в месяц. И это без учета расходов на поддержку сервера Оно того стоит? Не проще ли за 3 года найти нормальную работу? </offtop> --- добавлено: 28 мар 2017 в 08:45 --- 2014-2016 года с доната поимел в районе 420к Расходы 60 евро в месяц (минималка) за аренду * 36 ~= 150к рублей за три года В сухом остатке 90к за год ~ 7к в месяц чистой прибыли. Вообще не мотивирует. Опередил :(
Доброго вечера. Вот пример вызова одной из функций: [IMG] Второй день не могу разобраться что необходимо записать на место "00006F69" чтобы можно было правильно вызвать любую-другую функцию. P/S/ Заранее извиняюсь, если я указал не тот раздел Вместо 00006F69 ты указываешь адрес (в сегменте кода, то есть по сути это смещение относительно CS) функции (начало инструкций), которую ты хочешь вызвать. CALL по сути является аналогом двух инструкций: PUSH EIP и JMP адрес_функции. А RET в конце функции - POP tmp и JMP tmp. P. S. В ассемблере не особо силен, так что вдруг чего пусть знающие поправят :)
Спасибо за поддержку, в случае вопросов - обращусь. лучше сразу обратись к Джо - сэкономишь кучу времени и просто пообщаешься с опытным программистом Чуть позже, пока лёгкие основы вывожу) --- добавлено: 27 фев 2017 в 15:18 --- А вот и начало основной работы. Решил не мучить себя в будущем, а сразу делать с нормальным стилем в золотой гамме. [IMG] Если есть желание - запили репозиторий на GitHub или BitBucket. Все желающие могли бы следить за прогрессом :)
Я прошу прощения уважаемый, но вы судя по всему сами мало понимаете в верстке, может в php вы и гуру, но ссылаться на валидатор который до сих пор работает на 70% по стандарту web 2.0 по меньшей мере глупо. Возьмите любой современный профессиональный темплейт, и проверьте его на этом валидаторе. Думаю вы будете очень удивлены. Открываем, к примеру, https://wrapbootstrap.com/ и берем несколько рандомных шаблонов: 1) https://wrapbootstrap.com/theme/inspinia-responsive-admin-theme-WB0R5L90S Валидатор - https://validator.w3.org/nu/?doc=http%3A%2F%2Fwebapplayers.com%2Finspinia_admin-v2.7%2F 2) https://wrapbootstrap.com/theme/unify-responsive-website-template-WB0412697 Валидатор - https://validator.w3.org/nu/?doc=https%3A%2F%2Fhtmlstream.com%2Fpreview%2Funify-v1.9.7%2Fintro.html 3) https://wrapbootstrap.com/theme/smarty-website-admin-rtl-WB02DSN1B Валидатор - https://validator.w3.org/nu/?doc=http%3A%2F%2Ftheme.stepofweb.com%2FSmarty%2Fv1.1.5%2FHTML%2Fstart.html "Худший" результат - всего 3 предупреждения (даже не ошибки) у первого шаблона. А теперь опять смотрим на красную "портянку" с анализом Вашего сайта: https://validator.w3.org/nu/?doc=http%3A%2F%2Fwww.vortexweb.net%2F Во вторых если вы указываете на скриен на путь подключений файлов, учитесь понимать когда header на обычной html странице выносится отдельно в папку modules например или в 2 папки от корня, и какие пути должны быть когда он подключается по средствам echo или include это уж вы точно должны понимать. Так что прежде чем кого либо обвинять в неверности верстки, немного анализируйте факты. На скрине я указываю на подключение JS в начале страницы. Ах да, к недостаткам еще отнесу подключение кучи JS и CSS вместо всего 1 JS и 1 CSS. Grunt / Gulp (на выбор) Вам в помощь. Так что процитирую еще раз свою фразу: Не знаю кто это, но им бы для начала не помешало научиться верстать.
http://pastebin.com/Dqg0yUxc Все очень плохо.
И так всем привет ребята, меня зовут Дастан, я веб-программист, оказываю услуги по разработке личного кабинета для игровых проектов. Цена зависит от ТЗ, в качестве гарантии готов предоставить персональный аттестат WebMoney. Принимаю оплату: Карта, QIWI, WMR. Данные для связи: https://vk.com/id385829693 Оплата после того, как вы проверите на соответствие вашим требованиям Можно увидеть примеры Вашего кода?
1) [IMG] [IMG] 2) [IMG] [IMG] [IMG] Лицо не треснет от 26-кратной наценки?
Дисковое пространство: 1000 Мб Количество сайтов: 1 сайт Количество дополнительных FTP: 1 аккаунт Количество баз данных MySQL: 1 база Количество доменов и поддоменов: ∞ Максимальное количество файлов: 25 000 Разрешённая нагрузка (CP): 10 Халявный VPS от амазона на год - для слабаков? http://www.argolab.net/vps-amazon.html (Вместо винды, естественно, выбираем ваш любимый дистрибутив линукс) После заказа вы спросите где взять домен на халяву но что бы небыл он типо wix.ru проще говоря не 3ий уровень домена, а нормальный я предлагаю .tk Домен .com можно купить за 69 рублей - https://ru.godaddy.com Продление домена, естественно, совсем другая история, но если сайт будет приносить деньги, то можно раз в год выделить некоторую сумму на продление домена. В итоге: первый год поддержки сайта нам обходится всего 69 рублей. P. S. Никто нам не мешает через год на амазоне зарегистрировать новый аккаунт.
Имена участников (разделяйте запятой).