05. september 2000 - 23:36Der er
7 kommentarer og 1 løsning
Telnet via PHP
Hvordan laver man mon et lille script, der via fsockopen() - eller lign, du bestemmer - åbner en telnetforbindelse på port 23 til en standard Linux RedHat, logger ind, kører en eller gerne flere brugerbestemte kommandoer og logger ud? Naturligvis skal feedback fra systemet kunne trækkes med tilbage ..
Jeg har ikke tid til at chekke RFC\'en ud for øjeblikket, så alle gode bud er velkomne :-)
Strukturen i det er vel nogenlunde:
- Opret forbindelse på port 23 - Så længe modtaget tegn <> \":\" Skip tegn - Send $login + \\n - Så længe modtaget tegn <> \":\" Skip tegn - Send $pass +\\n
Herefter er timingen af tingene ikke så vigtig - det er bare at sende og modtage løs (1k chunks ok), når først login er overstået.
<?php /* Auth : Mike McWilliams <php@iometrics.com> Date : 2/24/1998 Desc : Simple telnet session (port 23) to talk to a specific ip address. Designed to work with HP JetDirect Network Cards. $hostname can be set as an IP address or a host name found in /etc/hosts. Keep in mind it is best to set $hostname with the $ip variable in printer.php3 script file.
Also : see printer.php3 (it calls this script)
Updates: 2/24/98 Banner status can be changed */
class telnet_class { var $banner; var $port=23; var $hostname= \"\"; var $connection=0; var $state= \"DISCONNECTED\";
Function OpenConnection() { if($this->hostname== \"\") return( \"2 it was not specified a valid hostname\"); $this->connection=fsockopen($this->hostname,$this->port);
switch($this->connection) { case 0: echo \"File not opened\"; return( \"<BR><BR>File not created<BR>\".$this->hostname. \" \".$this->port). \"<BR>\"; case -3: return( \"-3 socket could not be created\"); case -4: return( \"-4 dns lookup on hostname \\\"$hostname\\\" failed\"); case -5: return( \"-5 connection refused or timed out\"); case -6: return( \"-6 fdopen() call failed\"); case -7: return( \"-7 setvbuf() call failed\"); default: return( \"\"); } }
Function PutLine($line) { return(fputs($this->connection, \"$line\\r\\n\")); }
Function CloseConnection() { if($this->connection!=0) { fclose($this->connection); $this->connection=0; } }
/* ___________ Public Functions ______________ */
Function Open() { //OPEN CONNECTION TO HOST if(($error=$this->OpenConnection())!= \"\") return($error);
//IF WE ARE CONNECTED, PERFORM COMMANDS if ($this->connection) { $this->PutLine( \"\\r\\n\"); $this->PutLine( \"?\"); $this->GetLine();
if (isset($this->banner)){ if (strval($this->banner)==0){ $this->PutLine( \"BANNER:0\"); } elseif (strval($this->banner)==1){ $this->PutLine( \"BANNER:1\"); } }
//TELL HOST WE WISH TO QUIT $this->PutLine( \"quit\");
//READ WHAT THE HOST SENT US $message=0; $i=0; $jetdirect = \"JETDIRECT PARAMETERS CONFIGURED\"; $quitmsg = \"USER QUITTING\";
//LOOP THROUGH LINES UNTIL EOF OR 40 LINES ARE PROCESSED while (!feof($this->connection) && ($i<40)) { $currentline=$this->GetLine(); $bTripped=$bTripped || strstr(strtoupper($currentline),$jetdirect);
//ONLY DISPLAY $jetdirect LINE AND BEYOND (do not show quit message) if (($bTripped) && (!strstr(strtoupper(chop($currentline)),$quitmsg))) { //SEE IF THIS LINE HAS THE BANNER STATUS if (strstr(strtoupper($currentline), \"BANNER\")){
//SEE WHAT THE STATUS OF THE BANNER IS if (!strstr(strtoupper($currentline), \"ENABLED\")){ //BANNER IS DISABLE (see the ! above) MAKE URL FOR ENABLE // AND ADD THE MESSAGE TO THE ARRAY $messages[$message]=strtoupper($currentline).$banner. \"1\".$suffix; } elseif (strstr(strtoupper($currentline), \"ENABLED\")){ //BANNER IS ENABLED - MAKE URL FOR DISABLE // AND ADD THE MESSAGE TO THE ARRAY $messages[$message]=strtoupper($currentline).$banner. \"0\".$suffix; } } else { //ADD THE MESSAGE TO THE ARRAY $messages[$message]=strtoupper($currentline); $message++; } } $i++; } } else { $messages[0]= \"-ERROR\"; }
//CLOSE THE CONNECTION $this->CloseConnection(); return($messages); }
Function Close() { $this->CloseConnection(); $this->state= \"DISCONNECTED\"; return($error); } }; ?>
Har dog ingen løsning, så hvis én dukker op med en sådan, er point\'ene gerne givet ud stadigvæk.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.