Скрипт бана по mac адресу
Скрипт бана по mac адресу
Интересен ли вам такой скрипт под lua? Стоит ли его писать учитывая проблему с маршрутизаторами?))))
Последний раз редактировалось c0cain 23 авг 2011, 12:29, всего редактировалось 1 раз.
casper, а почему не подключение стороннего dll?)
Последний раз редактировалось c0cain 23 авг 2011, 12:40, всего редактировалось 2 раза.
я думаю написать часть по выдёргиванию mac на c++ or delphi и засунуть её в dll, а подгружать dll`ку уже из луа и слать необходимые инструкции... правд не знаю пока как это скажется на загрузке проца...
Но повторюсь что есть проблема в маршутизаторах и одном mac`е на нескольких пользователей Т.е. это может быть не совсем актуально...
Но повторюсь что есть проблема в маршутизаторах и одном mac`е на нескольких пользователей Т.е. это может быть не совсем актуально...
о ,да , забыл тех кто сидит за роутерами и всей остальной шляпой ,хотя тут разници нет , что ты мак забанишь что ты ип забанишь ,хотя щас уж можно не банить а глушить чат и лс ..... это более интересный вариант ))))
у меня даже где то такой скрипт стоял ,который пишит всех юзеров и их ипы ( вот токо где я не помню) надо пошукатьc0cain писал(а):Может даже составлять таблицу с ником, ip, mac`ом....
У меня раньше где-то валялся скрипт он вычислял процент, может ли пользователь являться ранее забаненым. Инфу он брал по всем возможным данным и сверял, но процент там не точны совсем) Ну и конечно "оперативно" действует больше на школьников... Я его писал, потом наверное гдето удалил со сменой компа и чисткой инфы)))
Последний раз редактировалось c0cain 23 авг 2011, 12:58, всего редактировалось 1 раз.
типо такого скрипта
Спойлер
Код: Выделить всё
--[[
Last IP 1.1 LUA 5.1x [Strict] [API 2]
By Mutor 05/14/08
Requested by Annie
РУССКИЙ by dimetrius 20 июля 2008
-Можно выбрать какие профили смогут пользоваться скриптом и кому будет отсылаться меню
-Автоматически отсылается меню соответствующим профилям
-Вы можете сами выбрать сколько последних IP АДРЕСОВ, или ников будет храниться
-IP лог сохраняется в файл, так что вам не страшны перезапуски хаба\скрипта
http://board.ptokax.ch/index.php?topic=7863.0
http://mydc.ru/index.php?showtopic=208
]]
Ips = {
-- "Имя бота" ["" = имя бота хаба]
Bot = "",
--"Название меню" ["" = название хаба
Menu = "",
--"Название подменю" ["" = название скрипта]
SubMenu = "",
-- Ник админа для разных статусных мессаг
OpNick = "dimetrius",
-- Путь, где хранится таблица
File = Core.GetPtokaXPath().."scripts/LastIps.tbl",
-- Максимальное колличество логируемых IP адресов для юзера
MaxLog = 20,
}
OnStartup = function()
-- Название скрипта, которое будет отображаться в меню и в чате
Ips.Scp = "Статистика по IP"
if Ips.Bot == "" then Ips.Bot = SetMan.GetString(21) end
--Описание бота, если название отличное от бота хаба
if Ips.Bot ~= SetMan.GetString(21) then Core.RegBot(Ips.Bot,"Я всех вижу","",true) end
if Ips.Menu == "" then Ips.Menu = SetMan.GetString(0) end
if Ips.SubMenu == "" then Ips.SubMenu = Ips.Scp end
if loadfile(Ips.File) then
dofile(Ips.File)
else
Ips.Log = {}
end
if not next(Ips.Log) then
for _,user in ipairs(Core.GetOnlineUsers()) do LogIp(user) end
Save_File(Ips.File,Ips.Log,"Ips.Log")
end
OnError(Ips.Scp.." для ".._VERSION.." был запущен, Памяти хаваем: "..Mem())
end
OnError = function(msg,sb)
local user = Core.GetUser(Ips.OpNick)
if msg and user then Core.SendToUser(user,"<"..Ips.Bot.."> "..msg.."|") end
end
OnExit = function()
OnError(Ips.Scp.." для ".._VERSION.." был остановлен, освободили "..Mem().." памяти.")
end
LogIp = function(user)
local d,c = os.date()
if Ips.Log[user.sNick] then
local x,ip = true,user.sIP
for i,v in ipairs(Ips.Log[user.sNick]) do
if v[1] == ip then x = false break end
end
if x then
table.insert(Ips.Log[user.sNick],{ip,d})
while #Ips.Log[user.sNick] > Ips.MaxLog do table.remove(Ips.Log[user.sNick],1) end
c = true
end
else
Ips.Log[user.sNick] = {{user.sIP,d}}
c = true
end
if c then Save_File(Ips.File,Ips.Log,"Ips.Log") end
end
UserConnected = function(user)
LogIp(user)
local str,stp,uc,m,p = "","","$UserCommand 1 y "..Ips.Menu.."\\"..Ips.SubMenu.."\\","$<%[mynick]> ","||"
local pfx = SetMan.GetString(29):sub(1,1)
for k,v in pairs(Ips.Cmds) do
if v[2][user.iProfile] then
local d,a1,a2 = v[1]()
str = str..uc:gsub("y",1)..d..m..pfx..k..a1..p..uc:gsub("y",2)..d..m..pfx..k..a2..p
end
end
if str:len() > 0 then Core.SendToUser(user,str) end
end
OpConnected,RegConnected = UserConnected,UserConnected
ChatArrival = function(user,data)
local _,_,cmd = data:find("%b<> ["..SetMan.GetString(29).."](%a+)")
if cmd and Ips.Cmds[cmd] and Ips.Cmds[cmd][2][user.iProfile] then
reply = Ips.Cmds[cmd][1](user,data,SetMan.GetString(29):sub(1,1)..cmd)
if reply then return Core.SendToUser(user,"<"..Ips.Bot.."> "..reply.."|"),true end
end
end
Mem = function() collectgarbage("collect") return string.format("%-.2f Kb.",collectgarbage("count")) end
Ips.Cmds = {
iplog = {function(user,data,cmd)
if user then
local _,_,nick = data:find("%b<> %p%a+ ([^ |]+)|$")
if nick then
local cur = ""
local usr = Core.GetUser(nick)
if usr then cur = " [ Текущий IP: "..usr.sIP.." ]" end
local r = "="
local s = "\n\n\tIP адреса, которые использовал "..nick..cur.."\n\n\t"..r:rep(50).."\n"
if Ips.Log[nick] then
for i,v in ipairs(Ips.Log[nick]) do
s = s.."\t("..i..")\t"..v[1].."\t"..v[2].."\n"
end
s = s.."\n\t"..r:rep(50).."\n"
else
s = "В базе нет данных по IP, которые использовал ник: "..nick
end
return s
else
return "Ошибка! Вы должны ввести ник. Используйте: "..cmd.." <nick>"
end
else
return "Показать IP, которые использовал юзер"," %[line:Введите ник юзера]"," %[nick]"
end
end,
{[-1] = false,[0] = true,[1] = true,[2] = true,[3] = false,},
},
ipnicks = {function(user,data,cmd)
if user then
local _,_,ip = data:find("%b<> %p%a+ (%d+%.%d+%.%d+%.%d+)|$")
if ip then
local t = {}
if ValidIp(ip) then
for idx,val in pairs(Ips.Log) do
for i,v in ipairs(val) do if v[1] == ip then table.insert(t,idx) end end
end
else
return "Ошибка! "..ip.."... Перечитал? Теперь введи правильно IP адрес. ;-)"
end
if next(t) then
table.sort(t)
local r = "="
local s = "\n\n\tНики, под которыми заходили с IP: "..ip.."\n\n\t"..r:rep(50).."\n"
for i,v in ipairs(t) do s = s.."\t("..i..")\t"..v.."\n" end
s = s.."\n\t"..r:rep(50).."\n"
return s
else
return "C IP адреса "..ip.." не зафиксирован вход."
end
else
return "Ошибка! ты должен ввести iP адрес. Usage: "..cmd.." <ip>"
end
else
return "Показать юзеров, которые заходили под IP..."," %[line:Введите IP адрес]"," %[ip]"
end
end,
--Какие профили могут просматривать статистику
{[-1] = false,[0] = true,[1] = true,[2] = true,[3] = false,},
},
}
ValidIp = function(IP)
local _,_,a,b,c,d = IP:find("^(%d+)%.(%d+)%.(%d+)%.(%d+)$")
if a and b and c and d then
local t = {tonumber(a),tonumber(b),tonumber(c),tonumber(d)}
for i,v in ipairs(t) do if i == 1 and v == 0 or v > 255 then return false end end
end
return true
end
Save_Serialize = function(tTable, sTableName, hFile, sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n" )
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if(type(value) == "table") then
Save_Serialize(value, sKey, hFile, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
hFile:write( sTab.."\t"..sKey.." = "..sValue)
end
hFile:write( ",\n")
end
hFile:write( sTab.."}")
end
Save_File = function(file,table, tablename )
local hFile = io.open (file , "wb")
Save_Serialize(table, tablename, hFile)
hFile:close()
Mem()
end
Во первых что вы имеете ввиду под штатной? Бана по маку в птахе нету в штатном наборе.скептик писал(а):Эта ваша сторонняя динамическая библиотека будет эффективнее штатной функции птоки?
Эффективность? Ну как сказать не во всех случаях эффективная штука.
Сначала интересно просто реализовать данную функцию (может даже просто лог?), а там уже можно будет думать о эффективности
Сейчас вопрос нужно ли это писать для использования в скриптах lua? Или удобнее нам написать программу по типу защитного бота, со снифом и отловом mac`ов из пакетов которые приходят для сервера.
Не кажется ли вам что бот на пакетном уровне вполне функционалным окажется? Особенно учитывая то, что даже пароли в этих пакетах передаются простым текстом...
Вообщем жду ваших мнений, критики и идей!
Последний раз редактировалось c0cain 26 авг 2011, 00:45, всего редактировалось 1 раз.
-
- Сообщения: 21
- Зарегистрирован: 13 мар 2011, 01:50
- Хаб: dchub://dc-vip.ru
- Контактная информация: