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

Разработка и поиск скриптов, обсуждение PtokaX.

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

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

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

Сообщение сфызук » 23 авг 2011, 12:36

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

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

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

Сообщение сфызук » 23 авг 2011, 12:45

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

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

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

Но повторюсь что есть проблема в маршутизаторах и одном mac`е на нескольких пользователей :-( Т.е. это может быть не совсем актуально...
Аватара пользователя
c0cain
 
Сообщения: 12
Зарегистрирован: 23 авг 2011, 11:51

Сообщение сфызук » 23 авг 2011, 12:51

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

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

Насчёт канала, можно не марочится а работать в режиме фильтрации и чтения пакетов (как вариант)... Оттуда драть инфу... Может даже составлять таблицу с ником, ip, mac`ом....
Аватара пользователя
c0cain
 
Сообщения: 12
Зарегистрирован: 23 авг 2011, 11:51

Сообщение сфызук » 23 авг 2011, 12:55

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

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

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

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

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

Сообщение сфызук » 23 авг 2011, 13:10

типо такого скрипта
[spoiler]
Код: Выделить всё
--[[
   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
[/spoiler]
сфызук
 

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

Ну с lua проблем не будет а вот над dll, надо подумать....
Аватара пользователя
c0cain
 
Сообщения: 12
Зарегистрирован: 23 авг 2011, 11:51

Сообщение сфызук » 23 авг 2011, 13:20

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

Сообщение скептик » 23 авг 2011, 18:43

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

Сообщение сфызук » 23 авг 2011, 20:39

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

Сообщение скептик » 23 авг 2011, 20:43

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

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

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

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

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

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

Вообщем жду ваших мнений, критики и идей!
Последний раз редактировалось c0cain 26 авг 2011, 00:45, всего редактировалось 1 раз.
Аватара пользователя
c0cain
 
Сообщения: 12
Зарегистрирован: 23 авг 2011, 11:51

Сообщение скептик » 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 » 26 авг 2011, 22:45

нереальное реально ,все зависит от опухшего больного мосКа , хорошая тема и думаю топер все таки сделает хоть одну попытку
casper-house
 
Сообщения: 21
Зарегистрирован: 13 мар 2011, 01:50
Хаб: dchub://dc-vip.ru


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



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

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

cron