Название: Abuse IP
Версия: 1.0
Автор: Epic
Программа: mIRC
Скрипт: AbuseIP.mrc
Описание: Этот скрипт помогает извлекать с веб-сайта информацию об IP адресе вместе со статистикой злоупотреблений и негативными отзывами для отображения на канале.
Требование: Необходимо зарегистрировать новую учётную запись с вашим аккаунтом на сайте "https://www.abuseipdb.com", чтобы получить возможность создать свой индивидуальный API ключ для поддержания ежедневной работы скрипта с посуточным лимитом. Бесплатный лимит составляет "1000" проверок IP адресов в сутки. Важно: - Вы должны держать свой API ключ в тайне и никогда никому его не показывать, т.к. он будет привязан к вашему личному аккаунту со всей статистикой и лимитом использования.
Настройка: Вы можете изменить настройки параметров скрипта через алиас "abuseip_set" на необходимые вам значения:
%aip_link - содержит прямую ссылку на сайт, с помощью которой будет извлекаться информация об IP адресе.
%aip_apikey - содержит уникальный API ключ. Для максимальной работоспособности и безопасности вы должны использовать свой ключ, созданный в вашем аккаунте.
%aip_param - содержит дополнительные параметры через пробел для проверки IP адресов. Подробнее: https://docs.abuseipdb.com/#check-endpoint.
%aip_path - содержит путь к папке со скриптом, куда будут сохраняться временные текстовые файлы с полученной информацией.
%aip_comm - содержит список команд через запятую, которые можно использовать для проверки IP адреса.
%aip_color* - содержит цвета для раскраски сообщения, отправляемого на канал.
%aip_operprefix - содержит префиксы операторов канала, которым разрешено использовать команду скрипта.
%aip_timelimit - содержит время (в секундах) для установки ограничения на пользователя для использования команды. Для снятия ограничения установите: <0>.
%aip_echodata - позволяет включить в боте эхо-сообщение с необработанной строкой данных, получаемой с сайта информации (для разбора). Возможные значения: <yes|no>.
%aip_showdata - содержит параметры через запятую, говорящие о том, в каком порядке и какие данные с информацией об IP следует отображать в строке для канала.
Управление: Правильный синтаксис команды: !abuse ‹ip›
Установка:
Откройте редактор скриптов вашего клиента при помощи комбинации клавиш "ALT+R" (откроется вкладка "Remote").
Выберите в верхнем меню пункт "File/New", чтобы открыть новый файл в редакторе скриптов и разместите в нём этот код.
Выберите в верхнем меню пункт "File/Save As..." и сохраните код в папке "scripts/AbuseIP/AbuseIP.mrc" (название из описания).
Если уже была установлена предыдущая версия, то замените на новый код. Не оставляйте предыдущие версии воизбежании конфликтов.
Скрипт: 💾 AbuseIP_v1.0.zip
##################################################################### # Название: Abuse IP v1.0 # Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code) # Описание: Извлекает с веб-сайта информацию об IP адресе вместе со статистикой злоупотреблений и негативными отзывами для отображения на канале. # Требование: Необходимо зарегистрировать новую учётную запись с вашим аккаунтом на сайте "https://www.abuseipdb.com", чтобы получить возможность создать свой индивидуальный API ключ, для поддержания ежедневной работы скрипта, с независимым суточным лимитом по ограничению. Бесплатный лимит составляет "1000" просмотров (проверок) IP в сутки. ##################################################################### alias -l abuseip_set { %aip_link = https://api.abuseipdb.com/api/v2/check %aip_apikey = Here_Your_API_Key %aip_param = maxageindays=90 verbose accept=application/json %aip_path = scripts\AbuseIP\ %aip_comm = !abuse,!ip,!info,!loc,!check %aip_color1 = 10 | %aip_color2 = 06 | %aip_color3 = 14 | %aip_color4 = 07 | %aip_color5 = 04 %aip_operprefix = [+%@&~!] %aip_timelimit = 10 %aip_echodata = no %aip_showdata = ipAddress,hostnames,countryCode,countryName,isp,usageType,isPublic,isWhitelisted,abuseConfidenceScore,numDistinctUsers,totalReports,lastReportedAt } --------------------------------------------------------------------- on *:TEXT:*:#:{ abuseip_set | if ($istok(%aip_comm,$strip($1),44)) { var %aip_pnick $remove($nick($chan,$nick).pnick,$nick) | if (%aip_pnick !isin %aip_operprefix) { .notice $nick 14Нет доступа. У вас нет необходимого статуса на канале. | halt } if ($2) { if (%aip_timelimit > 0) { if ($hget(timelimit,$nick) != $null) { .notice $nick 14Установлено ограничение на использование команды. Подождите:07 $hget(timelimit,$nick) 14сек. | halt } .hadd -mz timelimit $nick %aip_timelimit } abuseip $2 $nick $chan } else .notice $nick Правильный синтаксис:12 %aip_comm <ip> } } alias -l abuseip { var %ww_num = $+(abuseip_,$rand(1,100000),_,$ticks) var %ww_ip = $strip($1) | var %ww_nick = $2 | var %ww_chan = $3 var %ww_file = $+(%aip_path,%ww_num,.txt) var %ww_domen = $remove($gettok(%aip_link,2,47),$chr(47)) var %ww_sreq = $+(%aip_link,?ipAddress=,%ww_ip,&key=,%aip_apikey,&,$replace(%aip_param,$chr(32),&)) if (https: isin %aip_link) { var %ww_flag -e | var %ww_port 443 } | else var %ww_port 80 ;--------------- if ($sock(%ww_num)) .sockclose %ww_num | if ($exists(%ww_file)) .remove %ww_file .sockopen %ww_flag %ww_num %ww_domen %ww_port .sockmark %ww_num %ww_ip %ww_nick %ww_chan %ww_domen %ww_file %ww_sreq } on *:SOCKOPEN:abuseip_*:{ if ($sockerr) { echo -s Domen: $gettok($sock($sockname).mark,4,32) -> Server is not available. | return } .sockwrite -nt $sockname GET $gettok($sock($sockname).mark,6,32) HTTP/1.1 .sockwrite -nt $sockname Host: $gettok($sock($sockname).mark,4,32) .sockwrite -nt $sockname User-Agent: */* .sockwrite -nt $sockname $str($crlf,2) .sockwrite -nt $sockname } on *:SOCKREAD:abuseip_*:{ if ($sockerr > 0) { echo -s Domen: $gettok($sock($sockname).mark,4,32) -> $error | return } :1 | .sockread %tempcip | if ($sockbr == 0) return | if (!%tempcip) goto 1 if (!%wfile) var %wfile $gettok($sock($sockname).mark,5,32) if ("data": isin %tempcip) { .write -i %wfile $mid(%tempcip,1,2000) var %sm1 $gettok($sock($sockname).mark,1,32) var %sm2 $gettok($sock($sockname).mark,2,32) var %sm3 $gettok($sock($sockname).mark,3,32) var %sm4 $gettok($sock($sockname).mark,4,32) var %sm5 $gettok($sock($sockname).mark,5,32) .sockclose $sock($sockname) | abuseip_mess %sm1 %sm2 %sm3 %sm4 %sm5 | halt } goto 1 } alias -l abuseip_mess { var %mes_str $replace($remove($read($5,1),{"data":{,}},"),\/,/) if (%aip_echodata == yes) .echo -s %mes_str var %i 1 | while (%i <= $numtok(%aip_showdata,44)) { var %mes_tok $gettok(%aip_showdata,%i,44) | var %mes_find $+(%mes_tok,$chr(58)) var %mes_val $gettok($matchtok(%mes_str,%mes_find,1,44),2,58) if (ipAddress == %mes_tok) %mes_text = %mes_text $+(%aip_color1,IP:,$chr(32),%aip_color4,%mes_val) if (hostnames == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Host:,$chr(32),%aip_color2,%mes_val) if (domain == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Domain:,$chr(32),%aip_color2,%mes_val) if (countryCode == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Zone:,$chr(32),%aip_color2,%mes_val) if (countryName == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Country:,$chr(32),%aip_color2,%mes_val) if (isp == %mes_tok) %mes_text = %mes_text $+(%aip_color1,ISP:,$chr(32),%aip_color2,%mes_val) if (usageType == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Type:,$chr(32),%aip_color2,%mes_val) ;---------------- if (isPublic == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Public:,$chr(32),%aip_color2,%mes_val) if (isWhitelisted == %mes_tok) { if (%mes_val == false) var %mc %aip_color5 | else var %mc %aip_color2 %mes_text = %mes_text $+(%aip_color1,WhiteList:,$chr(32),%mc,%mes_val) } if (abuseConfidenceScore == %mes_tok) { if (%mes_val > 0) var %mc %aip_color5 | else var %mc %aip_color2 %mes_text = %mes_text $+(%aip_color1,Negative:,$chr(32),%mc,%mes_val,$chr(37)) } if (numDistinctUsers == %mes_tok) { if (%mes_val > 0) var %mc %aip_color5 | else var %mc %aip_color2 %mes_text = %mes_text $+(%aip_color1,Users:,$chr(32),%mc,%mes_val) } if (totalReports == %mes_tok) { if (%mes_val > 0) var %mc %aip_color5 | else var %mc %aip_color2 %mes_text = %mes_text $+(%aip_color1,Reports:,$chr(32),%mc,%mes_val) } if (lastReportedAt == %mes_tok) %mes_text = %mes_text $+(%aip_color1,Last:,$chr(32),%aip_color2,%mes_val) if (%i < $numtok(%aip_showdata,44)) %mes_text = $+(%mes_text,%aip_color3,$chr(44)) inc %i } msg $3 %mes_text | unset %mes_text %tempcip | if ($exists($5)) .remove $5 }
P.S. Если у вас возникли вопросы, вы столкнулись с трудностями по установке скрипта, или вы обнаружили ошибки, а может быть у вас появились новые идеи по модификации данного скрипта, то обязательно напишите здесь об этом.
- Подпись автора
[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]