1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

NoDistribute wrapper (PHP)

Тема в разделе "Скрипты", создана пользователем LeMMinG, 2 май 2015.

  1. TopicStarter Overlay
    LeMMinG

    LeMMinG

    Регистрация:
    27 дек 2013
    Сообщения:
    825
    Симпатии:
    448
    Сабж можыт быть полезен если нужно создать себе сканер АВ, с перенаправлением туда.
    Единственное: надо будит заставить ево юзать проксю после каждово скана
    Использование:
    Код:
    include 'scanner.php';
     
    //Initialize the scanner
    $sc = new Scanner('FILE PATH'); // OR $sc = new Scanner('FILE PATH', 'PROXY');
     
    //To check how many scans you've got left
    print $sc->ScansLeft();
     
    //To scan (returns array with info)
    $scan = $sc->Scan();
    var_dump($scan);
    
    class:
    Код:
    <?php
        /*
            NoDistribute.com wrapper
            - For HackHound.org -
           
            Usage:
                include/require scanner.php
                $sc = new Scanner('FILENAME.EXT');
                $scans_left = $sc->ScansLeft();
                $has_been_scanned = $sc->HasBeenScanned();
                $result = $sc->Scan();
               
            Notes:
                Scan() [ARRAY] returns an array with the complete report
                ScansLeft() [INTEGER] returns an integer 0-4
                HasBeenScanned() [STRING] returns the result url or NULL (if it hasn't been scanned before)
                Pass a proxy when initializing the scanner and you'll have 4 scans again (new Scanner('FILENAME.EXT', '127.0.0.1:8080');)
               
            Notes for the owner of NoDistribute.com:
                If you want people to use your website to scan, then implement captcha
        */
    
        ignore_user_abort(true);
        set_time_limit(0);
       
        class Scanner
        {
            public $Checksum;
            private $Client;
            private $file;
           
            function __construct($file, $proxy = null)
            {
                $this->Checksum = md5_file($file);
                $this->Client = new WebClient();
                $this->file = $file;
                if ($proxy != null)
                {
                    curl_setopt($this->Client->ch, CURLOPT_PROXY, $proxy);
                }
            }
           
            public function ScansLeft()
            {
                $url = 'https://nodistribute.com/';
                $get = $this->Client->DownloadString($url);
                preg_match('/(\d) Free Daily Scans Available/i', $get, $match);
                return $match[1];
            }
           
            public function HasBeenScanned()
            {
                $url = 'https://nodistribute.com/checkmd5.php?md5='.$this->Checksum;
                $get = $this->Client->DownloadString($url);
                if (strlen($get) > 0)
                {
                    return 'https://nodistribute.com/result/'.$get;
                }else
                {
                    return null;
                }
            }
           
            public function Scan()
            {
                $has = $this->HasBeenScanned();
                if ($has != null)
                {
                    $url = $has;
                    $get = $this->Client->DownloadString($url);
                    return $this->FormatResults($get);
                    break;
                }
               
                if ($this->ScansLeft() > 0)
                {
                    $url = 'https://nodistribute.com/scan/';
                    $post = $this->Client->UploadFile($url, $this->file);
                    return $this->FormatResults($post);
                    break;
                }
            }
           
            private function FormatResults($html)
            {
                preg_match_all('/> (.*?):\s?(Clean|.*?)<br \/><\/td>/', $html, $array);
                $engines = $array[1];
                $reports = $array[2];
                $fres = array();
                preg_match('/<strong>Result:<\/strong> (<span.*?>)?(\d+\/\d+)</', $html, $m);
                preg_match('/<strong>Filename:<\/strong> (.*?)<br \/>/', $html, $m1);
                preg_match('/<strong>Filesize:<\/strong> (.*?)<br \/>/', $html, $m2);
                $info = array(
                    'Filename' => $m1[1],
                    'Filesize' => $m2[1],
                    'Result' => $m[2]
                );
                array_push($fres, $info);
                for ($i = 0; $i < count($engines); $i++)
                {
                    $res = array(
                        'Engine' => $engines[$i],
                        'Report' => $reports[$i]
                    );
                    array_push($fres, $res);
                }
                return $fres;
            }
           
            function __destruct()
            {
            }
        }
       
        class WebClient
        {
            public $ch;
           
            function __construct()
            {
                $this->ch = curl_init();
                curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
                curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($this->ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
            }
           
            public function DownloadString($url)
            {
                curl_setopt($this->ch, CURLOPT_URL, $url);
                curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
                return curl_exec($this->ch);
            }
           
            public function UploadFile($url, $file)
            {
                curl_setopt($this->ch, CURLOPT_URL, $url);
                curl_setopt($this->ch, CURLOPT_POST, true);
                curl_setopt($this->ch, CURLOPT_POSTFIELDS, array('file' => '@'.realpath($file)));
                curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($this->ch, CURLOPT_REFERER, 'https://nodistribute.com/');
                return curl_exec($this->ch);
            }
           
            function __destruct()
            {
                curl_close($this->ch);
            }
        }
    ?>
     
    • Like Like x 2
    Метки:

Поделиться этой страницей

Загрузка...