Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Drakegon en 19 Diciembre 2007, 01:17 am



Título: Emulador Telnet con Php?
Publicado por: Drakegon en 19 Diciembre 2007, 01:17 am
Alguien puede darme una luz sobre como puedo programar un Emulador Telnet en Php.

(un Script que me permita hacer una conexion Telnet a un servidor y puerto especifico y   enviar- recibir mensajes)

O si alguien sabe de un script ya hecho pues mucho mejor... xD


Please!! ayuda...


Título: Re: Emulador Telnet con Php?
Publicado por: alone-in-the-chat en 19 Diciembre 2007, 01:21 am
Lee sobre manejo de sockets

Saludos


Título: Re: Emulador Telnet con Php?
Publicado por: Drakegon en 19 Diciembre 2007, 02:34 am
Alguna otra guia mas especifica?¿  :-\


Título: Re: Emulador Telnet con Php?
Publicado por: Drakegon en 19 Diciembre 2007, 03:20 am
Olvidenlo...
Lo he logrado  ;D

Ahora alguien sabe de algun host que permita abrir sockets?¿



Título: Re: Emulador Telnet con Php?
Publicado por: Drakegon en 20 Diciembre 2007, 17:26 pm

Tengo un problema con el emulador de telnet que estoy creando:

el problema es el siguiente:

Tengo la conexión con el servidor abierta, un inputbox donde ingreso el comando que le enviare al servidor, y el textarea donde se deben ver todos los comandos enviados y las respuestas recibidas. Pero para enviar un comando lo envio a la misma pagina en forma de formulario con Post y luego lo trato de enviar con fputs, pero al hacerlo me da error:

"Warning: fputs(): supplied argument is not a valid stream resource in ****\***.php on line 138"  huh

imagino que esto ocurre debido a que en el momento en que llamo de nuevo a la pagina para enviarle un nuevo comando la conexión que he abierto en un principio se pierde, y el identificador de la conexión que le paso a fputs no es valido.

Alguien sabe como puedo recoger el comando del input box y actualizar el contenido del textarea sin perder la conexión???  rolleyes

Ayuda...  tongue


Título: Re: Emulador Telnet con Php?
Publicado por: alone-in-the-chat en 20 Diciembre 2007, 18:03 pm
Puedes meterlo en variables de Session
primero hazte una clase simple para manejo de sockets
las operaciones basicas conectar , cerrar la conexion, recoger datos , enviar datoss y lo que creas necesario  , despues haz un include de esa clase y crea una variable session de una instancia de esa clase
asi la session se encargara de hacer perdurar tu objeto

Saludos

 


Título: Re: Emulador Telnet con Php?
Publicado por: WHK en 20 Diciembre 2007, 20:08 pm
Código
  1. <?php
  2. $da = fsockopen("$HOST", 23, $errno, $errstr, 30);
  3. if (!$da) {
  4.    echo "$errstr ($errno)<br />\n";
  5. } else {
  6.    $salida = "$USER\r\n";
  7.    $salida .= "$PASS\r\n";
  8.    $salida .= "$COMANDOS\r\n";
  9.    $salida .= "exit\r\n";
  10.  
  11.    fwrite($da, $salida);
  12.    while (!feof($da)) {
  13.        echo fgets($da, 128);
  14.    }
  15.    fclose($da);
  16. }
  17. ?>

Defines host, user, pass y los comandos.


Título: Re: Emulador Telnet con Php?
Publicado por: Drakegon en 20 Diciembre 2007, 21:35 pm
Puedes meterlo en variables de Session
primero hazte una clase simple para manejo de sockets
las operaciones basicas conectar , cerrar la conexion, recoger datos , enviar datoss y lo que creas necesario  , despues haz un include de esa clase y crea una variable session de una instancia de esa clase
asi la session se encargara de hacer perdurar tu objeto

Saludos

 

Intente lo de las sesiones y no funciono..  :-\
El identificador de la conexion se me desaparace en cuanto intento enviar un comandp..  :P

Aca lo basico del codigo para ver si alguien detecta cual es el error..  :-[

Code: Page.php
Obtengo el servidor al que me voy a conectar...

Citar

<?php
session_start();//Start  session
header("Cache-control: provate");//Fix the IE6 Sessions problem
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="page2.php" method=post>
<input name="server" type="text" id="text" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>



CODE: page2.php
Aqui hago todo el manejo... El problema es que el identificador del Socket de la conexion se desaparece en cuanto intento enviar un commando..  :-\\

Citar

<?php
session_start();//Start out session
header("Cache-control: provate");//Fix the IE6 Sessions problem
?>

<?php

if($HTTP_POST_VARS["server"])
   {
   $_SESSION['server'] = $HTTP_POST_VARS["server"];
   $_SESSION['conection'] = fsockopen($_SESSION['server'],25);
   $_SESSION['screen']=fgets($_SESSION['conection'],256);
   }
   
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Typer" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
</head>

<body>
<p align="center" class="style1">SERVER: <?php print($_SESSION['server']) ?> </p>
<p align="center" class="style1">CONECTION: <?php print($_SESSION['conection']) ?> </p>
<p align="center">

<?php

if($HTTP_POST_VARS["command"])
   {
   fwrite($_SESSION['conection'], $HTTP_POST_VARS["command"]);
   $response=fgets($_SESSION['conection'],256) ;
   $_SESSION['screen'] = $_SESSION['screen']."\r\n". $HTTP_POST_VARS["command"]."\r\n".$response;
   }
   
?>


<form action="page2.php" method=post>
  <div align="center">
  <textarea name="Tex" cols="40" rows="10" id="Tex"><?php print($_SESSION['screen'])?>
</textarea>
  </p>
  </div>
<p align="center">
  <input name="command" type="command" id="command" />
</p>
<p align="center">
  <input type="submit" name="Submit" value="Submit" />
</p>
</body>
</html>






Título: Re: Emulador Telnet con Php?
Publicado por: alone-in-the-chat en 20 Diciembre 2007, 23:22 pm
Bueno por lo que parece la conexion abierto mediante sockets se cierra apenas termina de ejecutarse el script

por lo tanto intentar mantener una conexion  socket por session es imposible

Estoy intentando hacerlo manteniendo los comandos que vas ingresando
 :-\
veremos como va la cosa te voy poniendo un avance .
Aun hay que modificarlo  aver si mas tarde me doy un toke

sockets.php
Código
  1. <?php
  2. class CI_Sockets {
  3.  
  4. var $socket;
  5.  
  6. function createSock($server,$port)
  7. {
  8. $direccion = gethostbyname($server);
  9. $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  10. $resultado = socket_connect($this->socket, $direccion, $port);
  11. if ($resultado < 0)
  12. {
  13. return false;
  14. }else{
  15. return true;
  16. }
  17. }
  18. function up($string)
  19. {
  20. return socket_write($this->socket, $string);
  21. }
  22. function get()
  23. {
  24. if(!socket_last_error($this->socket))
  25. {
  26.   if($buffer=socket_read($this->socket,4096,PHP_NORMAL_READ))
  27.   {
  28.       return $buffer;
  29.   }
  30. }
  31. }
  32. function closeSocket()
  33. {
  34. return socket_close($this->socket);
  35. }
  36. }
  37. ?>
  38.  


page1.php

Código
  1. <?php
  2. ?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. <title>Define</title>
  8. </head>
  9. <body>
  10. <form action="page2.php" method="post">
  11. <input name="server" type="text" id="text" />
  12. <input type="submit" name="Submit" value="Submit" />
  13. </form>
  14. </body>
  15. </html>
  16.  


page2.php

Código
  1. <?php
  2. include("sockets.php");
  3. if (!session_is_registered("Srv") && isset($_POST['server']))
  4. {
  5. session_register("Srv","Commands");
  6. $_SESSION['Srv'] = $_POST['server'];
  7. $_SESSION['Commands'] = array();
  8. }
  9. $ci_socket = new CI_Sockets();
  10. $ci_socket->createSock($_SESSION['Srv'],PUERTO,$socket);
  11. if (isset($_POST['command']))
  12. {
  13. $_SESSION['Commands'][] = $_POST['command'];
  14. $_SESSION['Commands'] = array_unique($_SESSION['Commands']);
  15. $cadena = "";
  16. foreach($_SESSION['Commands'] as $var)
  17. {
  18. $ci_socket->up(trim($var));
  19. $cadena .= $ci_socket->get();
  20. }
  21. }
  22.  
  23. ?>
  24. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  25. <html xmlns="http://www.w3.org/1999/xhtml">
  26. <head>
  27. <meta http-equiv="Content-Typer" content="text/html; charset=iso-8859-1" />
  28. <title> =_= </title>
  29. </head>
  30. <body>
  31. <form method=post>
  32.   <div align="center">
  33.   <textarea name="command" cols="40" rows="10" id="command" />
  34.   <?php
  35.   echo $cadena;
  36.   ?>
  37.   </textarea>
  38.   </div>
  39. <p align="center">
  40.   <input name="command" type="command" id="command" />
  41. </p>
  42. <p align="center">
  43.   <input type="submit" name="Submit" value="Submit" />
  44. </p>
  45. </body>
  46. </html>
  47. <?php
  48. $ci_socket->closeSocket();
  49. ?>
  50.  


ya voy saliendo del trabajo X) veamos si llegando a mi casa continuo buscando en foros eh encontrado que varios se chocaron con esto

Veremos si puedo darle solucion  :-\
Se aceptan sugerencias

 ;D