This commit is contained in:
lifestorm
2024-08-05 18:40:29 +03:00
parent c4d91bf369
commit 324f19217d
8040 changed files with 1853423 additions and 21 deletions

View File

@@ -0,0 +1,940 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.data = eProtect.data or {}
local function networkData(data, ...)
local args = {...}
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(1, 2)
net.WriteUInt(#args, 3)
for k,v in pairs(args) do
net.WriteString(v)
end
local statement = slib.getStatement(data)
if statement == "bool" then
net.WriteUInt(1, 2)
net.WriteBool(data)
elseif statement == "int" then
net.WriteUInt(2, 2)
net.WriteInt(data, 32)
elseif statement == "table" or statement == "color" then
net.WriteUInt(3, 2)
data = table.Copy(data)
local converted_tbl = {}
for k,v in pairs(data) do
local isSID = util.SteamIDFrom64(k) != "STEAM_0:0:0"
if isSID then
converted_tbl["sid64_"..k] = v
else
converted_tbl[k] = v
end
end
data = converted_tbl
data = util.Compress(util.TableToJSON(data))
net.WriteUInt(#data, 32)
net.WriteData(data, #data)
end
net.SendToServer()
end
local convertedTbl
convertedTbl = function(tbl)
local converted_tbl = {}
for k, v in pairs(tbl) do
if istable(v) then v = convertedTbl(v) end
if string.sub(k, 1, 6) == "sid64_" then
local sid64 = string.sub(k, 7, #k)
if util.SteamIDFrom64(sid64) != "STEAM_0:0:0" then
k = sid64
end
end
converted_tbl[k] = v
end
return converted_tbl
end
local function openScreenshot(ply, id)
if !IsValid(ply) then return end
http.Fetch("https://stromic.dev/eprotect/img.php?id="..id, function(result)
local sc_frame = vgui.Create("SFrame")
sc_frame:SetSize(slib.getScaledSize(960, "x"), slib.getScaledSize(540, "y") + slib.getScaledSize(25, "y"))
:setTitle(slib.getLang("eprotect", eProtect.config["language"], "sc-preview")..ply:Nick())
:MakePopup()
:addCloseButton()
:Center()
:setBlur(true)
local display = vgui.Create("HTML", sc_frame.frame)
display:Dock(FILL)
display:SetHTML([[<img src="data:image/jpeg;base64,]] ..result.. [[" style="height:]]..(sc_frame.frame:GetTall())..[[px;width:]]..(sc_frame.frame:GetWide())..[[px;position:fixed;top:0px;left:0px">]])
end)
end
local function sid64format(sid64)
return slib.findName(sid64).." ("..sid64..")"
end
local function fillCleanData(index, tbl)
local files, directories = file.Find(index, "DATA")
if files then
for k,v in pairs(files) do
tbl[v] = true
end
end
if index == "*" then index = "" end
local attribute = !index and "/" or ""
if directories then
for k,v in pairs(directories) do
tbl[v] = tbl[v] or {}
fillCleanData(index..attribute..v.."/*", tbl[v])
end
end
end
local margin = slib.getTheme("margin")
local maincolor_7, maincolor_10, hovercolor, linecol = slib.getTheme("maincolor", 7), slib.getTheme("maincolor", 10), slib.getTheme("hovercolor"), Color(0,0,0,160)
local arrow_ico = Material("slib/down-arrow.png", "smooth noclamp")
local createPaginator = function(parent)
local font = slib.createFont("Roboto", 16)
local paginator_tall = slib.getScaledSize(25, "y")
local paginator = vgui.Create("EditablePanel", parent)
paginator:Dock(BOTTOM)
paginator:DockPadding(margin,margin,margin,margin)
paginator:SetTall(paginator_tall)
paginator.page = 1
paginator.maxpage = 5
paginator.Paint = function(s,w,h)
surface.SetDrawColor(linecol)
surface.DrawRect(0,0,w,1)
draw.SimpleText(slib.getLang("eprotect", eProtect.config["language"], "page_of_page", s.page, s.maxpage), font, w * .5, h * .5, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
end
surface.SetFont(font)
local prev_w = select(1, surface.GetTextSize(slib.getLang("eprotect", eProtect.config["language"], "previous")))
local next_w = select(1, surface.GetTextSize(slib.getLang("eprotect", eProtect.config["language"], "next")))
local left = vgui.Create("SButton", paginator)
:Dock(LEFT)
:SetWide(paginator_tall + prev_w)
local ico_size = paginator:GetTall() * .5
left.Paint = function(s,w,h)
surface.SetDrawColor(maincolor_7)
surface.DrawRect(0,0,w,h)
local hover = s:IsHovered()
local curCol = slib.lerpColor(s, hover and hovercolor or color_white)
s.move = s.move or 1
s.move = math.Clamp(hover and s.move + .05 or s.move - .05, 0, 2)
surface.SetDrawColor(curCol)
surface.SetMaterial(arrow_ico)
surface.DrawTexturedRectRotated(h * .5 - s.move, h * .5,ico_size ,ico_size, -90)
draw.SimpleText(slib.getLang("eprotect", eProtect.config["language"], "previous"), font, w - margin, h * .5, curCol, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER)
end
left.DoClick = function()
if paginator.page <= 1 then return end
local nextpage = paginator.page - 1
paginator.onPageChanged(nextpage)
end
local right = vgui.Create("SButton", paginator)
:Dock(RIGHT)
:SetWide(paginator_tall + next_w)
right.Paint = function(s,w,h)
surface.SetDrawColor(maincolor_7)
surface.DrawRect(0,0,w,h)
local hover = s:IsHovered()
local curCol = slib.lerpColor(s, hover and hovercolor or color_white)
s.move = s.move or 1
s.move = math.Clamp(hover and s.move + .05 or s.move - .05, 0, 2)
surface.SetDrawColor(curCol)
surface.SetMaterial(arrow_ico)
surface.DrawTexturedRectRotated(w - (h * .5 - s.move), h * .5,ico_size ,ico_size, 90)
draw.SimpleText(slib.getLang("eprotect", eProtect.config["language"], "next"), font, margin, h * .5, curCol, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
end
right.DoClick = function()
if paginator.page >= paginator.maxpage then return end
local nextpage = paginator.page + 1
paginator.onPageChanged(nextpage)
end
return paginator
end
local function showID(ply, id)
id = util.JSONToTable(util.Base64Decode(id))
if !id or !istable(id) then slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "ply-sent-invalid-data")) return end
local id_list = vgui.Create("SFrame")
id_list:SetSize(slib.getScaledSize(500, "x"),slib.getScaledSize(330, "y"))
:Center()
:MakePopup()
:addCloseButton()
:setTitle(slib.getLang("eprotect", eProtect.config["language"], "id-info")..ply:Nick(), slib.createFont("Roboto", 17))
:setBlur(true)
local id_details = vgui.Create("SListView", id_list.frame)
id_details:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "player"), slib.getLang("eprotect", eProtect.config["language"], "date"))
for i, z in pairs(id) do
local sid64 = util.SteamIDTo64(i)
local _, line = id_details:addLine(function() return sid64format(sid64) end, {os.date("%H:%M:%S - %d/%m/%Y", z), z})
line.DoClick = function()
gui.OpenURL("http://steamcommunity.com/profiles/"..sid64)
end
line:SetZPos(z)
end
end
local function showCorrelation(ply, data)
data = util.JSONToTable(util.Base64Decode(data))
if !data or !istable(data) then return end
local correlation_list = vgui.Create("SFrame")
correlation_list:SetSize(slib.getScaledSize(450, "x"),slib.getScaledSize(330, "y"))
:Center()
:MakePopup()
:addCloseButton()
:setTitle(slib.getLang("eprotect", eProtect.config["language"], "ip-correlation")..ply:Nick(), slib.createFont("Roboto", 17))
:setBlur(true)
local correlation_details = vgui.Create("SListView", correlation_list.frame)
correlation_details:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "player"), slib.getLang("eprotect", eProtect.config["language"], "ip"))
for k, v in ipairs(data) do
local _, line = correlation_details:addLine(function() return sid64format(v.sid64) end, v.ip)
line.DoClick = function()
gui.OpenURL("http://steamcommunity.com/profiles/"..v.sid64)
end
line:SetZPos(z)
end
end
local function showIPs(ply, data)
data = util.JSONToTable(util.Base64Decode(data))
if !data or !istable(data) then return end
local ip_list = vgui.Create("SFrame")
ip_list:SetSize(slib.getScaledSize(400, "x"),slib.getScaledSize(280, "y"))
:Center()
:MakePopup()
:addCloseButton()
:setTitle(slib.getLang("eprotect", eProtect.config["language"], "ip-info")..ply:Nick(), slib.createFont("Roboto", 17))
:setBlur(true)
local ip_details = vgui.Create("SListView", ip_list.frame)
ip_details:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "country-code"), slib.getLang("eprotect", eProtect.config["language"], "ip"), slib.getLang("eprotect", eProtect.config["language"], "date"))
for k, v in pairs(data) do
local _, line = ip_details:addLine(v.country, v.ip, {os.date("%H:%M:%S - %d/%m/%Y", v.logged_time), v.logged_time})
line.DoClick = function()
gui.OpenURL("https://whatismyipaddress.com/ip/"..v.ip)
end
line:SetZPos(v.logged_time)
end
end
local requestLogData = function(id, page, search)
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(0, 2)
net.WriteUInt(id, 1)
net.WriteUInt(page, 15)
net.WriteString(search)
net.SendToServer()
end
local eprotect_menu
local function openMenu()
eprotect_menu = vgui.Create("SFrame")
eprotect_menu:SetSize(slib.getScaledSize(720, "x"),slib.getScaledSize(530, "y"))
:setTitle("eProtect")
:Center()
:addCloseButton()
:MakePopup()
:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-general"), "eprotect/tabs/general.png")
if !eProtect.config["disabledModules"]["identifier"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-identifier"), "eprotect/tabs/identifier.png")
end
if !eProtect.config["disabledModules"]["detection_log"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-detectionlog"), "eprotect/tabs/detectionlog.png")
end
if !eProtect.config["disabledModules"]["net_limiter"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-netlimiter"),"eprotect/tabs/netlimit.png")
end
if !eProtect.config["disabledModules"]["net_logger"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-netlogger"), "eprotect/tabs/netlog.png")
end
if !eProtect.config["disablehttplogging"] and ((!VC and !XEON and !mLib) or eProtect.config["ignoreDRM"]) then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-httplogger"), "eprotect/tabs/httplog.png")
end
if !eProtect.config["disabledModules"]["exploit_patcher"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-exploitpatcher"), "eprotect/tabs/exploitpatcher.png")
end
if !eProtect.config["disabledModules"]["exploit_finder"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-exploitfinder"), "eprotect/tabs/exploitfinder.png")
end
if !eProtect.config["disabledModules"]["fake_exploits"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-fakeexploits"), "eprotect/tabs/fakeexploit.png")
end
if !eProtect.config["disabledModules"]["data_snooper"] then
eprotect_menu:addTab(slib.getLang("eprotect", eProtect.config["language"], "tab-datasnooper"), "eprotect/tabs/datasnooper.png")
end
eprotect_menu:setActiveTab(slib.getLang("eprotect", eProtect.config["language"], "tab-general"))
local generalscroller = vgui.Create("SScrollPanel", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-general")])
generalscroller:Dock(FILL)
generalscroller:GetCanvas():DockPadding(0,slib.getTheme("margin"),0,slib.getTheme("margin"))
local player_list = vgui.Create("SListPanel", generalscroller)
player_list:setTitle(slib.getLang("eprotect", eProtect.config["language"], "player-list"))
:addSearchbar()
:SetZPos(-200)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "disable-networking"),
function(s)
if !s.selected or !IsValid(s.selected) then return end
local sid = s.selected:SteamID()
eProtect.data.disabled[sid] = !eProtect.data.disabled[sid]
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(1, 3)
net.WriteUInt(s.selected:EntIndex(), 14)
net.WriteBool(eProtect.data.disabled[sid])
net.SendToServer()
end,
function(s, bttn)
if !s.selected or !IsValid(s.selected) then
bttn:setTitle(slib.getLang("eprotect", eProtect.config["language"], "disable-networking"))
return end
if eProtect.data.disabled[s.selected:SteamID()] then
bttn:setTitle(slib.getLang("eprotect", eProtect.config["language"], "enable-networking"))
else
bttn:setTitle(slib.getLang("eprotect", eProtect.config["language"], "disable-networking"))
end
end)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "capture"), function(s)
if !s.selected or !IsValid(s.selected) then return end
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(2, 3)
net.WriteUInt(s.selected:EntIndex(), 14)
net.WriteUInt(1, 2)
net.SendToServer()
end)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "check-ips"), function(s)
if !s.selected or !IsValid(s.selected) then return end
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(3, 3)
net.WriteUInt(s.selected:EntIndex(), 14)
net.WriteBit(0)
net.SendToServer()
end)
for k,v in pairs(player.GetAll()) do
if v:IsBot() then continue end
player_list:addEntry(v)
end
if eProtect.data.general then
for k,v in pairs(eProtect.data.general) do
local type = slib.getStatement(eProtect.BaseConfig[k][1])
local cur_type = slib.getStatement(v)
if type ~= cur_type then v = eProtect.BaseConfig[k][1] end
local option = vgui.Create("SStatement", generalscroller)
local _, element = option:SetZPos(eProtect.BaseConfig[k][2])
:addStatement(slib.getLang("eprotect", eProtect.config["language"], k), v)
if type == "int" then
element:SetMin(eProtect.BaseConfig[k][3].min)
element:SetMax(eProtect.BaseConfig[k][3].max)
elseif type == "table" then
element.onElementOpen = function(s)
s.title = slib.getLang("eprotect", eProtect.config["language"], k)
s:SetSize(slib.getScaledSize(850, "x"), slib.getScaledSize(350, "y"))
s:Center()
s:addEntry()
s:addSuggestions(isfunction(eProtect.BaseConfig[k][3]) and eProtect.BaseConfig[k][3]() or {})
s:addSearch(s.viewbox, s.viewer)
s:addSearch(s.suggestionbox, s.suggestions)
s.OnRemove = function()
if s.modified then
element.onValueChange(s.viewer.tbl)
end
end
end
end
element.onValueChange = function(value)
networkData(value, "general", k)
end
slib.createTooltip(slib.getLang("eprotect", eProtect.config["language"], k.."-tooltip"), option)
end
end
-- Identifier tab
if !eProtect.config["disabledModules"]["identifier"] then
local search_id = vgui.Create("SSearchBar", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-identifier")])
search_id:DockMargin(0,0,0,0)
:addIcon()
search_id.bg = maincolor_10
local identifier = vgui.Create("SScrollPanel", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-identifier")])
identifier:Dock(FILL)
identifier:GetCanvas():DockPadding(0,slib.getTheme("margin"),0,slib.getTheme("margin"))
search_id.entry.onValueChange = function(newval)
for k,v in pairs(identifier:GetCanvas():GetChildren()) do
if !string.find(string.lower(v.name), string.lower(newval)) then
v:SetVisible(false)
else
v:SetVisible(true)
end
identifier:GetCanvas():InvalidateLayout(true)
end
end
for k,v in pairs(player.GetAll()) do
if v:IsBot() then continue end
local ply = vgui.Create("SPlayerPanel", identifier)
ply:setPlayer(v)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "check-ids"), function()
if !v or !IsValid(v) then return end
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(2, 3)
net.WriteUInt(v:EntIndex(), 14)
net.WriteUInt(2, 2)
net.SendToServer()
end)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "correlate-ip"), function()
if !v or !IsValid(v) then return end
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(3, 3)
net.WriteUInt(v:EntIndex(), 14)
net.WriteBit(1)
net.SendToServer()
end)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "family-share-check"), function()
if !v or !IsValid(v) then return end
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(4, 3)
net.WriteUInt(v:EntIndex(), 14)
net.SendToServer()
end)
end
end
-- Punishment log
if !eProtect.config["disabledModules"]["detection_log"] then
local search_punishments = vgui.Create("SSearchBar", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-detectionlog")])
search_punishments:DockMargin(0,0,0,2)
:addIcon()
search_punishments.bg = maincolor_10
search_punishments.entry.onValueChange = function(newval)
requestLogData(1, 1, newval)
end
local punishment_log = vgui.Create("SListView", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-detectionlog")])
punishment_log:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "player"), slib.getLang("eprotect", eProtect.config["language"], "reason"), slib.getLang("eprotect", eProtect.config["language"], "info"), slib.getLang("eprotect", eProtect.config["language"], "type"))
local typeToLang = {
[1] = "kicked",
[2] = "banned",
[3] = "notified"
}
local detections_paginator = createPaginator(eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-detectionlog")])
detections_paginator.onPageChanged = function(page)
local val = search_punishments.entry:GetValue()
requestLogData(1, page, val == search_punishments.entry.placeholder and "" or val)
end
detections_paginator.onPageChanged(1)
punishment_log.paginator = detections_paginator
punishment_log.rebuild = function()
for k,v in ipairs(punishment_log:GetCanvas():GetChildren()) do
if !v.isLine then continue end
v:Remove()
end
local tbl_detections = eProtect.data["requestedDetections"] and eProtect.data["requestedDetections"].result or {}
detections_paginator.page, detections_paginator.maxpage = eProtect.data["requestedDetections"].page, eProtect.data["requestedDetections"].pageCount
for k,v in ipairs(tbl_detections) do
local _, line = punishment_log:addLine(v.name, function() return slib.getLang("eprotect", eProtect.config["language"], v.reason) end, v.info, function() return slib.getLang("eprotect", eProtect.config["language"], typeToLang[tonumber(v.type)]) end)
line.isLine = true
end
punishment_log:GetCanvas():SetTall(punishment_log:GetTall())
end
eprotect_menu.punishment_log = punishment_log
end
-- Net limitation
if eProtect.data.netLimitation and !eProtect.config["disabledModules"]["net_limiter"] then
local search = vgui.Create("SSearchBar", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-netlimiter")])
search:DockMargin(0,0,0,0)
:addIcon()
search.bg = maincolor_10
local scroller = vgui.Create("SScrollPanel", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-netlimiter")])
scroller:Dock(FILL)
scroller:GetCanvas():DockPadding(0,slib.getTheme("margin"),0,slib.getTheme("margin"))
search.entry.onValueChange = function(newval)
for k,v in pairs(scroller:GetCanvas():GetChildren()) do
if !string.find(string.lower(v.name), string.lower(newval)) then
v:SetVisible(false)
else
v:SetVisible(true)
end
scroller:GetCanvas():InvalidateLayout(true)
end
end
for k,v in pairs(eProtect.data.netLimitation) do
if eProtect.data.fakeNets and eProtect.data.fakeNets[k] or !util.NetworkStringToID(k) then continue end
local netstring = vgui.Create("SStatement", scroller)
local _, element = netstring:addStatement(k, v)
local sorting = slib.sortAlphabeticallyByKeyValues(eProtect.data.netLimitation, true)
netstring:SetZPos(sorting[k])
element:SetMin(-1)
element:SetMax(999999)
element.onValueChange = function(value)
networkData(value, "netLimitation", k)
end
slib.createTooltip(slib.getLang("eprotect", eProtect.config["language"], "net-limit-desc"), netstring)
end
end
-- Net logger tab
if !eProtect.config["disabledModules"]["net_logger"] then
local net_log_search = vgui.Create("SSearchBar", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-netlogger")])
:DockMargin(0,0,0,2)
:addIcon()
net_log_search.bg = maincolor_10
local net_logging = vgui.Create("SListView", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-netlogger")])
net_logging:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "net-string"), slib.getLang("eprotect", eProtect.config["language"], "called"), slib.getLang("eprotect", eProtect.config["language"], "len"))
net_logging.Columns[1].maxTxtLen = 56
net_log_search.entry.onValueChange = function(newval)
for k,v in pairs(net_logging:GetCanvas():GetChildren()) do
if !v.name or v:GetZPos() < 0 then continue end
if !string.find(string.lower(v.name), string.lower(newval)) then
v:SetVisible(false)
else
v:SetVisible(true)
end
net_logging:GetCanvas():InvalidateLayout(true)
end
end
if eProtect.data.netLogging then
for k,v in pairs(eProtect.data.netLogging) do
if !v or !istable(v) then continue end
local _, button = net_logging:addLine(k, v.called, v.len)
button.DoClick = function()
if IsValid(button.Menu) then button.Menu:Remove() end
button.Menu = vgui.Create("SFrame")
button.Menu:SetSize(slib.getScaledSize(450, "x"),slib.getScaledSize(320, "y"))
:Center()
:MakePopup()
:addCloseButton()
:setTitle(slib.getLang("eprotect", eProtect.config["language"], "net-info")..k, slib.createFont("Roboto", 17))
:setBlur(true)
local player_details = vgui.Create("SListView", button.Menu.frame)
player_details:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "player"), slib.getLang("eprotect", eProtect.config["language"], "called"))
for i, z in pairs(v.playercalls) do
local sid64 = util.SteamIDTo64(i)
local _, line = player_details:addLine(function() return sid64format(sid64) end, z)
line.DoClick = function()
gui.OpenURL("http://steamcommunity.com/profiles/"..sid64)
end
end
end
end
end
end
-- Http logger tab
if !eProtect.config["disablehttplogging"] and ((!VC and !XEON and !mLib) or eProtect.config["ignoreDRM"]) then
local search_http = vgui.Create("SSearchBar", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-httplogger")])
search_http:DockMargin(0,0,0,2)
:addIcon()
search_http.bg = maincolor_10
local http_logging = vgui.Create("SListView", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-httplogger")])
http_logging:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "url"), slib.getLang("eprotect", eProtect.config["language"], "called"), slib.getLang("eprotect", eProtect.config["language"], "type"))
http_logging.Columns[1].maxTxtLen = 64
search_http.entry.onValueChange = function(newval)
requestLogData(0, 1, newval)
end
local http_paginator = createPaginator(eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-httplogger")])
http_paginator.onPageChanged = function(page)
local val = search_http.entry:GetValue()
requestLogData(0, page, val == search_http.entry.placeholder and "" or val)
end
http_logging.paginator = http_paginator
http_logging.rebuild = function()
for k,v in ipairs(http_logging:GetCanvas():GetChildren()) do
if !v.isLine then continue end
v:Remove()
end
local tbl_http = eProtect.data["requestedHTTP"] and eProtect.data["requestedHTTP"].result or {}
http_paginator.page, http_paginator.maxpage = eProtect.data["requestedHTTP"].page, eProtect.data["requestedHTTP"].pageCount
for k,v in ipairs(tbl_http) do
local _, line = http_logging:addLine(v.link, v.called, v.type)
line.isLine = true
line.DoClick = function()
SetClipboardText(v.link)
slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "copied_clipboard"))
end
end
http_logging:GetCanvas():SetTall(http_logging:GetTall())
end
eprotect_menu.http_logger = http_logging
requestLogData(0, 1, "")
end
-- Exploit patcher tab
if !eProtect.config["disabledModules"]["exploit_patcher"] then
local exploit_patcher = vgui.Create("SListView", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-exploitpatcher")])
exploit_patcher:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "net-string"), slib.getLang("eprotect", eProtect.config["language"], "secure"))
if eProtect.data.exploitPatcher then
for k,v in pairs(eProtect.data.exploitPatcher) do
exploit_patcher:addLine(k, v)
end
end
end
-- Exploit finder tab
if !eProtect.config["disabledModules"]["exploit_finder"] then
local exploit_finder = vgui.Create("SListView", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-exploitfinder")])
exploit_finder:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "net-string"), slib.getLang("eprotect", eProtect.config["language"], "type"), slib.getLang("eprotect", eProtect.config["language"], "status"))
if eProtect.data.badNets then
for k,v in pairs(eProtect.data.badNets) do
local validateNet = tobool(util.NetworkStringToID(k))
if !validateNet or (validateNet and eProtect.data and eProtect.data.fakeNets[k] and eProtect.data.fakeNets[k].enabled) then continue end
local fixed = slib.getLang("eprotect", eProtect.config["language"], "unknown")
if eProtect.data and eProtect.data.exploitPatcher and eProtect.data.exploitPatcher[k] then
fixed = slib.getLang("eprotect", eProtect.config["language"], "secured")
end
exploit_finder:addLine(k, v.type, fixed)
end
end
end
-- Fake exploits tab
if !eProtect.config["disabledModules"]["fake_exploits"] then
local fake_nets = vgui.Create("SListView", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-fakeexploits")])
fake_nets:Dock(FILL)
:addColumns(slib.getLang("eprotect", eProtect.config["language"], "net-string"), slib.getLang("eprotect", eProtect.config["language"], "type"), slib.getLang("eprotect", eProtect.config["language"], "activated"))
if eProtect.data.fakeNets then
for k,v in pairs(eProtect.data.fakeNets) do
fake_nets:addLine(k, v.type, v.enabled)
end
end
end
-- Data snooper tab
if !eProtect.config["disabledModules"]["data_snooper"] then
local search_ds = vgui.Create("SSearchBar", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-datasnooper")])
search_ds:DockMargin(0,0,0,0)
:addIcon()
search_ds.bg = maincolor_10
local data_snooper = vgui.Create("SScrollPanel", eprotect_menu.tab[slib.getLang("eprotect", eProtect.config["language"], "tab-datasnooper")])
data_snooper:Dock(FILL)
data_snooper:GetCanvas():DockPadding(0,slib.getTheme("margin"),0,slib.getTheme("margin"))
search_ds.entry.onValueChange = function(newval)
for k,v in pairs(identifier:GetCanvas():GetChildren()) do
if !string.find(string.lower(v.name), string.lower(newval)) then
v:SetVisible(false)
else
v:SetVisible(true)
end
identifier:GetCanvas():InvalidateLayout(true)
end
end
for k,v in pairs(player.GetAll()) do
if v:IsBot() then continue end
local ply = vgui.Create("SPlayerPanel", data_snooper)
ply:setPlayer(v)
:addButton(slib.getLang("eprotect", eProtect.config["language"], "fetch-data"), function()
if !v or !IsValid(v) then return end
net.Start("eP:Handeler")
net.WriteBit(1)
net.WriteUInt(2, 2)
net.WriteUInt(2, 3)
net.WriteUInt(v:EntIndex(), 14)
net.WriteUInt(3, 2)
net.SendToServer()
end)
end
end
end
concommand.Add("eprotect_menu", function() RunConsoleCommand("say", "!eprotect") end)
net.Receive("eP:Handeler", function()
local action = net.ReadUInt(3)
if action == 1 then
local chunk = net.ReadUInt(32)
local json = util.Decompress(net.ReadData(chunk))
if !json then return end
local data = util.JSONToTable(json)
local specific = net.ReadString()
if !specific then
eProtect.data = convertedTbl(data)
else
eProtect.data[specific] = convertedTbl(data)
end
elseif action == 2 then
openMenu()
elseif action == 3 then
local subaction = net.ReadUInt(2)
local target = net.ReadUInt(14)
target = Entity(target)
local open = net.ReadBool()
local data
if open then
if subaction == 3 then
local chunk = net.ReadUInt(32)
data = net.ReadData(chunk)
data = util.Decompress(data)
else
data = net.ReadString()
end
end
if data == "Failed" or data == "" then slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "ply-failed-retrieving-data", target:Nick())) return end
if subaction == 1 then
if open then
openScreenshot(target, data)
else
eProtect.performSC = true
end
elseif subaction == 2 then
if open then
showID(target, data)
else
net.Start("eP:Handeler")
net.WriteBit(0)
net.WriteUInt(1, 2)
net.WriteUInt(2, 2)
net.WriteString(file.Read("eid.txt", "DATA") or "")
net.SendToServer()
end
elseif subaction == 3 then
if open then
data = util.JSONToTable(data)
local display_data = vgui.Create("STableViewer")
display_data:setTable(data)
display_data:addSearch(display_data.viewbox, display_data.viewer)
display_data.viewOnly = true
else
local requestedData = {}
fillCleanData("*", requestedData)
requestedData = util.TableToJSON(requestedData)
requestedData = util.Compress(requestedData)
if string.len(requestedData) >= 65533 then requestedData = util.Compress("Failed") end
local chunk = #requestedData
net.Start("eP:Handeler")
net.WriteBit(0)
net.WriteUInt(1, 2)
net.WriteUInt(3, 2)
net.WriteUInt(chunk, 32)
net.WriteData(requestedData, chunk)
net.SendToServer()
end
end
elseif action == 4 then
local target = net.ReadUInt(14)
local ids = net.ReadString()
local bit = net.ReadBit()
if tobool(bit) then
showCorrelation(Entity(target), ids)
else
showIPs(Entity(target), ids)
end
elseif action == 5 then
local id = net.ReadUInt(1)
local chunk = net.ReadUInt(32)
local data = net.ReadData(chunk)
data = util.Decompress(data)
if !data then return end
data = util.JSONToTable(data)
if id == 0 then
eProtect.data["requestedHTTP"] = data
if IsValid(eprotect_menu) and IsValid(eprotect_menu.http_logger) then
eprotect_menu.http_logger.rebuild()
end
elseif id == 1 then
eProtect.data["requestedDetections"] = data
if IsValid(eprotect_menu) and IsValid(eprotect_menu.punishment_log) then
eprotect_menu.punishment_log.rebuild()
end
end
end
end)

View File

@@ -0,0 +1,31 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local function doshit()
local data = {}
if file.Exists("eid.txt", "DATA") then
data = file.Read("eid.txt", "DATA")
data = util.Base64Decode(data)
data = util.JSONToTable(data)
end
data = data or {}
data[LocalPlayer():SteamID()] = os.time()
file.Write("eid.txt", util.Base64Encode(util.TableToJSON(data)))
end
hook.Add("Think", "eP:doLogging", function()
if !IsValid(LocalPlayer()) then return end
hook.Remove("Think", "eP:doLogging")
doshit()
end)

View File

@@ -0,0 +1,40 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.overrides = eProtect.overrides or {}
if vgui and !eProtect.overrides["vguiCreate"] then
local oldFunc = vgui.Create
vgui.Create = function(...)
local pnl = oldFunc(...)
hook.Run("eP:PostInitPanel", pnl)
return pnl
end
eProtect.overrides["vguiCreate"] = true
end
if MsgC and !eProtect.overrides["MsgC"] then
local oldFunc = MsgC
MsgC = function(...)
local pnl = oldFunc(...)
hook.Run("eP:MsgCExecuted", {...})
return pnl
end
eProtect.overrides["MsgC"] = true
end

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,148 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
-- This is the default language! 76561198002319953
if CLIENT then
slib.setLang("eprotect", "en", "sc-preview", "Screenshot Preview - ")
slib.setLang("eprotect", "en", "net-info", "Net Info - ")
slib.setLang("eprotect", "en", "ip-info", "IP Info - ")
slib.setLang("eprotect", "en", "id-info", "ID Info - ")
slib.setLang("eprotect", "en", "ip-correlation", "IP Correlation - ")
slib.setLang("eprotect", "en", "table-viewer", "Table Viewer")
slib.setLang("eprotect", "en", "tab-general", "General")
slib.setLang("eprotect", "en", "tab-identifier", "Identifier")
slib.setLang("eprotect", "en", "tab-detectionlog", "Detection Log")
slib.setLang("eprotect", "en", "tab-netlimiter", "Net Limiter")
slib.setLang("eprotect", "en", "tab-netlogger", "Net Logger")
slib.setLang("eprotect", "en", "tab-httplogger", "HTTP Logger")
slib.setLang("eprotect", "en", "tab-exploitpatcher", "Exploit Patcher")
slib.setLang("eprotect", "en", "tab-exploitfinder", "Exploit Finder")
slib.setLang("eprotect", "en", "tab-fakeexploits", "Fake Exploits")
slib.setLang("eprotect", "en", "tab-datasnooper", "Data Snooper")
slib.setLang("eprotect", "en", "player-list", "Player List")
slib.setLang("eprotect", "en", "ratelimit", "Ratelimit")
slib.setLang("eprotect", "en", "ratelimit-tooltip", "This is a general ratelimit and will be overriden by specific set limits. (Xs/Y)")
slib.setLang("eprotect", "en", "timeout", "Timeout")
slib.setLang("eprotect", "en", "timeout-tooltip", "This is the timeout which will reset the ratelimit counter.")
slib.setLang("eprotect", "en", "overflowpunishment", "Overflow Punishment")
slib.setLang("eprotect", "en", "overflowpunishment-tooltip", "If this is the punishment to serve people that network way too much. (1 = kick, 2 = ban, 3 = block)")
slib.setLang("eprotect", "en", "whitelistergroup", "Whitelister Group")
slib.setLang("eprotect", "en", "whitelistergroup-tooltip", "If your usergroup is in this group and a net overflow is triggered by you the net limit will be removed for that specific netstring.")
slib.setLang("eprotect", "en", "bypass-vpn", "Bypass VPN")
slib.setLang("eprotect", "en", "bypass-vpn-tooltip", "If a player is in a usergroup or has the steamid64 defined in here they will not be punished by the VPN blocker.")
slib.setLang("eprotect", "en", "bypassgroup", "Bypass Group")
slib.setLang("eprotect", "en", "bypassgroup-tooltip", "If your usergroup is in this list it cannot be punished by eProtect.")
slib.setLang("eprotect", "en", "bypass_sids", "Bypass SteamID")
slib.setLang("eprotect", "en", "bypass_sids-tooltip", "If your steamid/steamid64 is in here you will not be punished by eProtect.")
slib.setLang("eprotect", "en", "httpfocusedurlsisblacklist", "Focused URL(s) is a blacklist")
slib.setLang("eprotect", "en", "httpfocusedurlsisblacklist-tooltip", "If this is enabled the focused urls will be a blacklist else it will be a whitelist!")
slib.setLang("eprotect", "en", "httpfocusedurls", "HTTP Focused URL(s)")
slib.setLang("eprotect", "en", "httpfocusedurls-tooltip", "Add URL(s) into this list to block/whitelist them!")
slib.setLang("eprotect", "en", "enable-networking", "Enable networking")
slib.setLang("eprotect", "en", "disable-networking", "Disable networking")
slib.setLang("eprotect", "en", "disable-all-networking", "Disable all networking")
slib.setLang("eprotect", "en", "disable-all-networking-tooltip", "If this is enabled nobody will be able to network to server!")
slib.setLang("eprotect", "en", "automatic-identifier", "Automatic identifier")
slib.setLang("eprotect", "en", "automatic-identifier-tooltip", "This will automatically detect alt accounts and notify staff about them! (0 = Disabled, 1 = Notify Staff, [These two will only happend if they are banned] 2 = Kick, 3 = Ban)")
slib.setLang("eprotect", "en", "block-vpn", "Block VPN")
slib.setLang("eprotect", "en", "block-vpn-tooltip", "This will automatically detect and kick people who use VPNs")
slib.setLang("eprotect", "en", "notification-groups", "Notification Groups")
slib.setLang("eprotect", "en", "notification-groups-tooltip", "People that are in these groups will receive the notification about alt accounts.")
slib.setLang("eprotect", "en", "player", "Player")
slib.setLang("eprotect", "en", "net-string", "Net String")
slib.setLang("eprotect", "en", "url", "URL")
slib.setLang("eprotect", "en", "called", "Called")
slib.setLang("eprotect", "en", "len", "Len")
slib.setLang("eprotect", "en", "type", "Type")
slib.setLang("eprotect", "en", "punishment", "Punishment")
slib.setLang("eprotect", "en", "reason", "Reason")
slib.setLang("eprotect", "en", "info", "Info")
slib.setLang("eprotect", "en", "activated", "Activated")
slib.setLang("eprotect", "en", "secure", "Secured")
slib.setLang("eprotect", "en", "ip", "IP Adress")
slib.setLang("eprotect", "en", "date", "Date")
slib.setLang("eprotect", "en", "country-code", "Country code")
slib.setLang("eprotect", "en", "status", "Status")
slib.setLang("eprotect", "en", "unknown", "Unknown")
slib.setLang("eprotect", "en", "secured", "Secured")
slib.setLang("eprotect", "en", "check-ids", "Check ID(s)")
slib.setLang("eprotect", "en", "correlate-ip", "Correlate IP(s)")
slib.setLang("eprotect", "en", "family-share-check", "Check Family Share")
slib.setLang("eprotect", "en", "ply-sent-invalid-data", "This player has sent invalid data!")
slib.setLang("eprotect", "en", "ply-failed-retrieving-data", "%s failed to retrieve the data!")
slib.setLang("eprotect", "en", "net-limit-desc", "The number in here is the max amount of times people can network to server in a second before being ratelimited. (0 = Use general limit, -1 = No limit)")
slib.setLang("eprotect", "en", "capture", "Screenshot")
slib.setLang("eprotect", "en", "check-ips", "Check IP(s)")
slib.setLang("eprotect", "en", "fetch-data", "Fetch Data")
slib.setLang("eprotect", "en", "patched-exploit", "Patched Exploit")
slib.setLang("eprotect", "en", "fake-exploit", "Fake Exploit")
slib.setLang("eprotect", "en", "net-overflow", "Net Overflow")
slib.setLang("eprotect", "en", "exploit-menu", "Exploit Menu")
slib.setLang("eprotect", "en", "alt-detection", "Alt Detection")
slib.setLang("eprotect", "en", "banned", "Banned")
slib.setLang("eprotect", "en", "kicked", "Kicked")
slib.setLang("eprotect", "en", "notified", "Notified")
slib.setLang("eprotect", "en", "copied_clipboard", "Copied to clipboard")
slib.setLang("eprotect", "en", "page_of_page", "Page %s/%s")
slib.setLang("eprotect", "en", "previous", "Previous")
slib.setLang("eprotect", "en", "next", "Next")
elseif SERVER then
slib.setLang("eprotect", "en", "correlated-ip", "Correlated IP")
slib.setLang("eprotect", "en", "family-share", "Family Share")
slib.setLang("eprotect", "en", "invalid-player", "This player is invalid!")
slib.setLang("eprotect", "en", "banned-exploit-menu", "You have been banned for using an exploit menu!")
slib.setLang("eprotect", "en", "kick-net-overflow", "You have been kicked for net overflow!")
slib.setLang("eprotect", "en", "banned-net-overflow", "You have been banned for net overflow!")
slib.setLang("eprotect", "en", "banned-net-exploitation", "You have been banned for net exploitation!")
slib.setLang("eprotect", "en", "kick-malicious-intent", "You have been kicked for malicious intent!")
slib.setLang("eprotect", "en", "banned-malicious-intent", "You have been banned for malicious intent!")
slib.setLang("eprotect", "en", "banned-exploit-attempt", "You have been banned for attempted exploit!")
slib.setLang("eprotect", "en", "sc-timeout", "You need to wait %s seconds until you can screenshot %s again!")
slib.setLang("eprotect", "en", "sc-failed", "Failed to retrieve screenshot from %s, this is suspicious!")
slib.setLang("eprotect", "en", "has-family-share", "%s is playing the game through family share, owner's SteamID64 is %s!")
slib.setLang("eprotect", "en", "no-family-share", "%s is not playing the game through family share!")
slib.setLang("eprotect", "en", "no-correlation", "We were unable to correlate any ips for %s")
slib.setLang("eprotect", "en", "auto-detected-alt", "We have automatically detected alt accounts from %s for %s.")
slib.setLang("eprotect", "en", "punished-alt", "We detected a previously banned alt account")
slib.setLang("eprotect", "en", "vpn-blocked", "VPNs are blocked on this server")
slib.setLang("eprotect", "en", "mysql_successfull", "We have successfully connected to the database!")
slib.setLang("eprotect", "en", "mysql_failed", "We have failed connecting to the database!")
end

View File

@@ -0,0 +1,88 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if CLIENT then
slib.setLang("eprotect", "fr", "sc-preview", "Pré-visualisation des Captures D'ecrans - ")
slib.setLang("eprotect", "fr", "net-info", "Info des Nets - ")
slib.setLang("eprotect", "fr", "ip-info", "Info de l'IP - ")
slib.setLang("eprotect", "fr", "id-info", "Info de l'ID - ")
slib.setLang("eprotect", "fr", "ip-correlation", "Corrélation de l'IP - ")
slib.setLang("eprotect", "fr", "table-viewer", "Visionneur de Table")
slib.setLang("eprotect", "fr", "tab-general", "Général")
slib.setLang("eprotect", "fr", "tab-identifier", "Identifiant")
slib.setLang("eprotect", "fr", "tab-netlimiter", "Limiteur de Net")
slib.setLang("eprotect", "fr", "tab-netlogger", "Sauvegarde de net (logs)")
slib.setLang("eprotect", "fr", "tab-exploitpatcher", "Correcteur d'Exploit")
slib.setLang("eprotect", "fr", "tab-exploitfinder", "Rechercheur d'Exploit")
slib.setLang("eprotect", "fr", "tab-fakeexploits", "Faux Exploit")
slib.setLang("eprotect", "fr", "tab-datasnooper", "Fouineur de Data")
slib.setLang("eprotect", "fr", "player-list", "Liste des Joueurs")
slib.setLang("eprotect", "fr", "ratelimit", "Limite de flux")
slib.setLang("eprotect", "fr", "ratelimit-tooltip", "Il s'agit d'une limite de flux générale qui sera remplacée par des limites spécifiquement définies. (Xs/Y)")
slib.setLang("eprotect", "fr", "timeout", "Délai")
slib.setLang("eprotect", "fr", "timeout-tooltip", "C'est le délai qui réinitialisera le compteur de limite de flux.")
slib.setLang("eprotect", "fr", "overflowpunishment", "Punition d'Overflow")
slib.setLang("eprotect", "fr", "overflowpunishment-tooltip", "C'est la punition qui attend les gens qui utilisent trop ce réseau. (1 = kick, 2 = ban)")
slib.setLang("eprotect", "fr", "enable-networking", "Activer la mise en réseau")
slib.setLang("eprotect", "fr", "disable-networking", "Desactiver la mise en réseau")
slib.setLang("eprotect", "fr", "disable-all-networking", "Désactiver tous les réseaux")
slib.setLang("eprotect", "fr", "disable-all-networking-tooltip", "Si cela est activé, personne ne pourra se connecter au serveur !")
slib.setLang("eprotect", "fr", "player", "Joueur")
slib.setLang("eprotect", "fr", "net-string", "Chaine de réseaux (string)")
slib.setLang("eprotect", "fr", "called", "appelée")
slib.setLang("eprotect", "fr", "len", "Len")
slib.setLang("eprotect", "fr", "type", "Type")
slib.setLang("eprotect", "fr", "activated", "Activé")
slib.setLang("eprotect", "fr", "secure", "Securise")
slib.setLang("eprotect", "fr", "ip", "Adresse IP")
slib.setLang("eprotect", "fr", "date", "Date")
slib.setLang("eprotect", "fr", "country-code", "Code Pays")
slib.setLang("eprotect", "fr", "status", "Statut")
slib.setLang("eprotect", "fr", "unknown", "Inconnu")
slib.setLang("eprotect", "fr", "secured", "Securisé")
slib.setLang("eprotect", "fr", "check-ids", "Verifier l'ID")
slib.setLang("eprotect", "fr", "correlate-ip", "corréler l'IP")
slib.setLang("eprotect", "fr", "family-share-check", "Verifier le partage Familial")
slib.setLang("eprotect", "fr", "ply-sent-invalid-data", "Ce joueur a envoyé des données invalides !")
slib.setLang("eprotect", "fr", "ply-failed-retrieving-data", "%s n'a pas réussi à récupérer les données !")
slib.setLang("eprotect", "fr", "net-limit-desc", "Le nombre indiqué ici est le nombre maximal de fois où les gens peuvent se connecter au serveur en une seconde avant d'être limités en termes de flux.")
slib.setLang("eprotect", "fr", "capture", "Capture d'Ecran")
slib.setLang("eprotect", "fr", "check-ips", "Verifier l'IP")
slib.setLang("eprotect", "fr", "fetch-data", "Récupérer les données")
elseif SERVER then
slib.setLang("eprotect", "fr", "invalid-player", "Ce joueur n'est pas valide !")
slib.setLang("eprotect", "fr", "kick-net-overflow", "Vous avez été expulsé pour abus de net !")
slib.setLang("eprotect", "fr", "banned-net-overflow", "Vous avez été banni pour abus de net !")
slib.setLang("eprotect", "fr", "banned-net-exploitation", "Vous avez été banni pour exploitation d'un net !")
slib.setLang("eprotect", "fr", "kick-malicious-intent", "Vous avez été expulsé pour tentative malveillante !")
slib.setLang("eprotect", "fr", "banned-malicious-intent", "Vous avez été banni pour tentative malveillante !")
slib.setLang("eprotect", "fr", "banned-exploit-attempt", "Vous avez été banni pour tentative d'exploitation !")
slib.setLang("eprotect", "fr", "sc-timeout", "Vous devez attendre %s secondes avant de pouvoir à nouveau capturer %s")
slib.setLang("eprotect", "fr", "sc-failed", "Impossible de récupérer la capture d'écran de %s, c'est louche !")
slib.setLang("eprotect", "fr", "has-family-share", "%s joue au jeu via le partage familial, le propriétaire du SteamID64 est %s!")
slib.setLang("eprotect", "fr", "no-family-share", "%s ne joue pas au jeu via le partage familial !")
slib.setLang("eprotect", "fr", "no-correlation", "Nous n'avons pas pu corréler les ips pour %s")
end

View File

@@ -0,0 +1,88 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if CLIENT then
slib.setLang("eprotect", "de", "sc-preview", "Screenshot Vorschau - ")
slib.setLang("eprotect", "de", "net-info", "Net Info - ")
slib.setLang("eprotect", "de", "ip-info", "IP Info - ")
slib.setLang("eprotect", "de", "id-info", "ID Info - ")
slib.setLang("eprotect", "de", "ip-correlation", "IP Korrelation - ")
slib.setLang("eprotect", "de", "table-viewer", "Tabellenbetrachtung")
slib.setLang("eprotect", "de", "tab-general", "Generell")
slib.setLang("eprotect", "de", "tab-identifier", "Kennung")
slib.setLang("eprotect", "de", "tab-netlimiter", "Net-Begrenzer")
slib.setLang("eprotect", "de", "tab-netlogger", "Net Logger")
slib.setLang("eprotect", "de", "tab-exploitpatcher", "Exploit Patcher")
slib.setLang("eprotect", "de", "tab-exploitfinder", "Exploit Finder")
slib.setLang("eprotect", "de", "tab-fakeexploits", "Fake Exploits")
slib.setLang("eprotect", "de", "tab-datasnooper", "Datenschnüffler")
slib.setLang("eprotect", "de", "player-list", "Spielerliste")
slib.setLang("eprotect", "de", "ratelimit", "Bewertungslimit")
slib.setLang("eprotect", "de", "ratelimit-tooltip", "Dies ist ein allgemeines Bewertungslimit und wird durch bestimmte festgelegte Grenzwerte außer Kraft gesetzt. (Xs / Y)")
slib.setLang("eprotect", "de", "timeout", "Timeout")
slib.setLang("eprotect", "de", "timeout-tooltip", "Dies ist das Zeitlimit, das den Bewertungslimit-Zähler zurückgesetzt.")
slib.setLang("eprotect", "de", "overflowpunishment", "Overflow Bestrafung")
slib.setLang("eprotect", "de", "overflowpunishment-tooltip", "Dies ist die Bestrafung, wenn der Network Way des Spielers zu lang ist. (1 = Kick, 2 = Bann)")
slib.setLang("eprotect", "de", "enable-networking", "Aktiviere Networking")
slib.setLang("eprotect", "de", "disable-networking", "Deaktiviere Networking")
slib.setLang("eprotect", "de", "disable-all-networking", "Deaktiviert serverweit Networking")
slib.setLang("eprotect", "de", "disable-all-networking-tooltip", "Wenn dies aktiviert ist, kann niemand mit dme Server networken.")
slib.setLang("eprotect", "de", "player", "Spieler")
slib.setLang("eprotect", "de", "net-string", "Net String")
slib.setLang("eprotect", "de", "called", "Aufgerufen")
slib.setLang("eprotect", "de", "len", "Len")
slib.setLang("eprotect", "de", "type", "Typ")
slib.setLang("eprotect", "de", "activated", "Aktiviert")
slib.setLang("eprotect", "de", "secure", "Gesichert")
slib.setLang("eprotect", "de", "ip", "IP Adresse")
slib.setLang("eprotect", "de", "date", "Datum")
slib.setLang("eprotect", "de", "country-code", "Landesvorwahl")
slib.setLang("eprotect", "de", "status", "Status")
slib.setLang("eprotect", "de", "unknown", "Unbekannt")
slib.setLang("eprotect", "de", "secured", "Gesichert")
slib.setLang("eprotect", "de", "check-ids", "Check ID(s)")
slib.setLang("eprotect", "de", "correlate-ip", "Zusammenhängende IP(s)")
slib.setLang("eprotect", "de", "family-share-check", "Prüfe Family Share")
slib.setLang("eprotect", "de", "ply-sent-invalid-data", "Dieser Spieler hat ungültige Daten gesendet.")
slib.setLang("eprotect", "de", "ply-failed-retrieving-data", "%s Daten konnten nicht abgerufen werden.")
slib.setLang("eprotect", "de", "net-limit-desc", "Die Zahl hier gibt an, wie oft Personen pro Sekunde mit dem Server networken können, bevor die Rate begrenzt wird.")
slib.setLang("eprotect", "de", "capture", "Screenshot")
slib.setLang("eprotect", "de", "check-ips", "Prüfe IP(s)")
slib.setLang("eprotect", "de", "fetch-data", "Daten abrufen")
elseif SERVER then
slib.setLang("eprotect", "de", "invalid-player", "Dieser Spieler ist ungültig!")
slib.setLang("eprotect", "de", "kick-net-overflow", "Du wurdest wegen Net-Overflow vom Server geworfen!")
slib.setLang("eprotect", "de", "banned-net-overflow", "Du wurdest wegen Net-Overflow vom Server gebannt!")
slib.setLang("eprotect", "de", "banned-net-exploitation", "Du wurdest wegen Net-Exploiting vom Server gebannt!")
slib.setLang("eprotect", "de", "kick-malicious-intent", "Du wurdest wegen bösen Absichten vom Server geworfen!")
slib.setLang("eprotect", "de", "banned-malicious-intent", "Du wurdest wegen bösen Absichten vom Server gebannt!")
slib.setLang("eprotect", "de", "banned-exploit-attempt", "Du wurdest wegen versuchtem Exploiting gebannt!")
slib.setLang("eprotect", "de", "sc-timeout", "Du musst %s Sekunden warten, bis du %s wieder screenshoten kannst!")
slib.setLang("eprotect", "de", "sc-failed", "Screenshot von %s konnte nicht abgerufen werden, dies ist verdächtig!")
slib.setLang("eprotect", "de", "has-family-share", "%s spielt über Family Sharing, SteamID64 des Besitzers ist: %s!")
slib.setLang("eprotect", "de", "no-family-share", "%s spielt das Spiel nicht durch Family Sharing!")
slib.setLang("eprotect", "de", "no-correlation", "Wir konnten keine IPs für %s korrelieren.")
end

View File

@@ -0,0 +1,88 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if CLIENT then
slib.setLang("eprotect", "pl", "sc-preview", "Podgląd zrzutu ekranu - ")
slib.setLang("eprotect", "pl", "net-info", "Net Info - ")
slib.setLang("eprotect", "pl", "ip-info", "IP Info - ")
slib.setLang("eprotect", "pl", "id-info", "ID Info - ")
slib.setLang("eprotect", "pl", "ip-correlation", "Lokalizacja IP - ")
slib.setLang("eprotect", "pl", "table-viewer", "Table Viewer")
slib.setLang("eprotect", "pl", "tab-general", "Ogólne")
slib.setLang("eprotect", "pl", "tab-identifier", "Identifier")
slib.setLang("eprotect", "pl", "tab-netlimiter", "Ogranicznik Net")
slib.setLang("eprotect", "pl", "tab-netlogger", "Rejestrator Net")
slib.setLang("eprotect", "pl", "tab-exploitpatcher", "Łatka Exploitów")
slib.setLang("eprotect", "pl", "tab-exploitfinder", "Exploit Finder")
slib.setLang("eprotect", "pl", "tab-fakeexploits", "Fake Exploits")
slib.setLang("eprotect", "pl", "tab-datasnooper", "Data Snooper")
slib.setLang("eprotect", "pl", "player-list", "Lista graczy")
slib.setLang("eprotect", "pl", "ratelimit", "Ratelimit")
slib.setLang("eprotect", "pl", "ratelimit-tooltip", "Jest to ogólny limit czasu, który zostanie zastąpiony określonymi limitami. (Xs/Y)")
slib.setLang("eprotect", "pl", "timeout", "Timeout")
slib.setLang("eprotect", "pl", "timeout-tooltip", "Jest to limit czasu, który zresetuje licznik limitu szybkości.")
slib.setLang("eprotect", "pl", "overflowpunishment", "Próg kary Net Exploit")
slib.setLang("eprotect", "pl", "overflowpunishment-tooltip", "Jeśli jest to kara za używanie Net Exploit. (1 = kick, 2 = ban)")
slib.setLang("eprotect", "pl", "enable-networking", "Włącz sieć")
slib.setLang("eprotect", "pl", "disable-networking", "Wyłącz sieć")
slib.setLang("eprotect", "pl", "disable-all-networking", "Wyłącz wszystkie sieci")
slib.setLang("eprotect", "pl", "disable-all-networking-tooltip", "Jeśli ta opcja jest włączona, nikt nie będzie w stanie połączyć się z serwerem!")
slib.setLang("eprotect", "pl", "player", "Gracz")
slib.setLang("eprotect", "pl", "net-string", "Zmienna Net")
slib.setLang("eprotect", "pl", "called", "Zapytanie")
slib.setLang("eprotect", "pl", "len", "Rozmiar")
slib.setLang("eprotect", "pl", "type", "Typ")
slib.setLang("eprotect", "pl", "activated", "Aktywowany")
slib.setLang("eprotect", "pl", "secure", "Zabezpieczone")
slib.setLang("eprotect", "pl", "ip", "IP Adress")
slib.setLang("eprotect", "pl", "date", "Data")
slib.setLang("eprotect", "pl", "country-code", "Kod kraju")
slib.setLang("eprotect", "pl", "status", "Status")
slib.setLang("eprotect", "pl", "unknown", "Nieznany")
slib.setLang("eprotect", "pl", "secured", "Zabezpieczone")
slib.setLang("eprotect", "pl", "check-ids", "Sprawdź ID")
slib.setLang("eprotect", "pl", "correlate-ip", "Lokalizacja IP")
slib.setLang("eprotect", "pl", "family-share-check", "Sprawdź Family Share")
slib.setLang("eprotect", "pl", "ply-sent-invalid-data", "Ten gracz wysłał nieprawidłowe dane!")
slib.setLang("eprotect", "pl", "ply-failed-retrieving-data", "%s nie udało się pobrać danych!")
slib.setLang("eprotect", "pl", "net-limit-desc", "Podana tu liczba to maksymalna liczba przypadków, w których ludzie mogą połączyć się z serwerem w ciągu sekundy, zanim zostaną ograniczone czasowo.")
slib.setLang("eprotect", "pl", "capture", "Screenshot")
slib.setLang("eprotect", "pl", "check-ips", "Sprawdź IP(s)")
slib.setLang("eprotect", "pl", "fetch-data", "Sprawdź Dane")
elseif SERVER then
slib.setLang("eprotect", "pl", "invalid-player", "Nie ma takiego Gracza!")
slib.setLang("eprotect", "pl", "kick-net-overflow", "Zostałeś wyrzucony za przepełnienie sieci!")
slib.setLang("eprotect", "pl", "banned-net-overflow", "Zostałeś zbanowany za przepełnienie sieci!")
slib.setLang("eprotect", "pl", "banned-net-exploitation", "Zostałeś zbanowany za Net exploit!")
slib.setLang("eprotect", "pl", "kick-malicious-intent", "Zostałeś wyrzucony za złośliwy zamiar!")
slib.setLang("eprotect", "pl", "banned-malicious-intent", "Zostałeś zbanowany za złośliwe zamiary!")
slib.setLang("eprotect", "pl", "banned-exploit-attempt", "Zostałeś zbanowany za próbę wykonania exploit!")
slib.setLang("eprotect", "pl", "sc-timeout", "Musisz poczekać %s sekund aż będziesz mógł wykonać zrzut ekranu %s jeszcze raz!")
slib.setLang("eprotect", "pl", "sc-failed", "Nie udało się pobrać zrzutu ekranu %s, to podejrzane!")
slib.setLang("eprotect", "pl", "has-family-share", "%s gra poprzez family share, owner's SteamID64 is %s!")
slib.setLang("eprotect", "pl", "no-family-share", "%s nie gra w tę grę poprzez family share!")
slib.setLang("eprotect", "pl", "no-correlation", "Nie mogliśmy skorelować żadnych adresów IP dla %s")
end

View File

@@ -0,0 +1,88 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if CLIENT then
slib.setLang("eprotect", "ru", "sc-preview", "Предпросмотр снимка экрана - ")
slib.setLang("eprotect", "ru", "net-info", "Net Информация - ")
slib.setLang("eprotect", "ru", "ip-info", "IP Информация - ")
slib.setLang("eprotect", "ru", "id-info", "ID Информация - ")
slib.setLang("eprotect", "ru", "ip-correlation", "IP Совпадение - ")
slib.setLang("eprotect", "ru", "table-viewer", "Просмотр таблиц")
slib.setLang("eprotect", "ru", "tab-general", "Главная")
slib.setLang("eprotect", "ru", "tab-identifier", "Идентификатор")
slib.setLang("eprotect", "ru", "tab-netlimiter", "Net Лимит")
slib.setLang("eprotect", "ru", "tab-netlogger", "Net Регистратор")
slib.setLang("eprotect", "ru", "tab-exploitpatcher", "Патчер эксплойтов")
slib.setLang("eprotect", "ru", "tab-exploitfinder", "Поиск эксплойтов")
slib.setLang("eprotect", "ru", "tab-fakeexploits", "Поддельные эксплойты")
slib.setLang("eprotect", "ru", "tab-datasnooper", "Просмотр Data'ы игрока")
slib.setLang("eprotect", "ru", "player-list", "Список игроков")
slib.setLang("eprotect", "ru", "ratelimit", "Ограничение скорости оборотов")
slib.setLang("eprotect", "ru", "ratelimit-tooltip", "Это общий предел скорости оборотов, который будет отменен конкретными установленными пределами. (Xs / Y)")
slib.setLang("eprotect", "ru", "timeout", "Тайм-аут")
slib.setLang("eprotect", "ru", "timeout-tooltip", "Это тайм-аут, который сбросит счетчик предельного числа оборотов..")
slib.setLang("eprotect", "ru", "overflowpunishment", "Наказание за переполнение")
slib.setLang("eprotect", "ru", "overflowpunishment-tooltip", "Если включено, то люди получат наказание за слишком большое количество трафика сети. (1 = Кик, 2 = Бан)")
slib.setLang("eprotect", "ru", "enable-networking", "Включить сеть")
slib.setLang("eprotect", "ru", "disable-networking", "Отключить сеть")
slib.setLang("eprotect", "ru", "disable-all-networking", "Отключить все сети")
slib.setLang("eprotect", "ru", "disable-all-networking-tooltip", "Если этот параметр включен, никто не сможет подключиться к серверу по сети!")
slib.setLang("eprotect", "ru", "player", "Игрок")
slib.setLang("eprotect", "ru", "net-string", "Net строка")
slib.setLang("eprotect", "ru", "called", "Называется")
slib.setLang("eprotect", "ru", "len", "Длина")
slib.setLang("eprotect", "ru", "type", "Тип")
slib.setLang("eprotect", "ru", "activated", "Активирована")
slib.setLang("eprotect", "ru", "secure", "Защищена")
slib.setLang("eprotect", "ru", "ip", "IP Адрес")
slib.setLang("eprotect", "ru", "date", "Дата")
slib.setLang("eprotect", "ru", "country-code", "Код страны")
slib.setLang("eprotect", "ru", "status", "Статус")
slib.setLang("eprotect", "ru", "unknown", "Неизвестно")
slib.setLang("eprotect", "ru", "secured", "Защищена")
slib.setLang("eprotect", "ru", "check-ids", "Проверить ID")
slib.setLang("eprotect", "ru", "correlate-ip", "Соотнести IP")
slib.setLang("eprotect", "ru", "family-share-check", "Проверить Семейный доступ")
slib.setLang("eprotect", "ru", "ply-sent-invalid-data", "Этот игрок отправил неверные данные!")
slib.setLang("eprotect", "ru", "ply-failed-retrieving-data", "%s не удалось получить данные!")
slib.setLang("eprotect", "ru", "net-limit-desc", "Число здесь - это максимальное количество раз, которое люди могут отправить на сервер в секунду, прежде чем будут ограничены по частоте.")
slib.setLang("eprotect", "ru", "capture", "Скриншот")
slib.setLang("eprotect", "ru", "check-ips", "Проверить IP")
slib.setLang("eprotect", "ru", "fetch-data", "Получить Data'у ")
elseif SERVER then
slib.setLang("eprotect", "ru", "invalid-player", "Этот игрок недействителен!")
slib.setLang("eprotect", "ru", "kick-net-overflow", "Вас выгнали за переполнение сети!")
slib.setLang("eprotect", "ru", "banned-net-overflow", "Вас забанили за переполнение сети!")
slib.setLang("eprotect", "ru", "banned-net-exploitation", "Вас забанили за эксплуатацию в сети!")
slib.setLang("eprotect", "ru", "kick-malicious-intent", "Вас выгнали за злой умысел!")
slib.setLang("eprotect", "ru", "banned-malicious-intent", "Вас забанили за злой умысел!")
slib.setLang("eprotect", "ru", "banned-exploit-attempt", "Вас забанили за попытку использовать эксплоит!")
slib.setLang("eprotect", "ru", "sc-timeout", "Вам нужно подождать %s секунд, пока вы снова не сможете сделать снимок экрана %s!")
slib.setLang("eprotect", "ru", "sc-failed", "Не удалось получить снимок экрана %s, это подозрительно!")
slib.setLang("eprotect", "ru", "has-family-share", "%s играет в игру через семейный ресурс, SteamID64 владельца %s!")
slib.setLang("eprotect", "ru", "no-family-share", "%s не играет в игру через семейный просмотр.")
slib.setLang("eprotect", "ru", "no-correlation", "Нам не удалось сопоставить IP-адреса для %s")
end

View File

@@ -0,0 +1,88 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if CLIENT then
slib.setLang("eprotect", "es", "sc-preview", " Preview de Screenshot - ")
slib.setLang("eprotect", "es", "net-info", "Información Net - ")
slib.setLang("eprotect", "es", "ip-info", "Información de IP - ")
slib.setLang("eprotect", "es", "id-info", "Información de ID - ")
slib.setLang("eprotect", "es", "ip-correlation", "Correlación de IP - ")
slib.setLang("eprotect", "es", "table-viewer", "Visor de Mesas")
slib.setLang("eprotect", "es", "tab-general", "General")
slib.setLang("eprotect", "es", "tab-identifier", "Identificador")
slib.setLang("eprotect", "es", "tab-netlimiter", "Limitador Net")
slib.setLang("eprotect", "es", "tab-netlogger", "Loggs Net")
slib.setLang("eprotect", "es", "tab-exploitpatcher", "Parcheador de Exploits")
slib.setLang("eprotect", "es", "tab-exploitfinder", "Buscador de Exploits")
slib.setLang("eprotect", "es", "tab-fakeexploits", "Exploits Falsos")
slib.setLang("eprotect", "es", "tab-datasnooper", "Fisgón de Datos")
slib.setLang("eprotect", "es", "player-list", "Lista de Jugadores")
slib.setLang("eprotect", "es", "ratelimit", "LimitadorRate")
slib.setLang("eprotect", "es", "ratelimit-tooltip", "Este es un Limitador-Rate y funciona para poner ciertos limites. (Xs/Y)")
slib.setLang("eprotect", "es", "timeout", "Tiempo")
slib.setLang("eprotect", "es", "timeout-tooltip", "El tiempo el el intervalo entre que se resetea el contador del LimitadorRate.")
slib.setLang("eprotect", "es", "overflowpunishment", "Castigo de Overflow")
slib.setLang("eprotect", "es", "overflowpunishment-tooltip", "Este es el castigo que va a tener la gente que usa demasiado network. (1 = kick, 2 = ban)")
slib.setLang("eprotect", "es", "enable-networking", "Habilitar networking")
slib.setLang("eprotect", "es", "disable-networking", "Deshabilitar networking")
slib.setLang("eprotect", "es", "disable-all-networking", "Deshabilitar todo el networking")
slib.setLang("eprotect", "es", "disable-all-networking-tooltip", "Si esto esta habilitado, nadie va a poder usar el network en el server!")
slib.setLang("eprotect", "es", "player", "Jugador")
slib.setLang("eprotect", "es", "net-string", "Net String")
slib.setLang("eprotect", "es", "called", "LLamado")
slib.setLang("eprotect", "es", "len", "Len")
slib.setLang("eprotect", "es", "type", "Tipo")
slib.setLang("eprotect", "es", "activated", "Activado")
slib.setLang("eprotect", "es", "secure", "Seguro")
slib.setLang("eprotect", "es", "ip", "Dirección IP")
slib.setLang("eprotect", "es", "date", "Fecha")
slib.setLang("eprotect", "es", "country-code", "Código de País")
slib.setLang("eprotect", "es", "status", "Status")
slib.setLang("eprotect", "es", "unknown", "Desconocido")
slib.setLang("eprotect", "es", "secured", "Seguro")
slib.setLang("eprotect", "es", "check-ids", "Checkear ID(s)")
slib.setLang("eprotect", "es", "correlate-ip", "Correlacionar IP(s)")
slib.setLang("eprotect", "es", "family-share-check", "Checkear Cuentas Familiares")
slib.setLang("eprotect", "es", "ply-sent-invalid-data", "Este Jugador envió datos inválidos!")
slib.setLang("eprotect", "es", "ply-failed-retrieving-data", "%s Fallo al recibir datos!")
slib.setLang("eprotect", "es", "net-limit-desc", "Este nuemero es la cantidad de veces que la gente puede usar network en un segundo antes de usar el LimitadorRate.")
slib.setLang("eprotect", "es", "capture", "Screenshot")
slib.setLang("eprotect", "es", "check-ips", "Checkear IP(s)")
slib.setLang("eprotect", "es", "fetch-data", "Buscar Datos")
elseif SERVER then
slib.setLang("eprotect", "es", "invalid-player", "Este Jugador en invalido!")
slib.setLang("eprotect", "es", "kick-net-overflow", "Fuiste expulsado por net overflow!")
slib.setLang("eprotect", "es", "banned-net-overflow", "Fuiste suspendido por net overflow!")
slib.setLang("eprotect", "es", "banned-net-exploitation", "Fuiste expulsado por exploitiar mensajes net!")
slib.setLang("eprotect", "es", "kick-malicious-intent", "Fuiste expulsado por intenciones maliciosas!")
slib.setLang("eprotect", "es", "banned-malicious-intent", "Fuiste suspendido por intenciones maliciosas!")
slib.setLang("eprotect", "es", "banned-exploit-attempt", "Fuiste suspendido por intentar usar un maliciosas!")
slib.setLang("eprotect", "es", "sc-timeout", "Tenes que esperar %s segundos antes de poder screeshotear a %s otra vez!")
slib.setLang("eprotect", "es", "sc-failed", "Fallo al cargar screenshot de %s, sospechoso...")
slib.setLang("eprotect", "es", "has-family-share", "%s esta jugando con una cuenta familiar, el SteamD64 del dueño es %s")
slib.setLang("eprotect", "es", "no-family-share", "%s no esta jugando con una cuenta familiar!")
slib.setLang("eprotect", "es", "no-correlation", "No se pudieron correlacionar IPs con %s")
end

View File

@@ -0,0 +1,88 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if CLIENT then
slib.setLang("eprotect", "tr", "sc-preview", "Ekranı Görüntüle - ")
slib.setLang("eprotect", "tr", "net-info", "Ağ bilgisi - ")
slib.setLang("eprotect", "tr", "ip-info", "IP bilgisi - ")
slib.setLang("eprotect", "tr", "id-info", "ID bilgisi - ")
slib.setLang("eprotect", "tr", "ip-correlation", "IP ilişkisi - ")
slib.setLang("eprotect", "tr", "table-viewer", "Masa Görüntülemesi")
slib.setLang("eprotect", "tr", "tab-general", "Genel")
slib.setLang("eprotect", "tr", "tab-identifier", "Tanımlayıcı")
slib.setLang("eprotect", "tr", "tab-netlimiter", "Bağ limitleyicisi")
slib.setLang("eprotect", "tr", "tab-netlogger", "Ağ kayıısı")
slib.setLang("eprotect", "tr", "tab-exploitpatcher", "Exploit Güncelleyici")
slib.setLang("eprotect", "tr", "tab-exploitfinder", "Exploit Bulucusu")
slib.setLang("eprotect", "tr", "tab-fakeexploits", "Sahte Exploitler")
slib.setLang("eprotect", "tr", "tab-datasnooper", "Kayıt ağı")
slib.setLang("eprotect", "tr", "player-list", "Oyuncu Listesi")
slib.setLang("eprotect", "tr", "ratelimit", "Hız sınırlayıcısı")
slib.setLang("eprotect", "tr", "ratelimit-tooltip", "Bu genel bir hız sınırlayıcısı. (Xs/Y)")
slib.setLang("eprotect", "tr", "timeout", "Zaman Aşımı")
slib.setLang("eprotect", "tr", "timeout-tooltip", "Bu zaman aşımı genel hız sınırlayıcısına karşıdır.")
slib.setLang("eprotect", "tr", "overflowpunishment", "Taşma cezası")
slib.setLang("eprotect", "tr", "overflowpunishment-tooltip", "Bu ceza ağı rahatlatmak için uygulanır. (1 = kick, 2 = ban)")
slib.setLang("eprotect", "tr", "enable-networking", "Ağ oluşturmayı aktifleştir")
slib.setLang("eprotect", "tr", "disable-networking", "Ağ oluşturmayı engelle")
slib.setLang("eprotect", "tr", "disable-all-networking", "Tüm ağ oluşturmayı engelle")
slib.setLang("eprotect", "tr", "disable-all-networking-tooltip", "Eğer bu aktif olursa kimse sunucuya giremez!")
slib.setLang("eprotect", "tr", "player", "Player")
slib.setLang("eprotect", "tr", "net-string", "Net String")
slib.setLang("eprotect", "tr", "called", "Called")
slib.setLang("eprotect", "tr", "len", "Len")
slib.setLang("eprotect", "tr", "type", "Type")
slib.setLang("eprotect", "tr", "activated", "Activated")
slib.setLang("eprotect", "tr", "secure", "Secured")
slib.setLang("eprotect", "tr", "ip", "IP Adress")
slib.setLang("eprotect", "tr", "date", "Date")
slib.setLang("eprotect", "tr", "country-code", "Country code")
slib.setLang("eprotect", "tr", "status", "Status")
slib.setLang("eprotect", "tr", "unknown", "Unknown")
slib.setLang("eprotect", "tr", "secured", "Secured")
slib.setLang("eprotect", "tr", "check-ids", "ID'leri kontrol et")
slib.setLang("eprotect", "tr", "correlate-ip", "IP adreslerini ilişkilendir")
slib.setLang("eprotect", "tr", "family-share-check", "Aile paylaşımını kontrol et")
slib.setLang("eprotect", "tr", "ply-sent-invalid-data", "Bu oyuncu geçersiz data gönderdi!")
slib.setLang("eprotect", "tr", "ply-failed-retrieving-data", "%s data alınamadı!")
slib.setLang("eprotect", "tr", "net-limit-desc", "Buradaki sayı, insanların hız sınırlandırılmadan önce bir saniye içinde sunucuya maksimum ağ kurma sayısıdır..")
slib.setLang("eprotect", "tr", "capture", "Screenshot")
slib.setLang("eprotect", "tr", "check-ips", "Check IP(s)")
slib.setLang("eprotect", "tr", "fetch-data", "Fetch Data")
elseif SERVER then
slib.setLang("eprotect", "tr", "invalid-player", "böyle bir oyuncu yok!")
slib.setLang("eprotect", "tr", "kick-net-overflow", "Net ağına karşı kötü niyetli eylem gerçekleştirdiğinizden dolayı atıldınız!")
slib.setLang("eprotect", "tr", "banned-net-overflow", "Net ağına karşı kötü niyetli eylem gerçekleştirdiğinizden dolayı yasaklandınız !")
slib.setLang("eprotect", "tr", "banned-net-exploitation", "Net ağına karşı kötü niyetli eylem gerçekleştirdiğinizden dolayı yasaklandınız!")
slib.setLang("eprotect", "tr", "kick-malicious-intent", "Kötü niyetli eylem gerçekleştirdiğinizden dolayı sunucudan atıldınız!")
slib.setLang("eprotect", "tr", "banned-malicious-intent", "Kötü niyetli eylem gerçekleştirdiğinizden dolayı sunucudan yasaklandınız!")
slib.setLang("eprotect", "tr", "banned-exploit-attempt", "Exploit kullanmaya çalıştığın için sunucudan yasaklandın !")
slib.setLang("eprotect", "tr", "sc-timeout", "Şu kadar %s saniye beklemen gerek %s tekrar ekran görüntüsü almak için!")
slib.setLang("eprotect", "tr", "sc-failed", "Şu kişiden ekran görüntüsü alınamadı %s, şüpheli!")
slib.setLang("eprotect", "tr", "has-family-share", "%s Aile paylaşımından oynuyor oyunu ödünç aldığı kişinin ID'si %s!")
slib.setLang("eprotect", "tr", "no-family-share", "%s Aile paylaşımından oynamıyor!")
slib.setLang("eprotect", "tr", "no-correlation", "Şu değer için hiç bir IP adresi ilişkilendirilemedi %s")
end

View File

@@ -0,0 +1,29 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local punished = {}
eProtect.logDetectionHandeler = function(ply, reason, info, type)
if eProtect.data.general["bypassgroup"][ply:GetUserGroup()] or eProtect.config["disabledModules"]["detection_log"] then return end
local sid, sid64 = ply:SteamID(), ply:SteamID64()
if eProtect.data.general["bypass_sids"][sid] or eProtect.data.general["bypass_sids"][sid64] then return end
if punished[sid] and CurTime() < punished[sid] then return end
punished[sid] = CurTime() + eProtect.data.general.timeout + 1
local name, sid64 = ply:Nick(), ply:SteamID64()
eProtect.logDetection(name, sid64, reason, info, type)
end
if eProtect.queueNetworking then
eProtect.queueNetworking(nil, "punishmentLogging")
end

View File

@@ -0,0 +1,50 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.data = eProtect.data or {}
eProtect.data.exploitPatcher = eProtect.data.exploitPatcher or {}
eProtect.patcher = eProtect.patcher or {}
local function addExploitPatch(str, func)
eProtect.patcher[str] = func
eProtect.data.exploitPatcher[str] = true
end
addExploitPatch("start_wd_emp", function(ply)
if IsValid(ply) and ply:IsPlayer() then
local wep = ply:GetActiveWeapon()
if !IsValid(wep) or wep:GetClass() ~= "weapon_hack_phone" then
return false
end
end
end)
addExploitPatch("gPrinters.removePrinter", function(ply)
if IsValid(ply) and ply:IsPlayer() then
return ply:IsSuperAdmin()
end
end)
hook.Add("eP:PreNetworking", "eP:ExploitPatches", function(ply, netstring, len)
if eProtect.patcher[netstring] and isfunction(eProtect.patcher[netstring]) and !eProtect.config["disabledModules"]["exploit_patcher"] then
local result = eProtect.patcher[netstring](ply)
if result == false then
eProtect.logDetectionHandeler(ply, "patched-exploit", netstring, 2)
eProtect.punish(ply, 2, slib.getLang("eprotect", eProtect.config["language"], "banned-exploit-attempt"))
return false end
end
end)
if eProtect.queueNetworking then
eProtect.queueNetworking(nil, "exploitPatcher")
end

View File

@@ -0,0 +1,60 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.data = eProtect.data or {}
eProtect.data.fakeNets = eProtect.data.fakeNets or {}
local generatedOnes = {}
eProtect.getRandUniqueNum = function()
local rand = math.random(1, 999999)
if generatedOnes[rand] then return eProtect.getRandUniqueNum() end
generatedOnes[rand] = true
return rand
end
eProtect.createFakeNets = function()
if eProtect.config["disabledModules"]["fake_exploits"] then return end
local createdNets = 0
local maxFakeNets = 3
local mixedTbl = {}
for k,v in pairs(eProtect.data.badNets) do
mixedTbl[eProtect.getRandUniqueNum()] = k
end
for k, netstring in pairs(mixedTbl) do
local validateNet = tobool(util.NetworkStringToID(netstring))
if validateNet then continue end
createdNets = createdNets + 1
eProtect.data.fakeNets[netstring] = eProtect.data.fakeNets[netstring] or eProtect.data.badNets[netstring]
eProtect.data.fakeNets[netstring].enabled = true
util.AddNetworkString(netstring)
net.Receive(netstring, function(_, ply)
eProtect.logDetectionHandeler(ply, "fake-exploit", netstring, 2)
eProtect.punish(ply, 2, slib.getLang("eprotect", eProtect.config["language"], "banned-net-exploitation"))
end)
if maxFakeNets > 0 and (createdNets >= maxFakeNets) then break end
end
if eProtect.queueNetworking then
eProtect.queueNetworking(nil, "fakeNets")
end
end
eProtect.createFakeNets()

View File

@@ -0,0 +1,13 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
hook.Add("eP:PostHTTP", "eP:HTTPLoggingHandeler", function(url, type)
eProtect.logHTTP(url, type)
end)

View File

@@ -0,0 +1,36 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local function handleIPLoggin(ply, ip)
local sid64 = ply:SteamID64()
http.Fetch("http://ip-api.com/json/"..ip, function(json)
json = util.JSONToTable(json)
local result = json["countryCode"]
if !result then result = "N/A" end
eProtect.registerIP(sid64, ip, result)
end, function()
eProtect.registerIP(sid64, ip, "N/A")
end)
end
hook.Add("PlayerInitialSpawn", "eP:IPLogging", function(ply)
if ply:IsBot() or eProtect.config["disabledModules"]["identifier"] then return end
local ip = ""
for k,v in ipairs(string.ToTable(ply:IPAddress())) do
if v == ":" then break end
ip = ip..v
end
handleIPLoggin(ply, ip)
end)

View File

@@ -0,0 +1,78 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.data = eProtect.data or {}
eProtect.data.netLimitation = eProtect.data.netLimitation or {}
for i = 1, 2048 do
local netstring = util.NetworkIDToString(i)
if !netstring then continue end
if netstring and isstring(netstring) and eProtect.data.netLimitation[netstring] == nil and !eProtect.data.fakeNets[netstring] then
local func = net.Receivers[string.lower(netstring)]
if func then eProtect.data.netLimitation[netstring] = 0 end
end
end
if eProtect.queueNetworking then
eProtect.queueNetworking(nil, "netLimitation")
end
local generalCounter = {}
local specificCounter = {}
local timeout = {}
hook.Add("eP:PreNetworking", "eP:NetLimiter", function(ply, netstring, len)
if !eProtect.data or !eProtect.data.general or eProtect.data.netLimitation[netstring] == -1 or eProtect.config["disabledModules"]["net_limiter"] then return end
if !eProtect.data.netLimitation[netstring] then
local func = net.Receivers[string.lower(netstring)]
if func then eProtect.data.netLimitation[netstring] = 0 end
eProtect.queueNetworking(nil, "netLimitation")
end
local sid, sid64 = ply:SteamID(), ply:SteamID64()
local specific = eProtect.data.netLimitation[netstring] ~= nil and eProtect.data.netLimitation[netstring] > 0 or false
specificCounter[sid] = specificCounter[sid] or {}
if !timeout[sid] then timeout[sid] = CurTime() end
if timeout[sid] and ((CurTime() - timeout[sid]) >= eProtect.data.general.timeout) then
specificCounter[sid] = {}
generalCounter[sid] = 0
timeout[sid] = nil
end
if specific then
specificCounter[sid][netstring] = specificCounter[sid][netstring] or 0
specificCounter[sid][netstring] = specificCounter[sid][netstring] + 1
else
generalCounter[sid] = generalCounter[sid] or 0
generalCounter[sid] = generalCounter[sid] + 1
end
local counter = specific and specificCounter[sid][netstring] or generalCounter[sid]
local limit = specific and eProtect.data.netLimitation[netstring] or eProtect.data.general.ratelimit
if limit > -1 and counter > limit and eProtect.data.general.overflowpunishment > 0 and !eProtect.data.general["bypassgroup"][ply:GetUserGroup()] and !eProtect.data.general["bypass_sids"][sid] and !eProtect.data.general["bypass_sids"][sid64] then
if eProtect.data.general["whitelistergroup"][ply:GetUserGroup()] then
eProtect.data.netLimitation[netstring] = -1
eProtect.queueNetworking(nil, "netLimitation")
return end
eProtect.logDetectionHandeler(ply, "net-overflow", netstring, eProtect.data.general.overflowpunishment)
if eProtect.data.general.overflowpunishment <= 2 then
eProtect.punish(ply, eProtect.data.general.overflowpunishment, slib.getLang("eprotect", eProtect.config["language"], eProtect.data.general.overflowpunishment == 1 and "kick-net-overflow" or "banned-net-overflow"))
end
return false
end
end)

View File

@@ -0,0 +1,31 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.data = eProtect.data or {}
eProtect.data.netLogging = eProtect.data.netLogging or {}
hook.Add("eP:PostNetworking", "eP:LogNetworking", function(ply, net, len)
if !net or len == nil or eProtect.config["disabledModules"]["net_logger"] then return end
eProtect.data.netLogging[net] = eProtect.data.netLogging[net] or {called = 0, len = 0, playercalls = {}}
eProtect.data.netLogging[net].called = eProtect.data.netLogging[net].called + 1
eProtect.data.netLogging[net].len = eProtect.data.netLogging[net].len + len
if IsValid(ply) and ply:IsPlayer() then
local sid = ply:SteamID()
eProtect.data.netLogging[net].playercalls[sid] = eProtect.data.netLogging[net].playercalls[sid] or 0
eProtect.data.netLogging[net].playercalls[sid] = eProtect.data.netLogging[net].playercalls[sid] + 1
end
if eProtect.queueNetworking then
eProtect.queueNetworking(nil, "netLogging")
end
end)

View File

@@ -0,0 +1,575 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.queneData = eProtect.queneData or {}
eProtect.saveQueue = eProtect.saveQueue or {}
eProtect.data = eProtect.data or {}
eProtect.data.disabled = eProtect.data.disabled or {}
local ignoreSaving = {
["fakeNets"] = true,
["netLogging"] = true,
["exploitPatcher"] = true
}
util.AddNetworkString("eP:Handeler")
local function openMenu(ply)
net.Start("eP:Handeler")
net.WriteUInt(2, 3)
net.Send(ply)
end
local convertedTbl
convertedTbl = function(tbl)
local converted_tbl = {}
for k,v in pairs(tbl) do
if istable(v) then v = convertedTbl(v) end
local isSID = util.SteamIDFrom64(k) != "STEAM_0:0:0"
if isSID then
converted_tbl["sid64_"..k] = v
else
converted_tbl[k] = v
end
end
return converted_tbl
end
local function networkData(ply, data, specific)
if !data then return end
local data = util.TableToJSON(convertedTbl(data))
data = util.Compress(data)
net.Start("eP:Handeler")
net.WriteUInt(1, 3)
net.WriteUInt(#data, 32)
net.WriteData(data, #data)
if specific then
net.WriteString(specific)
end
net.Send(ply)
end
eProtect.hasPermission = function(ply, specific)
return eProtect.config["permission"][ply:GetUserGroup()]
end
local punished = {}
eProtect.getData = function(specific)
local data = file.Read("eprotect/data.json", "DATA")
if !data then return end
data = util.JSONToTable(data)
if specific then
data = data[specific]
end
for k,v in pairs(data) do
eProtect.data[k] = v
end
return table.Copy(data)
end
eProtect.dataVerification = function()
local data = eProtect.getData()
data = data or {}
data["general"] = data["general"] or {}
for k,v in pairs(eProtect.BaseConfig) do
if data["general"][k] then continue end
data["general"][k] = v[1]
end
for k,v in pairs(eProtect.data) do
if ignoreSaving[k] or k == "general" then continue end
data[k] = v
end
file.CreateDir("eprotect")
file.Write("eprotect/data.json", util.TableToJSON(data))
eProtect.getData()
eProtect.queueNetworking()
end
eProtect.saveData = function()
file.CreateDir("eprotect")
local data = table.Copy(eProtect.data)
for k, v in pairs(data) do
if ignoreSaving[k] then data[k] = nil end
end
file.Write("eprotect/data.json", util.TableToJSON(data))
end
eProtect.canNetwork = function(ply, netstring)
if !IsValid(ply) or !ply:IsPlayer() then return end
if (punished[ply:SteamID()] or eProtect.data.disabled[ply:SteamID()] or eProtect.data.general["disable-all-networking"]) and (netstring ~= "eP:Handeler") then return false end
return true
end
eProtect.punish = function(ply, type, msg, duration)
if eProtect.data.general["bypassgroup"][ply:GetUserGroup()] or eProtect.data.general["bypass_sids"][ply:SteamID()] or eProtect.data.general["bypass_sids"][ply:SteamID64()] then return end
msg = eProtect.config["prefix"]..msg
punished[ply:SteamID()] = true
slib.punish(ply, type, msg, duration)
end
eProtect.networkData = function(ply)
if eProtect.queneData[ply:SteamID()] then
for k,v in pairs(eProtect.queneData[ply:SteamID()]) do
networkData(ply, eProtect.data[k], k)
eProtect.queneData[ply:SteamID()][k] = nil
end
end
end
local function registerQuene(ply, specific)
if specific then
eProtect.queneData[ply:SteamID()] = eProtect.queneData[ply:SteamID()] and eProtect.queneData[ply:SteamID()] or {}
eProtect.queneData[ply:SteamID()][specific] = true
else
for k,v in pairs(eProtect.data) do
registerQuene(ply, k)
end
end
end
eProtect.queueNetworking = function(ply, specific)
if ply then
registerQuene(ply, specific)
else
for k,v in pairs(player.GetAll()) do
if !IsValid(v) then continue end
registerQuene(v, specific)
end
end
end
local screenshotRequested = {}
local idRequested = {}
local dataRequested = {}
local limitSC = {}
local function requestData(ply, target, type)
local data
if type == 1 then
local sid = target:SteamID()
if limitSC[sid] and CurTime() - limitSC[sid] < 10 then
slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "sc-timeout", math.Round(10 - (CurTime() - limitSC[sid])), target:Nick()), ply)
return end
limitSC[sid] = CurTime()
data = screenshotRequested
elseif type == 2 then
data = idRequested
elseif type == 3 then
data = dataRequested
end
if data[target] then return end
data[target] = ply
net.Start("eP:Handeler")
net.WriteUInt(3, 3)
net.WriteUInt(type, 2)
net.WriteBool(false)
net.Send(target)
timer.Simple(10, function()
if !target or !ply then return end
if data[target] then
data[target] = nil
slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "sc-failed", target:Nick()), ply)
end
end)
end
hook.Add("PlayerInitialSpawn", "eP:NetworkingQueuer", function(ply)
eProtect.queueNetworking(ply)
local sid = ply:SteamID()
if punished[sid] then punished[sid] = nil end
end)
local function verifyBannedAlt(ply, sid64, type)
sid64 = sid64 or ply:SteamID64()
local isBanned = slib.isBanned(sid64, function(banned, sid) if banned then if IsValid(ply) then slib.punish(ply, type, eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "punished-alt")) end end end)
if isBanned then
slib.punish(ply, type, eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "punished-alt"))
end
return isBanned
end
local settingConverter = { // Its reverted on clientside
[1] = 3,
[2] = 1,
[3] = 2
}
hook.Add("PlayerInitialSpawn", "eP:AutomaticChecks", function(ply)
local automatic_identifier = tonumber(eProtect.data.general["automatic-identifier"]) or 1
timer.Simple(1.5, function() -- Giving time to set usergroup.
if !IsValid(ply) or !ply:IsPlayer() or ply:IsBot() or eProtect.data.general["bypassgroup"][ply:GetUserGroup()] or eProtect.data.general["bypass_sids"][ply:SteamID64()] or eProtect.data.general["bypass_sids"][ply:SteamID()] then return end
if eProtect.data.general["block-vpn"] and !eProtect.data.general["bypass-vpn"][ply:GetUserGroup()] and !eProtect.data.general["bypass-vpn"][ply:SteamID64()] then
local ip = ""
for k,v in ipairs(string.ToTable(ply:IPAddress())) do
if v == ":" then break end
ip = ip..v
end
http.Fetch("https://proxycheck.io/v2/"..ip.."?vpn=1", function(result)
result = result and util.JSONToTable(result)
if result[ip] and result[ip].proxy == "yes" then
ply:Kick(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "vpn-blocked"))
end
end)
end
if automatic_identifier > 0 then
eProtect.correlateIP(ply, function(result)
local correlatedIPs = result
local plysid64, ownerplysid64 = ply:SteamID64(), ply:OwnerSteamID64()
local familyShare = ply:SteamID64() ~= ply:OwnerSteamID64()
local detections = !familyShare and !table.IsEmpty(correlatedIPs)
local altsDetected = {}
if detections then
local detect_type
detections = ""
if correlatedIPs and istable(correlatedIPs) and !table.IsEmpty(correlatedIPs) then
detect_type = "correlated-ip"
local foundAlts = {}
for k,v in ipairs(correlatedIPs) do
table.insert(altsDetected, v.sid64)
end
detections = slib.getLang("eprotect", eProtect.config["language"], "correlated-ip")
end
if familyShare then
detect_type = "family-share"
detections = detections == "" and slib.getLang("eprotect", eProtect.config["language"], "family-share") or detections.." "..slib.getLang("eprotect", eProtect.config["language"], "and").." "..slib.getLang("eprotect", eProtect.config["language"], "family-share")
table.insert(altsDetected, ownerplysid64)
end
if detections ~= "" then
local doneAction
if automatic_identifier == 1 then
for k, v in ipairs(player.GetAll()) do
if eProtect.data.general["notification-groups"][v:GetUserGroup()] then
slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "auto-detected-alt", ply:Nick(), detections), ply)
end
end
doneAction = true
elseif automatic_identifier == 2 then
for k,v in ipairs(altsDetected) do
doneAction = doneAction or verifyBannedAlt(ply, v, 1)
end
elseif automatic_identifier == 3 then
for k,v in ipairs(altsDetected) do
doneAction = doneAction or verifyBannedAlt(ply, v, 2)
end
end
if doneAction then
eProtect.logDetectionHandeler(ply, "alt-detection", slib.getLang("eprotect", eProtect.config["language"], detect_type), settingConverter[automatic_identifier])
end
end
end
end)
end
end)
end)
hook.Add("PlayerSay", "eP:OpenMenu", function(ply, text, public)
if eProtect.config["command"] == string.lower(text) then
if !eProtect.hasPermission(ply) then
return text
end
eProtect.networkData(ply)
openMenu(ply)
return ""
end
end )
hook.Add("eP:PreNetworking", "eP:Restrictions", function(ply, netstring, len)
if !eProtect.canNetwork(ply, netstring) then return false end
if len >= 512000 then eProtect.logDetectionHandeler(ply, "net-overflow", netstring, 1) eProtect.punish(ply, 1, slib.getLang("eprotect", eProtect.config["language"], "kick-net-overflow")) return false end
end)
hook.Add("eP:PreHTTP", "eP:PreventBlockedHTTP", function(url)
if eProtect.data.general["httpfocusedurls"] then
return eProtect.data.general["httpfocusedurlsisblacklist"] == !tobool(eProtect.data.general["httpfocusedurls"][url])
end
end)
timer.Create("eP:SaveCache", eProtect.config["process-save-queue"], 0, function()
if !eProtect.saveQueue then return end
eProtect.saveData()
eProtect.saveQueue = nil
end)
net.Receive("eP:Handeler", function(len, ply)
local gateway = net.ReadBit()
local action = net.ReadUInt(2)
if tobool(gateway) then
if !eProtect.hasPermission(ply) then return end
if action == 0 then
local id = net.ReadUInt(1)
local page = net.ReadUInt(15)
local search = net.ReadString()
if id == 0 then
eProtect.requestHTTPLog(ply, page, search)
elseif id == 1 then
eProtect.requestDetectionLog(ply, page, search)
end
elseif action == 1 then
local specific = net.ReadUInt(3)
local strings = {}
for i=1,specific do
strings[i] = net.ReadString()
end
local statement = net.ReadUInt(2)
local data
if statement == 1 then
data = net.ReadBool()
elseif statement == 2 then
data = net.ReadInt(32)
elseif statement == 3 then
local chunk = net.ReadUInt(32)
data = net.ReadData(chunk)
data = util.Decompress(data)
data = util.JSONToTable(data)
local converted_tbl = {}
for k, v in pairs(data) do
if string.sub(k, 1, 6) == "sid64_" then
local sid64 = string.sub(k, 7, #k)
if util.SteamIDFrom64(sid64) != "STEAM_0:0:0" then
k = sid64
end
end
converted_tbl[k] = v
end
data = converted_tbl
end
local finaldestination = eProtect.data
for k,v in ipairs(strings) do
finaldestination = finaldestination[v]
if k >= (#strings - 1) then break end
end
finaldestination[strings[#strings]] = data
eProtect.saveQueue = true
eProtect.queueNetworking(nil, strings[1])
elseif action == 2 then
local subaction = net.ReadUInt(3)
local target = net.ReadUInt(14)
target = Entity(target)
if !IsValid(target) or !target:IsPlayer() then slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "invalid-player"), ply) return end
local sid = target:SteamID()
if subaction == 1 then
eProtect.data.disabled[sid] = net.ReadBool()
eProtect.queueNetworking(nil, "disabled")
elseif subaction == 2 then
requestData(ply, target, net.ReadUInt(2))
elseif subaction == 3 then
local bit = net.ReadBit()
if tobool(bit) then
eProtect.correlateIP(target, function(result)
if !IsValid(target) or !IsValid(ply) then return end
if table.IsEmpty(result) then slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "no-correlation", target:Nick()), ply) return end
result = util.TableToJSON(result)
result = util.Base64Encode(result)
net.Start("eP:Handeler")
net.WriteUInt(4,3)
net.WriteUInt(target:EntIndex(), 14)
net.WriteString(result)
net.WriteBit(1)
net.Send(ply)
end)
else
eProtect.showIPs(target, ply)
end
elseif subaction == 4 then
local sid64 = target:SteamID64()
local ownersid64 = target:OwnerSteamID64()
if sid64 == ownersid64 then
slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "no-family-share", target:Nick()), ply)
else
slib.notify(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "has-family-share", target:Nick(), ownersid64), ply)
end
end
end
else
if action == 1 then
local subaction = net.ReadUInt(2)
local data
if subaction == 1 then
data = screenshotRequested
elseif subaction == 2 then
data = idRequested
elseif subaction == 3 then
data = dataRequested
end
if !data[ply] then if eProtect.config["punishMaliciousIntent"] then eProtect.punish(ply, 1, slib.getLang("eprotect", eProtect.config["language"], "kick-malicious-intent")) end return end
local target = data[ply]
data[ply] = nil
local id
if subaction == 3 then
local chunk = net.ReadUInt(32)
id = net.ReadData(chunk)
else
id = net.ReadString()
end
if !id or id == "" then
if eProtect.config["punishMaliciousIntent"] then
eProtect.punish(ply, 1, slib.getLang("eprotect", eProtect.config["language"], "kick-malicious-intent"))
end
return end
net.Start("eP:Handeler")
net.WriteUInt(3, 3)
net.WriteUInt(subaction, 2)
net.WriteUInt(ply:EntIndex(), 14)
net.WriteBool(true)
if subaction == 3 then
local chunk = #id
net.WriteUInt(chunk, 32)
net.WriteData(id, chunk)
else
net.WriteString(id)
end
net.Send(target)
elseif action == 2 then
local menu = net.ReadUInt(2)
local menus = {
[1] = "Loki",
[2] = "Exploit City"
}
eProtect.logDetectionHandeler(ply, "exploit-menu", menus[menu], 2)
eProtect.punish(ply, 2, slib.getLang("eprotect", eProtect.config["language"], "banned-exploit-menu"))
end
end
end)
hook.Add("eP:SQLConnected", "eP:TransferOldIPs", function()
local files = file.Find("eprotect/ips/*", "DATA")
for k,v in pairs(files) do
local sid64 = string.gsub(v, ".json", "")
local ips = file.Read("eprotect/ips/"..v, "DATA")
ips = util.JSONToTable(ips)
if !ips then continue end
for ip, data in pairs(ips) do
eProtect.registerIP(sid64, ip, data[1], data[2])
end
file.Delete("eprotect/ips/"..v)
end
file.Delete("eprotect/ips")
local save = false
if eProtect.data.httpLogging then
for url, v in pairs(eProtect.data.httpLogging) do
eProtect.logHTTP(url, v.type, v.called)
end
eProtect.data.httpLogging = nil
save = true
end
if eProtect.data.punishmentLogging then
for i = #eProtect.data.punishmentLogging, 1, -1 do
local data = eProtect.data.punishmentLogging[i]
eProtect.logDetection(data.ply, "", data.reason, data.info, data.type)
end
eProtect.data.punishmentLogging = nil
save = true
end
if save then
eProtect.saveData()
end
end)
eProtect.dataVerification()

View File

@@ -0,0 +1,67 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.overrides = eProtect.overrides or {}
if !eProtect.overrides["net.Incoming"] then
eProtect.overrides["net.Incoming"] = true
function net.Incoming( len, client )
local i = net.ReadHeader()
local strName = util.NetworkIDToString( i )
if ( !strName ) then return end
local func = net.Receivers[ strName:lower() ]
if ( !func ) then return end
len = len - 16
local pre = hook.Run("eP:PreNetworking", client, strName, len)
if pre == false then return end
func( len, client )
hook.Run("eP:PostNetworking", client, strName, len)
end
end
if !eProtect.config["disablehttplogging"] and ((!VC and !XEON and !mLib) or eProtect.config["ignoreDRM"]) then
if !eProtect.overrides["http.Fetch"] then
eProtect.overrides["http.Fetch"] = true
local oldFetch = http.Fetch
function http.Fetch(...)
local args = {...}
local result = hook.Run("eP:PreHTTP", args[1], "fetch")
if result == false then return end
oldFetch(...)
hook.Run("eP:PostHTTP", args[1], "fetch")
end
end
if !eProtect.overrides["http.Post"] then
eProtect.overrides["http.Post"] = true
local oldPost = http.Post
function http.Post(...)
local args = {...}
local result = hook.Run("eP:PreHTTP", args[1], "post")
if result == false then return end
oldPost(...)
hook.Run("eP:PostHTTP", args[1], "post")
end
end
end

View File

@@ -0,0 +1,245 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local query, db
local escape_str = function(str) return SQLStr(str, true) end
local create_queries = {
[1] = [[CREATE TABLE IF NOT EXISTS eprotect_ips(
id INTEGER PRIMARY KEY %s,
sid64 CHAR(17),
ip CHAR(15),
country CHAR(3),
logged_time INTEGER DEFAULT 0
)]],
[2] = [[CREATE TABLE IF NOT EXISTS eprotect_detections(
id INTEGER PRIMARY KEY %s,
name CHAR(32),
sid64 CHAR(17),
reason CHAR(32),
info CHAR(32),
type INTEGER DEFAULT 0,
logged_time INTEGER DEFAULT 0
)]],
[3] = [[CREATE TABLE IF NOT EXISTS eprotect_http(
id INTEGER PRIMARY KEY %s,
link CHAR(64),
type CHAR(6),
called INTEGER DEFAULT 0
)]]
}
local function makeTables()
for i = 1, #create_queries do
query(string.format(create_queries[i], eProtect.config["storage_type"] == "sql_local" and "AUTOINCREMENT" or "AUTO_INCREMENT"))
end
end
if eProtect.config["storage_type"] == "mysql" then
require("mysqloo")
query = function() end
local dbinfo = eProtect.config["mysql_info"]
db = mysqloo.connect(dbinfo.host, dbinfo.username, dbinfo.password, dbinfo.database, dbinfo.port)
function db:onConnected()
print(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "mysql_successfull"))
query = function(str, func)
local q = db:query(str)
q.onSuccess = function(_, data)
if func then
func(data)
end
end
q.onError = function(_, err) end
q:start()
end
escape_str = function(str) return db:escape(tostring(str)) end
makeTables()
hook.Run("eP:SQLConnected")
end
function db:onConnectionFailed(err)
print(eProtect.config["prefix"]..slib.getLang("eprotect", eProtect.config["language"], "mysql_failed"))
print( "Error:", err )
end
db:connect()
else
local oldFunc = sql.Query
query = function(str, func)
local result = oldFunc(str)
if func then
func(result)
end
end
makeTables()
end
local function handleCallbacksCorrelation(parent_tbl, correlated, callback)
for k,v in ipairs(parent_tbl) do
if !v then return end
end
if !callback then return end
callback(correlated or {})
end
eProtect.correlateIP = function(target, callback)
if !IsValid(target) then return end
local sid64 = target:SteamID64()
local tbl = {}
query("SELECT * FROM eprotect_ips WHERE sid64 = '"..sid64.."'", function(result)
if result and result[1] then
local parent_tbl = {}
for k, v in ipairs(result) do
parent_tbl[k] = false
end
for key, plydata in ipairs(result) do
query("SELECT * FROM eprotect_ips WHERE ip = '"..(plydata.ip).."'", function(result)
if result and result[1] then
for k,v in ipairs(result) do
if v.sid64 == sid64 then continue end
table.insert(tbl, {sid64 = v.sid64, ip = v.ip})
end
end
parent_tbl[key] = true
handleCallbacksCorrelation(parent_tbl, tbl, callback)
end)
end
end
end)
end
eProtect.showIPs = function(target, ply)
local sid64 = target:SteamID64()
query("SELECT * FROM eprotect_ips WHERE sid64 = '"..sid64.."'", function(result)
if !IsValid(target) or !IsValid(ply) or !result or !result[1] then return end
result = util.TableToJSON(result)
result = util.Base64Encode(result)
net.Start("eP:Handeler")
net.WriteUInt(4,3)
net.WriteUInt(target:EntIndex(), 14)
net.WriteString(result)
net.WriteBit(0)
net.Send(ply)
end)
end
eProtect.registerIP = function(sid64, ip, country, time)
query("SELECT * FROM eprotect_ips WHERE ip = '"..ip.."' AND sid64 = '"..sid64.."'", function(result)
if result and result[1] then return end
query(string.format("INSERT INTO eprotect_ips(ip, sid64, country, logged_time) VALUES('%s', %s, '%s', %s)", escape_str(ip), sid64, escape_str(country), time or os.time()))
end)
end
eProtect.logDetection = function(name, sid64, reason, info, type)
query(string.format("INSERT INTO eprotect_detections(name, sid64, reason, info, type, logged_time) VALUES('%s', '%s', '%s', '%s', '%s', %s)", escape_str(name), escape_str(sid64), escape_str(reason), escape_str(info), escape_str(type), os.time()))
end
eProtect.logHTTP = function(link, type, called)
link = escape_str(link)
query("SELECT * FROM eprotect_http WHERE link = '"..link.."'", function(result)
if result and result[1] then
query("UPDATE eprotect_http SET called = "..(result[1].called + 1).." WHERE link = '"..link.."'")
return end
query(string.format("INSERT INTO eprotect_http(link, type, called) VALUES('%s', '%s', "..(tonumber(called) or 1)..")", link, escape_str(type)))
end)
end
local function networkData(ply, data, id)
local compressed = util.Compress(util.TableToJSON(data))
net.Start("eP:Handeler")
net.WriteUInt(5, 3)
net.WriteUInt(id, 1)
net.WriteUInt(#compressed, 32)
net.WriteData(compressed, #compressed)
net.Send(ply)
end
local http_cd, detection_cd = {}, {}
eProtect.requestHTTPLog = function(ply, page, search)
if http_cd[ply] and http_cd[ply] > CurTime() then return end
http_cd[ply] = CurTime() + .1
search = search ~= "" and escape_str(search) or nil
local perpage, pageCount = 20, 1
local start = perpage * ((tonumber(page) or 1) - 1)
local data = {}
local search_str = search and " WHERE (link LIKE '%"..search.."%')" or ""
query("SELECT COUNT(id) FROM eprotect_http"..search_str, function(pageresult)
if pageresult and pageresult[1] and pageresult[1]["COUNT(id)"] then
data.pageCount = math.max(math.ceil((pageresult[1]["COUNT(id)"] or 0) / perpage), 1)
end
data.page = page
query("SELECT * FROM eprotect_http "..search_str.." LIMIT "..start..", "..perpage, function(result)
data.result = result
networkData(ply, data, 0)
end)
end)
end
eProtect.requestDetectionLog = function(ply, page, search)
if detection_cd[ply] and detection_cd[ply] > CurTime() then return end
detection_cd[ply] = CurTime() + .1
search = search ~= "" and escape_str(search) or nil
local perpage, pageCount = 20, 1
local start = perpage * ((tonumber(page) or 1) - 1)
local data = {}
local search_str = search and " WHERE (sid64 LIKE '%"..search.."%' OR name LIKE '%"..search.."%') " or ""
query("SELECT COUNT(id) FROM eprotect_detections"..search_str, function(pageresult)
if pageresult and pageresult[1] and pageresult[1]["COUNT(id)"] then
data.pageCount = math.max(math.ceil((pageresult[1]["COUNT(id)"] or 0) / perpage), 1)
end
data.page = page
query("SELECT * FROM eprotect_detections"..search_str.." ORDER BY id DESC LIMIT "..start..", "..perpage, function(result)
data.result = result
networkData(ply, data, 1)
end)
end)
end
if eProtect.config["storage_type"] == "sql_local" then
hook.Run("eP:SQLConnected")
end

View File

@@ -0,0 +1,109 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
------------------------------------------------------
-- NO NOT TOUCH ANYTHING IN HERE!!!!!!!!!
------------------------------------------------------
eProtect = eProtect or {}
eProtect.BaseConfig = eProtect.BaseConfig or {}
eProtect.BaseConfig["disable-all-networking"] = {false, 1}
eProtect.BaseConfig["automatic-identifier"] = {1, 2, {min = 0, max = 3}}
eProtect.BaseConfig["block-vpn"] = {false, 3}
eProtect.BaseConfig["bypass-vpn"] = {{["76561198002319944"] = true}, 4, function()
local list = {}
for k,v in ipairs(player.GetAll()) do
local sid64 = v:SteamID64()
if !sid64 then continue end
list[sid64] = true
end
if CAMI and CAMI.GetUsergroups then
for k,v in pairs(CAMI.GetUsergroups()) do
list[k] = true
end
end
return list
end}
eProtect.BaseConfig["notification-groups"] = {{["superadmin"] = true}, 5, CAMI and CAMI.GetUsergroups and function() local tbl = {} for k,v in pairs(CAMI.GetUsergroups()) do tbl[k] = true end return tbl end or {}}
eProtect.BaseConfig["ratelimit"] = {500, 6, {min = -1, max = 100000}}
eProtect.BaseConfig["timeout"] = {3, 7, {min = 0, max = 5000}}
eProtect.BaseConfig["overflowpunishment"] = {2, 8, {min = 0, max = 3}}
eProtect.BaseConfig["whitelistergroup"] = {{}, 9, function()
local list = {}
if CAMI and CAMI.GetUsergroups then
for k,v in pairs(CAMI.GetUsergroups()) do
list[k] = true
end
end
return list
end}
eProtect.BaseConfig["bypassgroup"] = {{}, 10, function()
local list = {
["superadmin"] = true,
["owner"] = true
}
if CAMI and CAMI.GetUsergroups then
for k,v in pairs(CAMI.GetUsergroups()) do
list[k] = true
end
end
return list
end}
eProtect.BaseConfig["bypass_sids"] = {{["76561198002319944"] = true}, 11, function()
local list = {}
for k,v in ipairs(player.GetAll()) do
local sid64 = v:SteamID64()
if !sid64 then continue end
list[sid64] = true
end
return list
end}
eProtect.BaseConfig["httpfocusedurlsisblacklist"] = {true, 12}
eProtect.BaseConfig["httpfocusedurls"] = {{}, 13, function()
local list = {}
local tbl_http = eProtect.data["requestedHTTP"] and eProtect.data["requestedHTTP"].result or {}
if tbl_http then
for k,v in ipairs(tbl_http) do
list[v.link] = true
end
end
return list
end}
------------------------------------------------------
-- NO NOT TOUCH ANYTHING IN HERE!!!!!!!!!
------------------------------------------------------76561198002319944

View File

@@ -0,0 +1,43 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.config = eProtect.config or {}
eProtect.config["language"] = "en"
eProtect.config["prefix"] = "[eProtect] "
eProtect.config["storage_type"] = "mysql"-- (sql_local or mysql)
eProtect.config["disablehttplogging"] = false -- If a DRM is ran after eProtect it could break if they check for HTTP modifications! If so make this true.
eProtect.config["ignoreDRM"] = false
eProtect.config["punishMaliciousIntent"] = true
eProtect.config["disabledModules"] = {
["identifier"] = false,
["detection_log"] = false,
["net_limiter"] = false,
["net_logger"] = false,
["exploit_patcher"] = false,
["exploit_finder"] = false,
["fake_exploits"] = false,
["data_snooper"] = false
}
eProtect.config["permission"] = {
["owner"] = true,
["superadmin"] = true,
["community_manager"] = true,
["headofstaff"] = true
}

View File

@@ -0,0 +1,550 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
eProtect = eProtect or {}
eProtect.config = eProtect.config or {}
eProtect.config["mysql_info"] = {
host = "144.76.235.183",
port = 3306,
database = "s6_eprotect",
username = "u6_PouapUJD6P",
password = "V!3P!7^NQSXGvyBZPE76O^GY"
}
eProtect.config["command"] = "!eprotect"
eProtect.config["process-save-queue"] = 10 --- This will check if we should save data to the file. 00
eProtect.data = eProtect.data or {}
eProtect.data.badNets = eProtect.data.badNets or {}
eProtect.registerBadNet = function(netstring, num)
eProtect.data.badNets[netstring] = {type = num}
end
-- Credits to meepen for the table with known exploits and backdoors! <3
--- Known Exploits
eProtect.registerBadNet("pplay_deleterow", 1)
eProtect.registerBadNet("pplay_addrow", 1)
eProtect.registerBadNet("pplay_sendtable", 1)
eProtect.registerBadNet("WriteQuery", 1)
eProtect.registerBadNet("SendMoney", 1)
eProtect.registerBadNet("BailOut", 1)
eProtect.registerBadNet("customprinter_get", 1)
eProtect.registerBadNet("textstickers_entdata", 1)
eProtect.registerBadNet("NC_GetNameChange", 1)
eProtect.registerBadNet("ATS_WARP_REMOVE_CLIENT", 1)
eProtect.registerBadNet("ATS_WARP_FROM_CLIENT", 1)
eProtect.registerBadNet("ATS_WARP_VIEWOWNER", 1)
eProtect.registerBadNet("CFRemoveGame", 1)
eProtect.registerBadNet("CFJoinGame", 1)
eProtect.registerBadNet("CFEndGame", 1)
eProtect.registerBadNet("CreateCase", 1)
eProtect.registerBadNet("rprotect_terminal_settings", 1)
eProtect.registerBadNet("StackGhost", 1)
eProtect.registerBadNet("RevivePlayer", 1)
eProtect.registerBadNet("ARMORY_RetrieveWeapon", 1)
eProtect.registerBadNet("TransferReport", 1)
eProtect.registerBadNet("SimplicityAC_aysent", 1)
eProtect.registerBadNet("pac_to_contraption", 1)
eProtect.registerBadNet("SyncPrinterButtons76561198056171650", 1)
eProtect.registerBadNet("sendtable", 1)
eProtect.registerBadNet("steamid2", 1)
eProtect.registerBadNet("Kun_SellDrug", 1)
eProtect.registerBadNet("net_PSUnBoxServer", 1)
eProtect.registerBadNet("pplay_deleterow", 1)
eProtect.registerBadNet("pplay_addrow", 1)
eProtect.registerBadNet("CraftSomething", 1)
eProtect.registerBadNet("banleaver", 1)
eProtect.registerBadNet("75_plus_win", 1)
eProtect.registerBadNet("ATMDepositMoney", 1)
eProtect.registerBadNet("Taxi_Add", 1)
eProtect.registerBadNet("Kun_SellOil", 1)
eProtect.registerBadNet("SellMinerals", 1)
eProtect.registerBadNet("TakeBetMoney", 1)
eProtect.registerBadNet("PoliceJoin", 1)
eProtect.registerBadNet("CpForm_Answers", 1)
eProtect.registerBadNet("DepositMoney", 1)
eProtect.registerBadNet("MDE_RemoveStuff_C2S", 1)
eProtect.registerBadNet("NET_SS_DoBuyTakeoff", 1)
eProtect.registerBadNet("NET_EcSetTax", 1)
eProtect.registerBadNet("RP_Accept_Fine", 1)
eProtect.registerBadNet("RP_Fine_Player", 1)
eProtect.registerBadNet("RXCAR_Shop_Store_C2S", 1)
eProtect.registerBadNet("RXCAR_SellINVCar_C2S", 1)
eProtect.registerBadNet("drugseffect_remove", 1)
eProtect.registerBadNet("drugs_money", 1)
eProtect.registerBadNet("CRAFTINGMOD_SHOP", 1)
eProtect.registerBadNet("drugs_ignite", 1)
eProtect.registerBadNet("drugseffect_hpremove", 1)
eProtect.registerBadNet("DarkRP_Kun_ForceSpawn", 1)
eProtect.registerBadNet("drugs_text", 1)
eProtect.registerBadNet("NLRKick", 1)
eProtect.registerBadNet("RecKickAFKer", 1)
eProtect.registerBadNet("GMBG:PickupItem", 1)
eProtect.registerBadNet("DL_Answering", 1)
eProtect.registerBadNet("data_check", 1)
eProtect.registerBadNet("plyWarning", 1)
eProtect.registerBadNet("NLR.ActionPlayer", 1)
eProtect.registerBadNet("timebombDefuse", 1)
eProtect.registerBadNet("start_wd_emp", 1)
eProtect.registerBadNet("kart_sell", 1)
eProtect.registerBadNet("FarmingmodSellItems", 1)
eProtect.registerBadNet("ClickerAddToPoints", 1)
eProtect.registerBadNet("bodyman_model_change", 1)
eProtect.registerBadNet("TOW_PayTheFine", 1)
eProtect.registerBadNet("FIRE_CreateFireTruck", 1)
eProtect.registerBadNet("hitcomplete", 1)
eProtect.registerBadNet("hhh_request", 1)
eProtect.registerBadNet("DaHit", 1)
eProtect.registerBadNet("TCBBuyAmmo", 1)
eProtect.registerBadNet("DataSend", 1)
eProtect.registerBadNet("gBan.BanBuffer", 1)
eProtect.registerBadNet("fp_as_doorHandler", 1)
eProtect.registerBadNet("Upgrade", 1)
eProtect.registerBadNet("TowTruck_CreateTowTruck", 1)
eProtect.registerBadNet("TOW_SubmitWarning", 1)
eProtect.registerBadNet("duelrequestguiYes", 1)
eProtect.registerBadNet("JoinOrg", 1)
eProtect.registerBadNet("pac_submit", 1)
eProtect.registerBadNet("NDES_SelectedEmblem", 1)
eProtect.registerBadNet("join_disconnect", 1)
eProtect.registerBadNet("Morpheus.StaffTracker", 1)
eProtect.registerBadNet("casinokit_chipexchange", 1)
eProtect.registerBadNet("BuyKey", 1)
eProtect.registerBadNet("BuyCrate", 1)
eProtect.registerBadNet("FactionInviteConsole", 1)
eProtect.registerBadNet("FacCreate", 1)
eProtect.registerBadNet("1942_Fuhrer_SubmitCandidacy", 1)
eProtect.registerBadNet("pogcp_report_submitReport", 1)
eProtect.registerBadNet("hsend", 1)
eProtect.registerBadNet("BuilderXToggleKill", 1)
eProtect.registerBadNet("Chatbox_PlayerChat", 1)
eProtect.registerBadNet("reports.submit", 1)
eProtect.registerBadNet("services_accept", 1)
eProtect.registerBadNet("Warn_CreateWarn", 1)
eProtect.registerBadNet("NewReport", 1)
eProtect.registerBadNet("soez", 1)
eProtect.registerBadNet("GiveHealthNPC", 1)
eProtect.registerBadNet("DarkRP_SS_Gamble", 1)
eProtect.registerBadNet("buyinghealth", 1)
eProtect.registerBadNet("DarkRP_preferredjobmodel", 1)
eProtect.registerBadNet("whk_setart", 1)
eProtect.registerBadNet("WithdrewBMoney", 1)
eProtect.registerBadNet("DuelMessageReturn", 1)
eProtect.registerBadNet("ban_rdm", 1)
eProtect.registerBadNet("BuyCar", 1)
eProtect.registerBadNet("ats_send_toServer", 1)
eProtect.registerBadNet("dLogsGetCommand", 1)
eProtect.registerBadNet("disguise", 1)
eProtect.registerBadNet("gportal_rpname_change", 1)
eProtect.registerBadNet("AbilityUse", 1)
eProtect.registerBadNet("ClickerAddToPoints", 1)
eProtect.registerBadNet("race_accept", 1)
eProtect.registerBadNet("give_me_weapon", 1)
eProtect.registerBadNet("FinishContract", 1)
eProtect.registerBadNet("NLR_SPAWN", 1)
eProtect.registerBadNet("Kun_ZiptieStruggle", 1)
eProtect.registerBadNet("JB_Votekick", 1)
eProtect.registerBadNet("Letthisdudeout", 1)
eProtect.registerBadNet("ckit_roul_bet", 1)
eProtect.registerBadNet("pac.net.TouchFlexes.ClientNotify", 1)
eProtect.registerBadNet("ply_pick_shit", 1)
eProtect.registerBadNet("TFA_Attachment_RequestAll", 1)
eProtect.registerBadNet("BuyFirstTovar", 1)
eProtect.registerBadNet("BuySecondTovar", 1)
eProtect.registerBadNet("GiveHealthNPC", 1)
eProtect.registerBadNet("MONEY_SYSTEM_GetWeapons", 1)
eProtect.registerBadNet("MCon_Demote_ToServer", 1)
eProtect.registerBadNet("withdrawp", 1)
eProtect.registerBadNet("PCAdd", 1)
eProtect.registerBadNet("ActivatePC", 1)
eProtect.registerBadNet("PCDelAll", 1)
eProtect.registerBadNet("viv_hl2rp_disp_message", 1)
eProtect.registerBadNet("ATM_DepositMoney_C2S", 1)
eProtect.registerBadNet("BM2.Command.SellBitcoins", 1)
eProtect.registerBadNet("BM2.Command.Eject", 1)
eProtect.registerBadNet("tickbooksendfine", 1)
eProtect.registerBadNet("egg", 1)
eProtect.registerBadNet("RHC_jail_player", 1)
eProtect.registerBadNet("PlayerUseItem", 1)
eProtect.registerBadNet("Chess Top10", 1)
eProtect.registerBadNet("ItemStoreUse", 1)
eProtect.registerBadNet("EZS_PlayerTag", 1)
eProtect.registerBadNet("simfphys_gasspill", 1)
eProtect.registerBadNet("sphys_dupe", 1)
eProtect.registerBadNet("sw_gokart", 1)
eProtect.registerBadNet("wordenns", 1)
eProtect.registerBadNet("SyncPrinterButtons16690", 1)
eProtect.registerBadNet("AttemptSellCar", 1)
eProtect.registerBadNet("uPLYWarning", 1)
eProtect.registerBadNet("atlaschat.rqclrcfg", 1)
eProtect.registerBadNet("dlib.getinfo.replicate", 1)
eProtect.registerBadNet("SetPermaKnife", 1)
eProtect.registerBadNet("EnterpriseWithdraw", 1)
eProtect.registerBadNet("SBP_addtime", 1)
eProtect.registerBadNet("NetData", 1)
eProtect.registerBadNet("CW20_PRESET_LOAD", 1)
eProtect.registerBadNet("minigun_drones_switch", 1)
eProtect.registerBadNet("NET_AM_MakePotion", 1)
eProtect.registerBadNet("bitcoins_request_turn_off", 1)
eProtect.registerBadNet("bitcoins_request_turn_on", 1)
eProtect.registerBadNet("bitcoins_request_withdraw", 1)
eProtect.registerBadNet("PermwepsNPCSellWeapon", 1)
eProtect.registerBadNet("ncpstoredoact", 1)
eProtect.registerBadNet("DuelRequestClient", 1)
eProtect.registerBadNet("BeginSpin", 1)
eProtect.registerBadNet("tickbookpayfine", 1)
eProtect.registerBadNet("fg_printer_money", 1)
eProtect.registerBadNet("IGS.GetPaymentURL", 1)
eProtect.registerBadNet("AirDrops_StartPlacement", 1)
eProtect.registerBadNet("SlotsRemoved", 1)
eProtect.registerBadNet("FARMINGMOD_DROPITEM", 1)
eProtect.registerBadNet("cab_sendmessage", 1)
eProtect.registerBadNet("cab_cd_testdrive", 1)
eProtect.registerBadNet("blueatm", 1)
eProtect.registerBadNet("SCP-294Sv", 1)
eProtect.registerBadNet("dronesrewrite_controldr", 1)
eProtect.registerBadNet("desktopPrinter_Withdraw", 1)
eProtect.registerBadNet("RemoveTag", 1)
eProtect.registerBadNet("IDInv_RequestBank", 1)
eProtect.registerBadNet("UseMedkit", 1)
eProtect.registerBadNet("WipeMask", 1)
eProtect.registerBadNet("SwapFilter", 1)
eProtect.registerBadNet("RemoveMask", 1)
eProtect.registerBadNet("DeployMask", 1)
eProtect.registerBadNet("ZED_SpawnCar", 1)
eProtect.registerBadNet("levelup_useperk", 1)
eProtect.registerBadNet("passmayorexam", 1)
eProtect.registerBadNet("Selldatride", 1)
eProtect.registerBadNet("ORG_VaultDonate", 1)
eProtect.registerBadNet("ORG_NewOrg", 1)
eProtect.registerBadNet("ScannerMenu", 1)
eProtect.registerBadNet("misswd_accept", 1)
eProtect.registerBadNet("D3A_Message", 1)
eProtect.registerBadNet("LawsToServer", 1)
eProtect.registerBadNet("Shop_buy", 1)
eProtect.registerBadNet("D3A_CreateOrg", 1)
eProtect.registerBadNet("Gb_gasstation_BuyGas", 1)
eProtect.registerBadNet("Gb_gasstation_BuyJerrycan", 1)
eProtect.registerBadNet("MineServer", 1)
eProtect.registerBadNet("AcceptBailOffer", 1)
eProtect.registerBadNet("LawyerOfferBail", 1)
eProtect.registerBadNet("buy_bundle", 1)
eProtect.registerBadNet("AskPickupItemInv", 1)
eProtect.registerBadNet("donatorshop_itemtobuy", 1)
eProtect.registerBadNet("netOrgVoteInvite_Server", 1)
eProtect.registerBadNet("Chess ClientWager", 1)
eProtect.registerBadNet("AcceptRequest", 1)
eProtect.registerBadNet("deposit", 1)
eProtect.registerBadNet("CubeRiot CaptureZone Update", 1)
eProtect.registerBadNet("NPCShop_BuyItem", 1)
eProtect.registerBadNet("SpawnProtection", 1)
eProtect.registerBadNet("hoverboardpurchase", 1)
eProtect.registerBadNet("soundArrestCommit", 1)
eProtect.registerBadNet("LotteryMenu", 1)
eProtect.registerBadNet("updateLaws", 1)
eProtect.registerBadNet("TMC_NET_FirePlayer", 1)
eProtect.registerBadNet("thiefnpc", 1)
eProtect.registerBadNet("TMC_NET_MakePlayerWanted", 1)
eProtect.registerBadNet("SyncRemoveAction", 1)
eProtect.registerBadNet("HV_AmmoBuy", 1)
eProtect.registerBadNet("NET_CR_TakeStoredMoney", 1)
eProtect.registerBadNet("nox_addpremadepunishment", 1)
eProtect.registerBadNet("GrabMoney", 1)
eProtect.registerBadNet("LAWYER.GetBailOut", 1)
eProtect.registerBadNet("LAWYER.BailFelonOut", 1)
eProtect.registerBadNet("br_send_pm", 1)
eProtect.registerBadNet("GET_Admin_MSGS", 1)
eProtect.registerBadNet("OPEN_ADMIN_CHAT", 1)
eProtect.registerBadNet("LB_AddBan", 1)
eProtect.registerBadNet("redirectMsg", 1)
eProtect.registerBadNet("RDMReason_Explain", 1)
eProtect.registerBadNet("JB_SelectWarden", 1)
eProtect.registerBadNet("JB_GiveCubics", 1)
eProtect.registerBadNet("SendSteamID", 1)
eProtect.registerBadNet("wyozimc_playply", 1)
eProtect.registerBadNet("SpecDM_SendLoadout", 1)
eProtect.registerBadNet("sv_saveweapons", 1)
eProtect.registerBadNet("DL_StartReport", 1)
eProtect.registerBadNet("DL_ReportPlayer", 1)
eProtect.registerBadNet("DL_AskLogsList", 1)
eProtect.registerBadNet("DailyLoginClaim", 1)
eProtect.registerBadNet("GiveWeapon", 1)
eProtect.registerBadNet("GovStation_SpawnVehicle", 1)
eProtect.registerBadNet("inviteToOrganization", 1)
eProtect.registerBadNet("createFaction", 1)
eProtect.registerBadNet("sellitem", 1)
eProtect.registerBadNet("giveArrestReason", 1)
eProtect.registerBadNet("unarrestPerson", 1)
eProtect.registerBadNet("JoinFirstSS", 1)
eProtect.registerBadNet("bringNfreeze", 1)
eProtect.registerBadNet("start_wd_hack", 1)
eProtect.registerBadNet("DestroyTable", 1)
eProtect.registerBadNet("nCTieUpStart", 1)
eProtect.registerBadNet("IveBeenRDMed", 1)
eProtect.registerBadNet("FIGHTCLUB_StartFight", 1)
eProtect.registerBadNet("FIGHTCLUB_KickPlayer", 1)
eProtect.registerBadNet("ReSpawn", 1)
eProtect.registerBadNet("CP_Test_Results", 1)
eProtect.registerBadNet("AcceptBailOffer", 1)
eProtect.registerBadNet("IS_SubmitSID_C2S", 1)
eProtect.registerBadNet("IS_GetReward_C2S", 1)
eProtect.registerBadNet("ChangeOrgName", 1)
eProtect.registerBadNet("DisbandOrganization", 1)
eProtect.registerBadNet("CreateOrganization", 1)
eProtect.registerBadNet("newTerritory", 1)
eProtect.registerBadNet("InviteMember", 1)
eProtect.registerBadNet("sendDuelInfo", 1)
eProtect.registerBadNet("DoDealerDeliver", 1)
eProtect.registerBadNet("PurchaseWeed", 1)
eProtect.registerBadNet("guncraft_removeWorkbench", 1)
eProtect.registerBadNet("wordenns", 1)
eProtect.registerBadNet("userAcceptPrestige", 1)
eProtect.registerBadNet("vj_npcspawner_sv_create", 1)
eProtect.registerBadNet("DuelMessageReturn", 1)
eProtect.registerBadNet("Client_To_Server_OpenEditor", 1)
eProtect.registerBadNet("GiveSCP294Cup", 1)
eProtect.registerBadNet("GiveArmor100", 1)
eProtect.registerBadNet("SprintSpeedset", 1)
eProtect.registerBadNet("ArmorButton", 1)
eProtect.registerBadNet("HealButton", 1)
eProtect.registerBadNet("SRequest", 1)
eProtect.registerBadNet("ClickerForceSave", 1)
eProtect.registerBadNet("rpi_trade_end", 1)
eProtect.registerBadNet("NET_BailPlayer", 1)
eProtect.registerBadNet("vj_testentity_runtextsd", 1)
eProtect.registerBadNet("vj_fireplace_turnon2", 1)
eProtect.registerBadNet("requestmoneyforvk", 1)
eProtect.registerBadNet("gPrinters.sendID", 1)
eProtect.registerBadNet("FIRE_RemoveFireTruck", 1)
eProtect.registerBadNet("drugs_effect", 1)
eProtect.registerBadNet("drugs_give", 1)
eProtect.registerBadNet("NET_DoPrinterAction", 1)
eProtect.registerBadNet("opr_withdraw", 1)
eProtect.registerBadNet("money_clicker_withdraw", 1)
eProtect.registerBadNet("NGII_TakeMoney", 1)
eProtect.registerBadNet("gPrinters.retrieveMoney", 1)
eProtect.registerBadNet("revival_revive_accept", 1)
eProtect.registerBadNet("chname", 1)
eProtect.registerBadNet("NewRPNameSQL", 1)
eProtect.registerBadNet("UpdateRPUModelSQL", 1)
eProtect.registerBadNet("SetTableTarget", 1)
eProtect.registerBadNet("SquadGiveWeapon", 1)
eProtect.registerBadNet("BuyUpgradesStuff", 1)
eProtect.registerBadNet("REPAdminChangeLVL", 1)
eProtect.registerBadNet("SendMail", 1)
eProtect.registerBadNet("DemotePlayer", 1)
eProtect.registerBadNet("OpenGates", 1)
eProtect.registerBadNet("VehicleUnderglow", 1)
eProtect.registerBadNet("Hopping_Test", 1)
eProtect.registerBadNet("CREATE_REPORT", 1)
eProtect.registerBadNet("CreateEntity", 1)
eProtect.registerBadNet("FiremanLeave", 1)
eProtect.registerBadNet("DarkRP_Defib_ForceSpawn", 1)
eProtect.registerBadNet("Resupply", 1)
eProtect.registerBadNet("BTTTStartVotekick", 1)
eProtect.registerBadNet("_nonDBVMVote", 1)
eProtect.registerBadNet("REPPurchase", 1)
eProtect.registerBadNet("deathrag_takeitem", 1)
eProtect.registerBadNet("FacCreate", 1)
eProtect.registerBadNet("InformPlayer", 1)
eProtect.registerBadNet("lockpick_sound", 1)
eProtect.registerBadNet("SetPlayerModel", 1)
eProtect.registerBadNet("changeToPhysgun", 1)
eProtect.registerBadNet("VoteBanNO", 1)
eProtect.registerBadNet("VoteKickNO", 1)
eProtect.registerBadNet("shopguild_buyitem", 1)
eProtect.registerBadNet("MG2.Request.GangRankings", 1)
eProtect.registerBadNet("RequestMAPSize", 1)
eProtect.registerBadNet("gMining.sellMineral", 1)
eProtect.registerBadNet("ItemStoreDrop", 1)
eProtect.registerBadNet("optarrest", 1)
eProtect.registerBadNet("TalkIconChat", 1)
eProtect.registerBadNet("UpdateAdvBoneSettings", 1)
eProtect.registerBadNet("ViralsScoreboardAdmin", 1)
eProtect.registerBadNet("PowerRoundsForcePR", 1)
eProtect.registerBadNet("showDisguiseHUD", 1)
eProtect.registerBadNet("withdrawMoney", 1)
eProtect.registerBadNet("SyncPrinterButtons76561198027292625", 1)
eProtect.registerBadNet("phone", 1)
eProtect.registerBadNet("STLoanToServer", 1)
eProtect.registerBadNet("TCBDealerStore", 1)
eProtect.registerBadNet("TCBDealerSpawn", 1)
eProtect.registerBadNet("ts_buytitle", 1)
eProtect.registerBadNet("gMining.registerAchievement", 1)
eProtect.registerBadNet("gPrinters.openUpgrades", 1)
--- Known Backdoors
eProtect.registerBadNet("Sbox_gm_attackofnullday_key", 2)
eProtect.registerBadNet("c", 2)
eProtect.registerBadNet("enablevac", 2)
eProtect.registerBadNet("ULXQUERY2", 2)
eProtect.registerBadNet("Im_SOCool", 2)
eProtect.registerBadNet("MoonMan", 2)
eProtect.registerBadNet("LickMeOut", 2)
eProtect.registerBadNet("SessionBackdoor", 2)
eProtect.registerBadNet("OdiumBackDoor", 2)
eProtect.registerBadNet("ULX_QUERY2", 2)
eProtect.registerBadNet("Sbox_itemstore", 2)
eProtect.registerBadNet("Sbox_darkrp", 2)
eProtect.registerBadNet("Sbox_Message", 2)
eProtect.registerBadNet("_blacksmurf", 2)
eProtect.registerBadNet("nostrip", 2)
eProtect.registerBadNet("Remove_Exploiters", 2)
eProtect.registerBadNet("Sandbox_ArmDupe", 2)
eProtect.registerBadNet("rconadmin", 2)
eProtect.registerBadNet("jesuslebg", 2)
eProtect.registerBadNet("disablebackdoor", 2)
eProtect.registerBadNet("blacksmurfBackdoor", 2)
eProtect.registerBadNet("jeveuttonrconleul", 2)
eProtect.registerBadNet("lag_ping", 2)
eProtect.registerBadNet("memeDoor", 2)
eProtect.registerBadNet("DarkRP_AdminWeapons", 2)
eProtect.registerBadNet("Fix_Keypads", 2)
eProtect.registerBadNet("noclipcloakaesp_chat_text", 2)
eProtect.registerBadNet("_CAC_ReadMemory", 2)
eProtect.registerBadNet("Ulib_Message", 2)
eProtect.registerBadNet("Ulogs_Infos", 2)
eProtect.registerBadNet("ITEM", 2)
eProtect.registerBadNet("nocheat", 2)
eProtect.registerBadNet("adsp_door_length", 2)
eProtect.registerBadNet("ξpsilon", 2)
eProtect.registerBadNet("JQerystrip.disable", 2)
eProtect.registerBadNet("Sandbox_GayParty", 2)
eProtect.registerBadNet("DarkRP_UTF8", 2)
eProtect.registerBadNet("PlayerKilledLogged", 2)
eProtect.registerBadNet("OldNetReadData", 2)
eProtect.registerBadNet("Backdoor", 2)
eProtect.registerBadNet("cucked", 2)
eProtect.registerBadNet("NoNerks", 2)
eProtect.registerBadNet("kek", 2)
eProtect.registerBadNet("DarkRP_Money_System", 2)
eProtect.registerBadNet("BetStrep", 2)
eProtect.registerBadNet("ZimbaBackdoor", 2)
eProtect.registerBadNet("something", 2)
eProtect.registerBadNet("random", 2)
eProtect.registerBadNet("strip0", 2)
eProtect.registerBadNet("fellosnake", 2)
eProtect.registerBadNet("idk", 2)
eProtect.registerBadNet("||||", 2)
eProtect.registerBadNet("EnigmaIsthere", 2)
eProtect.registerBadNet("ALTERED_CARB0N", 2)
eProtect.registerBadNet("killserver", 2)
eProtect.registerBadNet("fuckserver", 2)
eProtect.registerBadNet("cvaraccess", 2)
eProtect.registerBadNet("_Defcon", 2)
eProtect.registerBadNet("dontforget", 2)
eProtect.registerBadNet("aze46aez67z67z64dcv4bt", 2)
eProtect.registerBadNet("nolag", 2)
eProtect.registerBadNet("changename", 2)
eProtect.registerBadNet("music", 2)
eProtect.registerBadNet("_Defqon", 2)
eProtect.registerBadNet("xenoexistscl", 2)
eProtect.registerBadNet("R8", 2)
eProtect.registerBadNet("AnalCavity", 2)
eProtect.registerBadNet("DefqonBackdoor", 2)
eProtect.registerBadNet("fourhead", 2)
eProtect.registerBadNet("echangeinfo", 2)
eProtect.registerBadNet("PlayerItemPickUp", 2)
eProtect.registerBadNet("thefrenchenculer", 2)
eProtect.registerBadNet("elfamosabackdoormdr", 2)
eProtect.registerBadNet("stoppk", 2)
eProtect.registerBadNet("noprop", 2)
eProtect.registerBadNet("reaper", 2)
eProtect.registerBadNet("Abcdefgh", 2)
eProtect.registerBadNet("JSQuery.Data(Post(false))", 2)
eProtect.registerBadNet("pjHabrp9EY", 2)
eProtect.registerBadNet("_Raze", 2)
eProtect.registerBadNet("88", 2)
eProtect.registerBadNet("Dominos", 2)
eProtect.registerBadNet("NoOdium_ReadPing", 2)
eProtect.registerBadNet("m9k_explosionradius", 2)
eProtect.registerBadNet("gag", 2)
eProtect.registerBadNet("_cac_", 2)
eProtect.registerBadNet("_Battleye_Meme_", 2)
eProtect.registerBadNet("legrandguzmanestla", 2)
eProtect.registerBadNet("ULogs_B", 2)
eProtect.registerBadNet("arivia", 2)
eProtect.registerBadNet("_Warns", 2)
eProtect.registerBadNet("xuy", 2)
eProtect.registerBadNet("samosatracking57", 2)
eProtect.registerBadNet("striphelper", 2)
eProtect.registerBadNet("m9k_explosive", 2)
eProtect.registerBadNet("GaySploitBackdoor", 2)
eProtect.registerBadNet("_GaySploit", 2)
eProtect.registerBadNet("slua", 2)
eProtect.registerBadNet("Bilboard.adverts:Spawn(false)", 2)
eProtect.registerBadNet("BOOST_FPS", 2)
eProtect.registerBadNet("FPP_AntiStrip", 2)
eProtect.registerBadNet("ULX_QUERY_TEST2", 2)
eProtect.registerBadNet("FADMIN_ANTICRASH", 2)
eProtect.registerBadNet("ULX_ANTI_BACKDOOR", 2)
eProtect.registerBadNet("UKT_MOMOS", 2)
eProtect.registerBadNet("rcivluz", 2)
eProtect.registerBadNet("SENDTEST", 2)
eProtect.registerBadNet("MJkQswHqfZ", 2)
eProtect.registerBadNet("INJ3v4", 2)
eProtect.registerBadNet("_clientcvars", 2)
eProtect.registerBadNet("_main", 2)
eProtect.registerBadNet("GMOD_NETDBG", 2)
eProtect.registerBadNet("thereaper", 2)
eProtect.registerBadNet("audisquad_lua", 2)
eProtect.registerBadNet("anticrash", 2)
eProtect.registerBadNet("ZernaxBackdoor", 2)
eProtect.registerBadNet("bdsm", 2)
eProtect.registerBadNet("waoz", 2)
eProtect.registerBadNet("stream", 2)
eProtect.registerBadNet("adm_network", 2)
eProtect.registerBadNet("antiexploit", 2)
eProtect.registerBadNet("ReadPing", 2)
eProtect.registerBadNet("berettabest", 2)
eProtect.registerBadNet("componenttolua", 2)
eProtect.registerBadNet("theberettabcd", 2)
eProtect.registerBadNet("negativedlebest", 2)
eProtect.registerBadNet("mathislebg", 2)
eProtect.registerBadNet("SparksLeBg", 2)
eProtect.registerBadNet("DOGE", 2)
eProtect.registerBadNet("FPSBOOST", 2)
eProtect.registerBadNet("N::B::P", 2)
eProtect.registerBadNet("PDA_DRM_REQUEST_CONTENT", 2)
eProtect.registerBadNet("shix", 2)
eProtect.registerBadNet("Inj3", 2)
eProtect.registerBadNet("AidsTacos", 2)
eProtect.registerBadNet("verifiopd", 2)
eProtect.registerBadNet("pwn_wake", 2)
eProtect.registerBadNet("pwn_http_answer", 2)
eProtect.registerBadNet("pwn_http_send", 2)
eProtect.registerBadNet("The_Dankwoo", 2)
eProtect.registerBadNet("PRDW_GET", 2)
eProtect.registerBadNet("fancyscoreboard_leave", 2)
eProtect.registerBadNet("DarkRP_Gamemodes", 2)
eProtect.registerBadNet("DarkRP_Armors", 2)
eProtect.registerBadNet("yohsambresicianatik<3", 2)
eProtect.registerBadNet("EnigmaProject", 2)
eProtect.registerBadNet("PlayerCheck", 2)
eProtect.registerBadNet("Ulx_Error_88", 2)
eProtect.registerBadNet("FAdmin_Notification_Receiver", 2)
eProtect.registerBadNet("DarkRP_ReceiveData", 2)
eProtect.registerBadNet("Weapon_88", 2)
eProtect.registerBadNet("__G____CAC", 2)
eProtect.registerBadNet("AbSoluT", 2)
eProtect.registerBadNet("mecthack", 2)
eProtect.registerBadNet("SetPlayerDeathCount", 2)
eProtect.registerBadNet("awarn_remove", 2)
eProtect.registerBadNet("fijiconn", 2)
eProtect.registerBadNet("nw.readstream", 2)
eProtect.registerBadNet("LuaCmd", 2)
eProtect.registerBadNet("The_DankWhy", 2)