Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Пишем spam-list generator (https://forum.antichat.xyz/showthread.php?t=94669)

Solide Snake 03.12.2008 20:15

Пишем spam-list generator
 
Пишем 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,Flags,Flags);
end;

Вот и всё :)

The End...

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

Solide Snake 03.12.2008 20:32

Цитата:

Сообщение от xlinux
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

Цитата:

Сообщение от Solide Snake
Едем дальше, Фотоальбомы

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



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

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

Solide Snake 08.12.2008 18:06

Цитата:

Сообщение от Realix
Нефигра не следовательно 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

собственно я реализовал что-то подобное только на пхп (следовательно без многопоточности) пару деньков назад и вот что получилось:
PHP код:

// 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($fhimplode("\n",$result)); 
        
$db += count($result); 
         
        unset(
$massive); 
        
$massive[] = ''
         
        unset(
$result); 
        unset(
$temp); 
        unset(
$mas); 
        unset(
$crount); 
    } 
    
$packet ''

?> 


neval 09.12.2008 09:36

gisty
PHP код:

while ($i 100000)
{
<
here>




Время: 09:23