1. DH АнтиLopa .
2. Лень искать
3. Внизу
4. что дадите, я не гордый)
Привет. Сегодня хотелось бы поговорить об эксплойте который открывает FD на серверах FusionRP, объяснить как он работает, и рассказать как его пофиксить что-бы на fusion и других серверах не появлялось этой проблемы.
Поехали! Вот сам скрипт:
И так, давайте разбираться построчно.
1 строка: concommand.Add("uni",function()
Ну тут всё довольно просто, добавляется консольная команда которая выполняет функцию ниже:
local skid = LocalPlayer():GetEyeTrace().Entity
Если игрок наводится на кейпад (GetEyeTrace) то выполняется функция:
net.Start("usec_paid_door") net.WriteEntity(skid) net.WriteBool(true)
А вот здесь начинается самое интересное.
Что такое net'ы? Это такая штука, которая делает отправку от клиента на сервер. Тоесть. В клиентском скрипте написан код, который от клиента получает сообщение. Например: Клиент: Эй, сервер! Я хочу отослать тебе сообщение! Держи! net.Start("message)
Сервер: Эй, клиент! Я получил твоё сообщение! net.Receive("message")
В нашем же случае, клиент отправляет net который был создан кодом в unisec (аддон на кейпады) usec_paid_door
То есть unisec_платная_дверь! В итоге сервер получает информацию (с помощью net.SendToServer() о том, что мы заплатили за открытие кейпада, и открывает нам кейпад! Всё предельно просто!
Ну а как же пофиксить? Ещё проще!
Есть у unisec такой вот код в SV (server) файле под названием lua/unisec/sv_unisec.lua
В нём есть строка:
В этой строке мы должны ПЕРЕИМЕНОВАТЬ net usec_paid_door например на fusion_paid_keypad, ну и соответственно во всём аддоне! Тимур, неужели это так сложно?
2. Лень искать
3. Внизу
4. что дадите, я не гордый)
Привет. Сегодня хотелось бы поговорить об эксплойте который открывает FD на серверах FusionRP, объяснить как он работает, и рассказать как его пофиксить что-бы на fusion и других серверах не появлялось этой проблемы.
Поехали! Вот сам скрипт:
Код:
concommand.Add("uni",function()
local skid=LocalPlayer():GetEyeTrace().Entity
net.Start("usec_paid_door") net.WriteEntity(skid) net.WriteBool(true)
net.SendToServer()
end)
1 строка: concommand.Add("uni",function()
Ну тут всё довольно просто, добавляется консольная команда которая выполняет функцию ниже:
local skid = LocalPlayer():GetEyeTrace().Entity
Если игрок наводится на кейпад (GetEyeTrace) то выполняется функция:
net.Start("usec_paid_door") net.WriteEntity(skid) net.WriteBool(true)
А вот здесь начинается самое интересное.
Что такое net'ы? Это такая штука, которая делает отправку от клиента на сервер. Тоесть. В клиентском скрипте написан код, который от клиента получает сообщение. Например: Клиент: Эй, сервер! Я хочу отослать тебе сообщение! Держи! net.Start("message)
Сервер: Эй, клиент! Я получил твоё сообщение! net.Receive("message")
В нашем же случае, клиент отправляет net который был создан кодом в unisec (аддон на кейпады) usec_paid_door
То есть unisec_платная_дверь! В итоге сервер получает информацию (с помощью net.SendToServer() о том, что мы заплатили за открытие кейпада, и открывает нам кейпад! Всё предельно просто!
Ну а как же пофиксить? Ещё проще!
Есть у unisec такой вот код в SV (server) файле под названием lua/unisec/sv_unisec.lua
В нём есть строка:
util.AddNetworkString("usec_paid_door")В этой строке мы должны ПЕРЕИМЕНОВАТЬ net usec_paid_door например на fusion_paid_keypad, ну и соответственно во всём аддоне! Тимур, неужели это так сложно?
