php實現telnet功能樣本

來源:互聯網
上載者:User

 這篇文章主要介紹了php實現telnet功能樣本,需要的朋友可以參考下

代碼如下:<?phpclass PHPTelnet {    var $show_connect_error=1;     var $use_usleep=0;  // change to 1 for faster execution        // don't change to 1 on Windows servers unless you have PHP 5    var $sleeptime=125000;    var $loginsleeptime=1000000;     var $fp=NULL;    var $loginprompt;     var $conn1;    var $conn2;     /*    0 = success    1 = couldn't open network connection    2 = unknown host    3 = login failed    4 = PHP version too low    */    function Connect($server,$user,$pass) {        $rv=0;        $vers=explode('.',PHP_VERSION);        $needvers=array(4,3,0);        $j=count($vers);        $k=count($needvers);        if ($k<$j) $j=$k;        for ($i=0;$i<$j;$i++) {            if (($vers[$i]+0)>$needvers[$i]) break;            if (($vers[$i]+0)<$needvers[$i]) {                $this->ConnectError(4);                return 4;            }        }         $this->Disconnect();         if (strlen($server)) {            if (preg_match('/[^0-9.]/',$server)) {                $ip=gethostbyname($server);                if ($ip==$server) {                    $ip='';                    $rv=2;                }            } else $ip=$server;        } else $ip='127.0.0.1';         if (strlen($ip)) {            if ($this->fp=fsockopen($ip,23)) {                fputs($this->fp,$this->conn1);                $this->Sleep();                 fputs($this->fp,$this->conn2);                $this->Sleep();                $this->GetResponse($r);                $r=explode("n",$r);                $this->loginprompt=$r[count($r)-1];                 fputs($this->fp,"$usern");                $this->Sleep();                 fputs($this->fp,"$passn");                if ($this->use_usleep) usleep($this->loginsleeptime);                else sleep(1);                $this->GetResponse($r);                $r=explode("n",$r);                if (($r[count($r)-1]=='')||($this->loginprompt==$r[count($r)-1])) {                    $rv=3;                    $this->Disconnect();                }            } else $rv=1;        }         if ($rv) $this->ConnectError($rv);        return $rv;    }     function Disconnect($exit=1) {        if ($this->fp) {            if ($exit) $this->DoCommand('exit',$junk);            fclose($this->fp);            $this->fp=NULL;        }    }     function DoCommand($c,&$r) {        if ($this->fp) {            fputs($this->fp,"$cn");            $this->Sleep();            $this->GetResponse($r);            $r=preg_replace("/^.*?n(.*)n[^n]*$/","$1",$r);        }        return $this->fp?1:0;    }     function GetResponse(&$r) {        $r='';        do {             $r.=fread($this->fp, 1024);            $s=socket_get_status($this->fp);        } while ($s['unread_bytes']);    }     function Sleep() {        if ($this->use_usleep) usleep($this->sleeptime);        else sleep(1);    }     function PHPTelnet() {        $this->conn1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).            chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).            chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).            chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).            chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).            chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).            chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).            chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).            chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).            chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).            chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).            chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);        $this->conn2=chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).            chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);    }     function ConnectError($num) {        if ($this->show_connect_error) switch ($num) {        case 1: echo '<br />[PHP Telnet] <a href="http://www.jb51.net/php-telnet/errors/fsockopen.php">Connect failed: Unable to open network connection</a><br />'; break;        case 2: echo '<br />[PHP Telnet] <a href="http://www.jb51.net/php-telnet/errors/unknown-host.php">Connect failed: Unknown host</a><br />'; break;        case 3: echo '<br />[PHP Telnet] <a href="http://www.jb51.net/php-telnet/errors/login.php">Connect failed: Login failed</a><br />'; break;        case 4: echo '<br />[PHP Telnet] <a href="http://www.jb51.net/php-telnet/errors/php-version.php">Connect failed: Your server's PHP version is too low for PHP Telnet</a><br />'; break;        }    }} ?>
相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。