<html><head><body>
Master Carlin:
<br>
Welcome to Cedric's Training Hall. I will be teaching you the basics of combat.
<br>
Please click on <font color="LEVEL">Quest</font>, in your Chat window.
<br>
<a action="bypass -h quest_accept?quest_id=201">Quest</a>
</body></html>
<html><head><body>
Grand Master Roien:
<br>
Welcome. I am Grand Master Roien, of Cedric's Training Hall.
<br>
This school was established by the renowned Paladin Sir Cedric, loyal subject of King Raoul the Unifier, to train young Fighters. One day, perhaps, in your travels you will be able to meet Sir Cedric, whom I have the honor to call my uncle, in the Kingdom of Aden.
<br>
<a action="bypass -h talk_select">Quest</a>
</body></html>
В принципе нет разницы в том как они передаются на сервер. Разница есть только в том как байпасы будут использоваться для определенного NPC. Так что нужно смотреть код для AI (скрипты для ПТС) где все это обрабатывается.В чем разница параметров bypass talk_select и quest_accept ?
Не нужно сканировать. Когда генерируеться HTML, сервер должен запомнить все линки или байпасы которые были сгенерированны и ассоциировать их с определенным NPC . То есть когда байпасс (ну тот же линк) пройдет на сервер, сервер сможет понять что стаким байпасом делать и какому NPC это все отправлять. В L2J байпасы обычно выглядят по шаблону npc_<objectId>_bypass, то есть каждый байпас имеет приставку с уникальным id для NPC. Но это всего лишь один вид проверки.Правильно ли я понимаю, что принимаю команду talk_select я сканирую окружение игрока. И если npc рядом есть то я вызываю его AI?
Я сначала думал где информация о том с кем я веду общение. Думал будет что-то bypass talk_select?npcId=7008
Но байпасс можно подменить. По мне так логика сканировать окружение имеет место быть, как считаете? Вопрос в том все ли NPC находятся далеко друг от друга? Нет ли в мире л2 вплотную стоящих NPC?Не нужно сканировать. Когда генерируеться HTML, сервер должен запомнить все линки или байпасы которые были сгенерированны и ассоциировать их с определенным NPC . То есть когда байпасс (ну тот же линк) пройдет на сервер, сервер сможет понять что стаким байпасом делать и какому NPC это все отправлять. В L2J байпасы обычно выглядят по шаблону npc_<objectId>_bypass, то есть каждый байпас имеет приставку с уникальным id для NPC. Но это всего лишь один вид проверки.
В большинстве случаев у нас всегда будут NPC при показании какой-либо HTML. Иногда такой информации просто нет, например при работе с административными командами. Поэтому нужно тоже определить как и в таком случае обрабатывать байпасы на сервере.
Ну подменили байпасс. Что с того? Какой байпасс НПЦу можно прислать невалидно так, чтобы он что-то сделал? Если там конечно какой-то кастомный НПЦ, который итемы выдает, принимая аргументы в виде циферок из рандомных байпассов, но тут уже сам себе злобный Буратино.Но байпасс можно подменить. По мне так логика сканировать окружение имеет место быть, как считаете? Вопрос в том все ли NPC находятся далеко друг от друга? Нет ли в мире л2 вплотную стоящих NPC?
Есть близкостоящие NPC, но конечно с различными npc Id.Но байпасс можно подменить. По мне так логика сканировать окружение имеет место быть, как считаете? Вопрос в том все ли NPC находятся далеко друг от друга? Нет ли в мире л2 вплотную стоящих NPC?
Ну например открывать хтмл Маммона, в неделю, когда их нету и это получится, без проверок, так как ты открываешь диалог напрямую, по ссылке из того же пакетхака. И проверка на неделю ssq там не нужна уже. Да много чего в юношестве ворочал через подмену мультиселлов и хтмл байпассов на серверах)Ну подменили байпасс. Что с того? Какой байпасс НПЦу можно прислать невалидно так, чтобы он что-то сделал? Если там конечно какой-то кастомный НПЦ, который итемы выдает, принимая аргументы в виде циферок из рандомных байпассов, но тут уже сам себе злобный Буратино.
Ну я подозреваю, что это относится по большой части к мусорным сборкам, где на уровне сервера не предусмотрена валидация входных данных. Я сотню раз видел байпассы в кастомных и даже обычных НПЦ, где забиты координаты для ТП, например «bypass -h 67363 66252 -3553», или даже «bypass -h Scripts:getReward 57 10000», или даже «bypass -h Buff 1048 2»(в оверах на олимпе был например у нпц).Ну например открывать хтмл Маммона, в неделю, когда их нету и это получится, без проверок, так как ты открываешь диалог напрямую, по ссылке из того же пакетхака. И проверка на неделю ssq там не нужна уже. Да много чего в юношестве ворочал через подмену мультиселлов и хтмл байпассов на серверах)
То есть решение хранить в игроке инфу с тем с кем он общался последний раз (ID NPC)Ну я подозреваю, что это относится по большой части к мусорным сборкам, где на уровне сервера не предусмотрена валидация входных данных. Я сотню раз видел байпассы в кастомных и даже обычных НПЦ, где забиты координаты для ТП, например «bypass -h 67363 66252 -3553», или даже «bypass -h Scripts:getReward 57 10000», или даже «bypass -h Buff 1048 2»(в оверах на олимпе был например у нпц).
В том же ПТС вообще нет валидации байпассов как таковой, более того, по идее ты можешь открыть любой html отправив правильный пакет со стороны клиента, но при этом каждый чих внутри ИИ валидируется и практически нет ситуаций, когда можно прислать левый байпасс и получить профит.
Это как вместо PreparedStatement юзать Query напрямую, а потом удивляться, что рандомный васян себе ГМа выдал через клановый форум)
От подмены байпасов не защитит, но пригодится, например, если добавить функционал по ограничению расстояния между NPC и игроком.То есть решение хранить в игроке инфу с тем с кем он общался последний раз (ID NPC)
Ну например на оффе, пока не сделали явную привязку мультиселов к конкретным нпс, можно было спокойно вызвать любой существующий список у любого нпс подставляя нужный ид в байпасс вида bypass -h menu_select?ask=-303&reply=<id>, т.к. ask равный -303 и отвечающий за показ мульиселлов обрабатывается в одном из самых базовых аи, а значит доступен по сути у любого нпсНу подменили байпасс. Что с того? Какой байпасс НПЦу можно прислать невалидно так, чтобы он что-то сделал? Если там конечно какой-то кастомный НПЦ, который итемы выдает, принимая аргументы в виде циферок из рандомных байпассов, но тут уже сам себе злобный Буратино.
Да, но уже даже в ХФ там идет привязка листов к конкретным НПЦ.Ну например на оффе, пока не сделали явную привязку мультиселов к конкретным нпс, можно было спокойно вызвать любой существующий список у любого нпс подставляя нужный ид в байпасс вида bypass -h menu_select?ask=-303&reply=<id>, т.к. ask равный -303 и отвечающий за показ мульиселлов обрабатывается в одном из самых базовых аи, а значит доступен по сути у любого нпс
Ну а в сборках на яве, разве что за исключением каких нибудь самых древних, давно запилено кэширование байпассов и замена их на спец. байпассы перед отправкой диалога клиенту, ну и само собой при получении байпасса уже от клиента, идет попытка обратно извлечь оригинальный, закэшированный байпасс по полученным данным. Все это в итоге и пресекает любые попытки как-то подменить байпассы и вызвать что-то не то.
Можно кешировать. Проблема в том что кешируемая часть не будет представлять всю строку отсылаемую через пакет байпаса, а только ее начало. Но это как раз и не критично так как такие байпасы всеравно нужно проверять на правильность. И такие байпасы достаточно легко можно найти в HTML так как они используют переменные со знаком $. Кстати вот такие байпасы и представляют опасность, так как в любом случае нужно тщательно проверять кто и как переслал такой байпас. И насчет combobox, можно нагенерировать комбинации если он используется как дополнение в строке.Ну байпассы с подстановкой данных из полей ввода и т.п. само собой не кэшируются, но если после получения подобного байпасса от клиента разработчик поленился нормально проверить и отфильтровать полученные данные, то он ССЗБ.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?