IRC Spam-script by elimS


Во времена своего баловства в IRC мною было написано довольно много всяческих скриптов. Один из них даже был опубликован в журнале «Хакер»
Заранее предупреждаю, скрипт был написан чисто в ознакомительных целях, изучал возможности mirc-скриптинга. За использование нижеизложенной информации в целях нанесения вреда я не несу никакой ответственности.
Решил выложить скрипт »IRC Spam-script by elimS» так, как уже не раз просили им поделиться. Каждый раз заливать куда-то на файлообменики надоело. Положу его тут.
Что этот скрипт делает?
Не трудно догадаться с названия, что с помощью скрипта можно рассылать сообщения в IRC.
В настройках, с помощью кнопки «указать текст» выбираем текстовый файл, в котором будут храниться сообщения, которые следует разослать. В файле одна строка означает текст одного сообщения. При рассылке сообщения выбираются рандомно. В смысле читается случайная строка из файла.
Кнопка «Частота Спам» : указываем с какой частотой высылать. Частота указывается в мили-секундах. 1000 мили-секунд ровно 1 секунде. Если высылать слишком часто сообщения, то на сервере сработает защита и отключит вас от сервера. Придется снова подключаться, а это потеря времени. Стоит учесть что защита срабатывает таким образом: на сервере стоит ограничение на количество пересылаемого объема текста за отрезок времени. Это значит, что если у вас сообщения довольно короткие – вы можете выставлять частоту по чаще, если же довольно большие – сообщения должны высылаться по реже.
Кнопка «Величина канала». Остановлюсь и расскажу идею скрипта. С помощью скрипта вы заходите и сразу же выходите на каналы irc-сервера, и так обходятся все каналы. Сделано это для сбора ников, которым отправятся сообщения. Тоесть ники собрали, вышли со всех каналов и начали рассылку. Ясно, что нет толка от каналов на котором сидят по несколько человек. С этой целью с помощью кнопки вы можете выставить ограничения на величину каналов с которых будет идти сбор ников. Можно указать как минимальное количество людей, так и максимальное.
Кнопки «Старт!», «Стоп!» – тут все ясно.
Галочками «опы», «войсопы», «халфопы», «обычные юзеры» можно регулировать кому стоит высылать сообщения. Ясное дело, что администрация irc-сети в большинстве случаев сидит на каналах с повышенными правами, если высылать «опам» и «халфопам» сообщения – есть высокий риск что вас засекут.
Галочка «реконект при Message target too fast»: бывают ограничения, которые регулируют не только объем пересылаемой информации за отрезок времени, но и количество самых сообщений. При превышении этого ограничения сервер выдает «Message target too fast». Решается все довольно просто – надо переконектится на сервере, что и сделает скрипт если галочка выставлена.
На вкладке «Дополнительные» можно также выбрать только сбор ников с каналов, без рассылки сообщений или же выбрать рассылку по ранее сформированому ник-листу. Ник-лист выглядит так: одна строчка – один ник.
Скрипт был написано довольно давно. Все нюансы его работы я не припомню. Но вроде как должно работать, раз люди просят и не жалуются. Конечно можно его дорабатывать. Например реализация кнопки «Пауза», реализация ник-листа с исключениями – чтоб не высылать сообщения администрации сети и тд. и тп.
Ниже сам текст скрипта, что с ним делать, думаю, знаете.
;—– IRC Spam-script by elimS —————-
alias spam_al {
%proverka_na_dublicat = 1
while ( %proverka_na_dublicat != 0 ) {
inc %spam_nick_list_i 1
%spam_nick = $read(%spam_nick_list,%spam_nick_list_i)
%spam_prefix = $mid(%spam_nick,1,1)
if ( ( ( %spam_prefix != @ ) || (%spam_op == on) ) && ( ( %spam_prefix != % ) || (%spam_hop == on) ) && ( ( %spam_prefix != + ) || (%spam_vop == on) ) ) {
if ( ( %spam_prefix = @ ) || ( %spam_prefix = % ) || ( %spam_prefix = + ) ) %spam_nick = $mid(%spam_nick,2,$len(%spam_nick))
%spam_temp = $read(spam_list.txt, w, * $+ %spam_nick $+ * )
%proverka_na_dublicat = $readn
if ( %proverka_na_dublicat = 0 ) {
write $mircdir $+ spam_list.txt %spam_nick
msg %spam_nick $read(%spam_text_file)
echo отправлено – %spam_nick
}
else echo дубликат – %spam_nick
}
}
if ( %spam_nick_list_i >= $lines( %spam_nick_list ) ) {
%spam_status = off
notice $me спам закончен, итого было заспамлено $lines($mircdir $+ spam_list.txt) людей.
timer_spam off
}
}
menu menubar {
spam by elimS: dialog -m spam_options spam_options
}
dialog spam_options {
title «IRC Spam-script by elimS. Ver. 1.0″
size -1 -1 140 195
option dbu
tab «Основные»,1, 1 1 135 190
tab «Дополнительные»,100
button «указать текст»,2, 10 20 50 10 , tab 1
button «частота спам»,3, 10 35 50 10 , tab 1
edit «»,4, 60 20 70 10, read autohs , tab 1
edit «»,5, 60 35 70 10, read autohs , tab 1
button «Старт!»,6, 10 65 120 20 , tab 1
button «Стоп!»,7, 10 90 120 20 , tab 1
box «на кого будет действовать скрипт»,8, 10 110 120 30 , tab 1
check «+o: опы», 9, 18 118 40 10 , tab 1
check «+h: халфопы», 10, 60 118 50 10 , tab 1
check «+v: войсопы», 11, 18 128 40 10 , tab 1
check «обычные юзеры», 12, 60 128 50 10 , tab 1
check «реконект при Message target too fast», 13, 18 140 110 10 , tab 1
button «величина канала»,14, 10 50 50 10 , tab 1
edit «»,15, 60 50 70 10, read autohs , tab 1
button «начать спам из указаного ник-листа»,17, 10 40 110 10 , tab 100
edit «», 18, 10 55 110 10 ,read autohs, tab 100
box «ник-лист»,19, 5 30 120 45 , tab 100
box «сбор-ников»,20, 5 80 120 45 , tab 100
button «начать сбор ников»,21, 10 90 110 10 , tab 100
text «скрипт написал elimS»,35 20, 5 153 90 10
link «http://elims.org.ua», 36, 5 168 90 10
}
on 1:dialog:spam_options:init:0: {
if (%spam_min_users == $null ) %spam_min_users = 50
if (%spam_max_users == $null ) %spam_max_users = 100
if (%spam_time == $null ) %spam_time = 2000
did -a spam_options 4 %spam_text_file
did -a spam_options 5 %spam_time
did -a spam_options 15 min: %spam_min_users max: %spam_max_users
did -a spam_options 18 %spam_nick_list
if (%spam_op == on) did -c spam_options 9
if (%spam_hop == on) did -c spam_options 10
if (%spam_vop == on) did -c spam_options 11
if (%spam_user == on) did -c spam_options 12
if (%spam_reconnect == on) did -c spam_options 13
}
on 1:dialog:spam_options:sclick,edit:*: {
if ($did == 2) {
%spam_text_file = $file=»Выберите текстовый файл со спамом» .txt
did -r spam_options 4
did -a spam_options 4 %spam_text_file
}
if ($did == 3) {
set %spam_time $$input(введите частоту посылки сообщения в милисекундах (1 секунда = 1000 милисекунд), e)
did -r spam_options 5
did -a spam_options 5 %spam_time
}
if ($did == 14) {
set %spam_min_users $$input(введите на каналах с каким количеством людей производить сбор ников (введите минимальное количество людей на канале):, e)
set %spam_max_users $$input(введите на каналах с каким количеством людей производить сбор ников (введите максимальное количество людей на канале):, e)
did -r spam_options 15
did -a spam_options 15 min: %spam_min_users max: %spam_max_users
}
if ($did == 6) {
%spam_status = on
%spam_nick_list = $mircdir $+ chanel_nick_list.txt
%spam_flag = sbor_kanalov
remove $mircdir $+ chanel_list.txt
%spam_zadanije = $null
notice $me сбор каналов…
list
}
if ($did == 7) {
timer_spam off
%spam_status = off
}
if ($did == 17) {
if (%spam_text_file == $null) {
echo $me вы не указали текст для спама
halt
}
%proxy_connect == off
%spam_nick_list = $file=»Выберите файл со списком ников:» .txt
%spam_status = on
did -r spam_options 18
did -a spam_options 18 %spam_nick_list
%spam_lines_nick_list = $lines( %spam_nick_list )
%spam_nick_list_i = 0
; write -c $mircdir $+ spam_list.txt начало
notice $me спам людей…
timer_spam -m 0 %spam_time spam_al
}
if ($did == 9) $iif(%spam_op == on,%spam_op = off,%spam_op = on)
if ($did == 10) $iif(%spam_hop == on,%spam_hop = off,%spam_hop = on)
if ($did == 11) $iif(%spam_vop == on,%spam_vop = off,%spam_vop = on)
if ($did == 12) $iif(%spam_user == on,%spam_user = off,%spam_user = on)
if ($did == 13) $iif(%spam_reconnect == on,%spam_reconnect = off,%spam_reconnect = on)
if ($did == 21) {
%spam_zadanije = sbor_nickov
%spam_status = on
%spam_nick_list = $mircdir $+ chanel_nick_list.txt
%spam_flag = sbor_kanalov
remove $mircdir $+ chanel_list.txt
notice $me сбор каналов…
list
}
if ($did == 36) run http://elims.org.ua
}
;— сбор сбор каналов ———–
; 322 – сообщение содержащее информацию о канале. при команде list. Название_канала количество_людей топик
raw 322:*: {
if ( %spam_status == on ) && ( %spam_flag == sbor_kanalov ) {
if ( $len($2) > 1 ) && ( $3 >= %spam_min_users ) && ( $3 < %spam_max_users ) {
write chanel_list.txt $2 $3
}
}
}
;— сбор каналов ———–
;— реконект при ошыбке ———–
raw 439:*: {
if ( %spam_status == on ) {
if ( %spam_reconnect == on ) && ( Message target change too fast. isin $1- ) server
}
}
;— реконект при ошибке ———–
;— join каналов ———–
alias al_spam_chan_join {
if ( %spam_status == on ) && ( %spam_flag == join_kanalov ) {
if ( %spam_list_i_chan >= $lines($mircdir $+ chanel_list.txt) ) {
timer_spam_chan_list off
%spam_flag = off
if ( %spam_zadanije != sbor_nickov ) {
timer_spam_chan_list off
%spam_flag = off
%spam_lines_nick_list = $lines( %spam_nick_list )
%spam_nick_list_i = 0
write -c $mircdir $+ spam_list.txt начало
notice $me спам людей…
timer_spam -m 0 %spam_time spam_al
}
}
}
}
raw 366:*: {
; 366 – конец списка ников, выдающихся при заходе на канал
if ( %spam_status == on ) && ( %spam_flag == join_kanalov ) {
part $gettok(%spam_chan_list,1,32)
inc %spam_list_i_chan 1
%spam_chan_list = $read($mircdir $+ chanel_list.txt,%spam_list_i_chan)
timer_join_chan 1 3 join $gettok(%spam_chan_list,1,32)
al_spam_chan_join
}
}
;— join каналов ———–
;— конец листа ———–
; 323 – сообщение информирующее о конце листа списка каналов выводимых командой list
raw 323:*: {
if ( %spam_status == on ) && ( %spam_flag == sbor_kanalov ) {
remove $mircdir $+ chanel_nick_list.txt
%spam_list_i_chan = 1
%spam_flag = join_kanalov
notice $me сбор ников по каналам…
%spam_chan_list = $read($mircdir $+ chanel_list.txt,%spam_list_i_chan)
join $gettok(%spam_chan_list,1,32)
}
}
;— конец листа ———–
;— сбор ников ———–
; 474 – сообщение информирующее что мы забанены на канале
raw 474:*: {
inc %spam_list_i_chan 1
%spam_chan_list = $read($mircdir $+ chanel_list.txt,%spam_list_i_chan)
timer_join_chan 1 3 join $gettok(%spam_chan_list,1,32)
al_spam_chan_join
}
raw 353:*: {
; 353 – список ников сидящих на канале. Выдаеться при заходе на канал
echo $time сбор ников с канала
if ( %spam_status == on ) && ( %spam_flag == join_kanalov ) {
%spam_count_nicks_i = 3
while ( %spam_count_nicks_i < $0 ) {
inc %spam_count_nicks_i 1
if ( $ [ $+ [ %spam_count_nicks_i ] ] != $me ) {
write chanel_nick_list.txt $ [ $+ [ %spam_count_nicks_i ] ]
}
}
}
echo $time конец сбора ников с канала
}
;— сбор ников ———–
on *:CONNECT: {
if ( %spam_reconnect == on ) && ( %spam_status == on ) {
timer_spam -m 0 %spam_time spam_al
}
}
Скрипт успешно собирает ники. Но при начале спама из никлиста не работает и вдает следуюшее:
18:01:55 -> -sdfsdf- спам людей…
* Таймер _spam активирован
18:01:55 -sdfsdf- спам людей…
* /msg: не хватает параметров (строка 13, Replace.mrc).
Не мог бы ты исправить?
стукни мне в асю по этому поводу. надо узнать какие входные данные. похоже на то, что не указан или неправильно указан текст сообщения которое надо высылать