Скрипт бана по mac адресу

Разработка и поиск скриптов, обсуждение PtokaX.
Аватара пользователя
c0cain
 
Сообщения: 12

Скрипт бана по mac адресу

Сообщение 23 авг 2011, 12:29

Интересен ли вам такой скрипт под lua? Стоит ли его писать учитывая проблему с маршрутизаторами?))))
Последний раз редактировалось c0cain 23 авг 2011, 12:29, всего редактировалось 1 раз.

сфызук
 

Сообщение 23 авг 2011, 12:36

эту тему здесь уже поднимали , вот скажи как скрипт будет видить мак ??? допустим хекс-хаб видит еще это как то (кто то где то писал , непомню уж давно это было ) а остальной хабсофт ????

Аватара пользователя
c0cain
 
Сообщения: 12

Сообщение 23 авг 2011, 12:38

casper, а почему не подключение стороннего dll?)
Последний раз редактировалось c0cain 23 авг 2011, 12:40, всего редактировалось 2 раз(а).

сфызук
 

Сообщение 23 авг 2011, 12:45

ну если хочешь попробовать намутить такую штуку ,да еще и работающию , то для теста я тебе придоставлю пару тройку хабов , но я пока весь в сомнениях т.к. все это давно уж перемывалось..

Аватара пользователя
c0cain
 
Сообщения: 12

Сообщение 23 авг 2011, 12:47

я думаю написать часть по выдёргиванию mac на c++ or delphi и засунуть её в dll, а подгружать dll`ку уже из луа и слать необходимые инструкции... правд не знаю пока как это скажется на загрузке проца...

Но повторюсь что есть проблема в маршутизаторах и одном mac`е на нескольких пользователей :-( Т.е. это может быть не совсем актуально...

сфызук
 

Сообщение 23 авг 2011, 12:51

вопрос на скоко ты своим скриптом канал просадишь при всех запросах ??? а есть провы у которых нет привязке к маку (например Пчелайн)....

Аватара пользователя
c0cain
 
Сообщения: 12

Сообщение 23 авг 2011, 12:54

Насчёт канала, можно не марочится а работать в режиме фильтрации и чтения пакетов (как вариант)... Оттуда драть инфу... Может даже составлять таблицу с ником, ip, mac`ом....

сфызук
 

Сообщение 23 авг 2011, 12:55

о ,да , забыл тех кто сидит за роутерами и всей остальной шляпой ,хотя тут разници нет , что ты мак забанишь что ты ип забанишь ,хотя щас уж можно не банить а глушить чат и лс ..... это более интересный вариант ))))

c0cain писал(а):Может даже составлять таблицу с ником, ip, mac`ом....

у меня даже где то такой скрипт стоял ,который пишит всех юзеров и их ипы ( вот токо где я не помню) надо пошукать :-)

Аватара пользователя
c0cain
 
Сообщения: 12

Сообщение 23 авг 2011, 12:58

У меня раньше где-то валялся скрипт он вычислял процент, может ли пользователь являться ранее забаненым. Инфу он брал по всем возможным данным и сверял, но процент там не точны совсем) Ну и конечно "оперативно" действует больше на школьников... :-D Я его писал, потом наверное гдето удалил со сменой компа и чисткой инфы)))
Последний раз редактировалось c0cain 23 авг 2011, 12:58, всего редактировалось 1 раз.

сфызук
 

Сообщение 23 авг 2011, 13:10

типо такого скрипта
Скрытый текст
Код: Выделить всё
--[[
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]> ","&#124;|"
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

Аватара пользователя
c0cain
 
Сообщения: 12

Сообщение 23 авг 2011, 13:13

Ну с lua проблем не будет а вот над dll, надо подумать....

сфызук
 

Сообщение 23 авг 2011, 13:20

флаг вам в руки :-) :-) :-)

скептик
 

Сообщение 23 авг 2011, 18:43

Эта ваша сторонняя динамическая библиотека будет эффективнее штатной функции птоки?

сфызук
 

Сообщение 23 авг 2011, 20:39

ну хз ,т.к дс клиент оправляет птохи токо ип , а вот как тело собирается это все перепилить что б из клиента вытягивать мак ???? и как потом пользователь с этим маком зашедший попадет в баню????
или предлогаю всем перезжать на хексхаб ( и в топку птоху)

скептик
 

Сообщение 23 авг 2011, 20:43

Кексхаб в этом плане ничуть не лучше.

Аватара пользователя
c0cain
 
Сообщения: 12

Сообщение 26 авг 2011, 00:43

скептик писал(а):Эта ваша сторонняя динамическая библиотека будет эффективнее штатной функции птоки?

Во первых что вы имеете ввиду под штатной? Бана по маку в птахе нету в штатном наборе.
Эффективность? Ну как сказать не во всех случаях эффективная штука.
Сначала интересно просто реализовать данную функцию (может даже просто лог?), а там уже можно будет думать о эффективности :-)

Сейчас вопрос нужно ли это писать для использования в скриптах lua? Или удобнее нам написать программу по типу защитного бота, со снифом и отловом mac`ов из пакетов которые приходят для сервера. *DONT_KNOW*

Не кажется ли вам что бот на пакетном уровне вполне функционалным окажется? Особенно учитывая то, что даже пароли в этих пакетах передаются простым текстом... :-D

Вообщем жду ваших мнений, критики и идей!
Последний раз редактировалось c0cain 26 авг 2011, 00:45, всего редактировалось 1 раз.

скептик
 

Сообщение 26 авг 2011, 08:11

c0cain писал(а):Во первых что вы имеете ввиду под штатной? Бана по маку в птахе нету в штатном наборе.


r41 | PPK | 2010-12-19 18:40:41 +0300 (Вск, 19 Дек 2010) | 8 lines

Added: Core.GetUserValue(tUser, 27) return user MAC Address when it is possible

casper-house
 
Хаб: dchub://dc-vip.ru
 
Сообщения: 21

Сообщение 26 авг 2011, 22:45

нереальное реально ,все зависит от опухшего больного мосКа , хорошая тема и думаю топер все таки сделает хоть одну попытку


Вернуться в Помощь & идеи



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0