Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class dle
- {
- private $kernel;
- private $reg = array();
- public function __construct($kernel)
- {
- $this->kernel = $kernel;
- }
- public function start()
- {
- switch($this->kernel->argv['mode'])
- {
- case 'pm': $this->pm();break;
- case 'addnews': $this->addnews();break;
- default: $this->kernel->log("Input action", true, ERROR_FATAL);break;
- }
- return;
- }
- private function addnews()
- {
- //---------------------------------------------//
- // берем все сайты с базы
- //---------------------------------------------//
- $result = $this->kernel->db->sql_query("SELECT * FROM dle_sites");
- if($this->kernel->db->num_rows() == 0) $this->kernel->log("Sites not found", true, ERROR_FATAL);
- //---------------------------------------------//
- // выбераем ак сервис
- //---------------------------------------------//
- if(!$this->kernel->ac) {
- if($this->kernel->argv['ac'] == 'antigate') {
- include(ROOT_DIR . 'lib/antigate.php');
- $this->kernel->ac = new ac(&$this->kernel);
- } else if($this->kernel->argv['ac'] == 'captchabot') {
- include(ROOT_DIR . 'lib/captchabot.php');
- $this->kernel->ac = new ac(&$this->kernel);
- } else {
- $this->kernel->log("Incorrect AC service", true, ERROR_FATAL);
- }
- }
- //---------------------------------------------//
- // тексты новости
- //---------------------------------------------//
- $news = array();
- $news['prev'] = file_get_contents(ROOT_DIR . 'dle_news-prev.txt');
- $news['full'] = file_get_contents(ROOT_DIR . 'dle_news-full.txt');
- $news['title'] = file_get_contents(ROOT_DIR . 'dle_news-title.txt');
- while($data = $this->kernel->db->fetch_assoc($result))
- {
- //---------------------------------------------//
- // создаем сессию и настройки
- //---------------------------------------------//
- $this->kernel->network->new_session();
- $this->kernel->network->setOpt(array(
- 'cookie-file' => TEMP_DIR . microtime(),
- 'return-result' => 1,
- 'return-headers' => 1,
- 'follow-location' => 1,
- ));
- $this->kernel->log("URL: {$data['url']}");
- //---------------------------------------------//
- // смотрим есть ли логин в базе. если нету, то регимся.
- //---------------------------------------------//
- if($data['login'] == '' or $data['pass'] == '') {
- if($this->register($data['url']) == false) {
- continue;
- } else {
- $data['login'] = $this->reg['login'];
- $data['pass'] = $this->reg['pass'];
- $this->kernel->db->sql_query("UPDATE dle_sites set login = '{$data['login']}', pass = '{$data['pass']}' where id = '{$data['id']}'");
- }
- }
- //---------------------------------------------//
- // входим
- //---------------------------------------------//
- $this->login($data['login'], $data['pass'], $data['url']);
- //---------------------------------------------//
- // закроем и откроем соеденение, баг курла чтоли какой то
- // иначе просто куки не сохраняются, которые были отданы при логине
- // а если закрыть - то сохранятся. пиздец.
- //---------------------------------------------//
- $this->kernel->network->close();
- $this->kernel->network->new_session();
- $this->kernel->network->setOpt(array(
- 'cookie-file' => $this->kernel->network->cookie_file,
- 'return-result' => 1,
- 'return-headers' => 1,
- 'follow-location' => 1,
- ));
- //---------------------------------------------//
- // получим капчу
- //---------------------------------------------//
- $this->kernel->log("Try add news");
- $code = $this->kernel->ac->send($data['url'] . 'engine/modules/antibot.php', 'jpg', array('cookie-file' => $this->kernel->network->cookie_file, 'referer' => $data['url'] . '?do=addnews'));
- //---------------------------------------------//
- // возьмем секретные коды антиспама. и зачем они?
- //---------------------------------------------//
- $this->kernel->network->setOpt(array(
- 'url' => "{$data['url']}?do=addnews",
- 'method' => GET
- ))->start();
- preg_match('/\<input type=\"hidden" name\="mod" value\="addnews" \/\>\<input type\="hidden" name\="(.*?)" value\="(.*?)" \/\>/i', $this->kernel->network->data, $hidden);
- $this->kernel->log("Code: {$code}");
- //---------------------------------------------//
- // запрос на добавку
- //---------------------------------------------//
- $postdata = array(
- 'title' => $news['title'],
- 'bbfont' => '0',
- 'bbsize' => '0',
- 'short_story' => $news['prev'],
- 'full_story' => $news['full'],
- 'sec_code' => $code,
- 'add' => 'отправить',
- 'mod' => 'addnews',
- $hidden[1] => $hidden[2],
- );
- $this->kernel->network->setOpt(array(
- 'url' => "{$data['url']}?do=addnews",
- 'method' => POST,
- 'postdata' => $postdata,
- 'referer' => $data['url'] . '?do=addnews',
- ))->start();
- //---------------------------------------------//
- // проверяем теперь на успех
- //---------------------------------------------//
- $this->kernel->network->data = iconv('cp1251', 'UTF-8', $this->kernel->network->data);
- if(stristr($this->kernel->network->data, 'Ваша новость была успешно добавлена в базу данных.')) {
- $this->kernel->log("News added");
- $this->kernel->stats['total']++;
- $this->kernel->log("Total added: {$this->kernel->stats['total']}");
- } else if(stristr($this->kernel->network->data, '<li>Введен неверный код безопасности</li>')) {
- $this->kernel->log("Bad image code");
- } else {
- $this->kernel->log("Can't send news");
- }
- //---------------------------------------------//
- // завершаем
- //---------------------------------------------//
- unset($code, $postdata, $hidden);
- $this->kernel->network->close();
- }
- $this->kernel->log("Work done :)");
- }
- private function register($url)
- {
- $code = $this->kernel->ac->send($url . 'engine/modules/antibot.php', 'jpg', array('cookie-file' => $this->kernel->network->cookie_file, 'referer' => $url . '?do=register'));
- $this->kernel->log("Captcha: {$code}");
- $this->kernel->network->setOpt(array(
- 'url' => "{$url}?do=register",
- 'method' => POST,
- 'postdata' => array(
- 'name' => 'IAmNewsMan',
- 'password1' => 'hello11',
- 'password2' => 'hello11',
- 'email' => 'nulleg@mail.ru',
- 'sec_code' => $code,
- 'submit_reg' => 'submit_reg'
- ),
- ))->start();
- file_put_contents(TEMP_DIR . 'mda'.rand().'.html', $this->kernel->network->data);
- if(stristr($this->kernel->network->data, '<input type="text" name="fullname"')) {
- $this->kernel->log("Success register: IAmNewsMan:hello11");
- $this->reg['login'] = 'IAmNewsMan';
- $this->reg['pass'] = 'hello11';
- return true;
- } else if(stristr($this->kernel->network->data, 'Через 10 минут (возможно и раньше)')) {
- $this->kernel->log("Register failing, need activation");
- return false;
- } else {
- $this->kernel->log("Rigster failing");
- return false;
- }
- }
- private function pm()
- {
- $this->kernel->network->new_session();
- $this->kernel->network->setOpt(array(
- 'return-result' => 1,
- 'return-headers' => 1,
- 'follow-location' => 1,
- 'cookie-file' => TEMP_DIR . microtime(),
- 'timeout' => 10,
- ));
- $this->login();
- for($i = $this->kernel->argv['s'];$i < $this->kernel->argv['e']; $i++)
- {
- $this->kernel->network->setOpt(array(
- 'url' => $this->kernel->argv['url'] . "index.php?do=pm&doaction=newpm&user={$i}",
- 'method' => GET,
- 'no-body' => 0,
- ))->start();
- preg_match('/\<input type\="text" name\="name" value\="(.*?)"/i', $this->kernel->network->data, $out);
- $this->kernel->network->setOpt(array(
- 'url' => $this->kernel->argv['url'] . "index.php?do=pm&doaction=newpm&user={$i}",
- 'method' => POST,
- 'postdata' => array(
- 'name' => $out[1],
- 'subj' => $this->get_subj(),
- 'comments' => $this->get_comments(),
- 'outboxcopy' => 1,
- 'send' => 'send',
- ),
- 'no-body' => 1,
- ))->start();
- $this->kernel->log("Message to id {$i} sent");
- }
- }
- private function get_subj()
- {
- $this->kernel->db->sql_query("SELECT * FROM dle_subj order by rand() limit 1");
- $subj = $this->kernel->db->fetch_assoc();
- return urlencode(iconv('UTF-8', 'cp1251', $subj['subj']));
- }
- private function get_comments()
- {
- $this->kernel->db->sql_query("SELECT * FROM dle_comm order by rand() limit 1");
- $comm = $this->kernel->db->fetch_assoc();
- return urlencode(iconv('UTF-8', 'cp1251', $comm['comm']));
- }
- private function login($login = '', $pass = '', $url = '')
- {
- if(!$login || !$pass) list($login,$pass) = explode(':', $this->kernel->argv['login']);
- $this->kernel->network->setOpt(array(
- 'url' => $url ? $url : $this->kernel->argv['url'],
- 'method' => POST,
- 'postdata' => array(
- 'login_name' => $login,
- 'login_password' => $pass,
- 'login' => 'submit',
- ),
- ));
- $this->kernel->network->start();
- if(stristr($this->kernel->network->data, 'Set-Cookie: dle_user')) {
- $this->kernel->log("Success login");
- return true;
- } else {
- $this->kernel->log("Can't login", true, ERROR_FATAL);
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement