PDA

Просмотр полной версии : Пишем spam-list generator


Solide Snake
03.12.2008, 20:15
Пишем spam-list generator

Приветствую всех пользователей форума Antichat :) Моя статейка будет посвящена написанию простого генератора спам-листов.

Intro...

Интернетом я пользуюсь около 4х лет, пользовался разными почтовыми серверами такими как Yandex, Rambler, Google, Mail и т.д. И было мне интересно, какой из этих серверов менее защищён от наплыва спама который приходит на почтовый ящик, как e-mail попадает в спам базы. После небольшой проверки, как уже наверно многие догадались, менее устойчивым к спаму оказался Mail.ru
В то время как на Goole за месяц приходит в лучшем случае 1 письмо со спамом, на Yandex около 10 максимум, а на Rambler около 5-10, на Mail же приходит не менее 70.
Посмотрев некоторые сервисы Mail.ru не трудно было догадаться как можно узнать E-mail пользователя.

Пример:

Блоги.Меил.Ру

http://r.mail.ru/cln4001/blogs.mail.ru/mail/admin/

Видим, что E-mail admin@mail.ru

Едем дальше, Фотоальбомы

http://foto.mail.ru/list/admin2/

Следовательно E-mail admin2@list.ru

Дальше, Мой Мир

http://my.mail.ru/mail/admin3/

Также E-mail admin3@mail.ru

Самая интересная ссылка, это приглашение какого-то пользователя пообщаться в Mail Агенте

http://www.mail.ru/agent?message&to=admin4@mail.ru

Тут открыто видно E-mail admin4@mail.ru

Из всего этого, можно отдельно выделить сервис Мой Мир, т.к. там есть поиск по Имени, Фамилии и даже цвету глаз. Допустим, вы создали свой сайт, захотели его раскрутить при помощи спама, вы заходите на Мой Мир, вводите критерии пользователей которым по вашему мнению будет интересен ваш сайт, и всё.

Coding...

Т.к. статья называется "Пишем spam-list generator", приступим к написанию сего генератора. Писать мы будет на Delphi.
Генератор будет полу-автоматическим, поэтому пишем в форму TWebBrowser.

В OnCreate для формы пишем:

procedure TForm1.FormCreate(Sender: TObject);
var
Flags: OLEVariant;
begin
Flags := 0;
WebBrowser1.Navigate(WideString('http://my.mail.ru'),Flags,Flags,Flags,Flags);
end;

Ещё пропишем TMemo и TButton. И не забудем изменить свойство ScrollBars на ssBoth у Memo1.

Далее добавим следующую функцию:

Function After ( Src:string ; Var S:string ) : string ;
Var
F : Word ;
begin
F := POS (Src,S) ;
if F=0 then
After := ''
else
After := COPY(S,F+length(src),length(s)) ;
end ;

В OnClick для Button1 пишем:

procedure TForm1.Button1Click(Sender: TObject);
var
x:word;
s,temp,n: string;
Flags: OLEVariant;
begin
for x:=0 to WebBrowser1.OleObject.Document.Links.Length-1 do
begin
temp:=WebBrowser1.OleObject.Document.Links.Item(x) ;
s:=After('http://www.mail.ru/agent?message&to=',temp);
if s <>'' then memo1.lines.Add(s);
if x>46 then
begin
if After('http://my.mail.ru/my/classmates',temp)<>'' then n:=temp;
if After('http://my.mail.ru/my/search',temp)<>'' then n:=temp;
if After('http://my.mail.ru/my/neighbour',temp)<>'' then n:=temp;
if After('http://my.mail.ru/my/military_search',temp)<>'' then n:=temp;
end;
end;
Flags := 0;
WebBrowser1.Navigate(WideString(n),Flags,Flags,Fla gs,Flags);
end;

Вот и всё :)

The End...

Для работы с этим генератором, нужно будет зарегистрироваться в Мой Мир. Далее, просто запускаем генератор, вводим наш логин и пароль, жмём на ссылку Поиск людей, выбираем критерии и жмём найти.
Mail показывает сколько нашлось пользователей по заданным критериям, далее жмём на Button1 и в наше Memo1 помещается 20 e-mail’ов, страница обновляется и опять нажимаем на батон и т.д. пока не надоест.
Вот впринципе и всё, так при помощи такой "дырки" в Mail.ru можно собирать спам листы :)

Solide Snake
03.12.2008, 20:32
OnClick можно зациклить, точнее зарекурсить, что бы самому не тыкать по кнопке...
Можно конечно)Но это уже ваше дело)

gisTy
03.12.2008, 21:21
Кстати еще интересная темка.. Заметил ее давно, но никак руки не доходили написать сборщик мыл.. http://otvet.mail.ru/Собственно на ответах мэйл.ру сидит не малое кол-во пользователей.
например перебираем http://otvet.mail.ru/question/1
http://otvet.mail.ru/question/2
http://otvet.mail.ru/question/3
...И все время попадаем на страницы с вопросами..
На ответах мэйл.ру рядом с "ником" пользователя, создавшего вопрос/коммент есть картинка показывающая статус пользователя (онлайн/оффлайн). Так вот там в ссылке на изображение для статуса указывается e-mail участника в открытом виде. Так что перебирая ссылки на вопросы можно собрать немаленькую базу мыл.
На момент написания сообщения последним был вопросhttp://otvet.mail.ru/question/20120054/Т.е. это уже 20млн страниц. Да и сообщение Ответы: 131 292 066Тоже радует.

Sharky
04.12.2008, 00:21
имхо на статью не тянет... не вижу смысловой нагрузки

WAR!9G
04.12.2008, 00:25
имхо на статью не тянет... не вижу смысловой нагрузки
Смысловая нагрузка не в самой статье - имхо после прочтения может появится пару интересных идей написания "по мотивам".

Realix
07.12.2008, 09:33
Едем дальше, Фотоальбомы

Цитата:http://foto.mail.ru/list/admin2/



Следовательно E-mail admin2@mail.ru

Нефигра не следовательно admin2@mail.ru , а admin2@list.ru

Solide Snake
08.12.2008, 18:06
Нефигра не следовательно admin2@mail.ru , а admin2@list.ru
Ну ошибся немного))С кем не бывает))

ZAMUT
08.12.2008, 19:27
Накидал скриптик--
#!/usr/bin/perl
use IO::Socket;
use strict;
use threads;
use threads::shared;
my ($k):shared;

my $ot = $ARGV[0]; # Начальная страница
my $do = $ARGV[1]; # Конечная
$k = 0;
my $dir = 'open'; # Директория с открытыми вопросами, можно vote - вопросы на голосовании.
my ($socket,$s,$i);

open FILE,'>mails.txt';

for(0..$ARGV[2]) {threads->create(\&Grab,$_);}
for(threads->list) { $_->join; }

sub Grab
{
for($i=$ot;$i<=$do;$i++)
{
$socket = IO::Socket::INET->new("otvet.mail.ru:80") || die("Can't connecting!");
print $socket "GET http://otvet.mail.ru/$dir/?asort=0&asc=0&opg=$i HTTP/1.0\r\n".
"Host: www.otvet.mail.ru\r\n".
"Accept-Language: ru\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: 214\n\n";
while(<$socket>)
{
$s = <$socket>;
if($s=~/message&to=(.+)\"><img src=\"http/) { $k++; print FILE $1.";\r\n"; };
}
close $socket;
}
}
print "END!\r\nPage: $ot - $do\r\nALL: $k\r\n";
close FILE;

сие работает многопоточно, запускать так: perl bla.pl [начальная страница] [конечная] [потоки]
Сохраняет в mails.txt, формат:
bla@list.ru;
bla2@mail.ru;
...

gisTy
09.12.2008, 05:21
собственно я реализовал что-то подобное только на пхп (следовательно без многопоточности) пару деньков назад и вот что получилось:// Mail harvester by gisTy
set_time_limit(0);
$crountMax = 200; //через сколько шагов проверять мыльники на наличие повторов и сохранять результат в файл.
$crount = 0;
$db = 0;
$massive[] = '';
$fh = fopen("mails.txt","a");//где mails.txt - файл с мыльниками.
for($i = 1;;$i++)
{
$url = "http://otvet.mail.ru/question/".$i;
$packet = file_get_contents($url);
preg_match_all("/<span id=\"online:(.*?)\" class=/i", $packet, $result);
$mas = array_pop($result);
$temp = array_merge($massive, $mas);
$massive = $temp;
$crount++;
if($crount == $crountMax)
{
$result = array_unique($massive);
fwrite($fh, implode("\n",$result));
$db += count($result);

unset($massive);
$massive[] = '';

unset($result);
unset($temp);
unset($mas);
unset($crount);
}
$packet = '';
}
?>

neval
09.12.2008, 09:36
gisty
while ($i < 100000)
{
<here>
}

gisTy
09.12.2008, 20:38
gisty
while ($i < 100000)
{
<here>
}
а вот этого малость не понял...

master01
09.12.2008, 22:00
Можете кто-нибудь выложить программу готовую, а то компилятор делфи не хочется скачивать,
Да да, пожалуйста киньте ссылку!

Qwazar
10.12.2008, 01:05
Кто же логику в onClick пихает?

Fepsis
11.12.2008, 18:04
Скомпилил.. Рульная прога... Автору +))

sabotag
11.12.2008, 18:42
а ведь программы для сбора мыльников есть....вроде тоже нормально работают :)