¿Telnet en php?

Iniciado por Feedeex, 19 Febrero 2011, 05:12 AM

0 Miembros y 1 Visitante están viendo este tema.

Feedeex

Buenas a todos. Voy a ser rápido y conciso, quiero saber si hay alguna libreria o forma de conectar a telnet mediante php. La sintáxis que uso es así:

Citar
telnet xxx.xxx.xxx.xxx zzzz

Donde "x" son números de IP y "z" el puerto. Una vez que conecto me dice:

CitarPassword:

Es decir, necesaria saber si hay alguna librería o algo que se pueda adaptar a lo que yo necesito. Muchas gracias.

Diabliyo

Sockets... busca en: php.net sobre fsockopen()

Feedeex

Estuve averiguando...
Cuando yo lo hago manualmente hago lo siguiente:

• Abro el CMD.
• Ingreso "telnet IP PUERTO"
• Me dice "Password:". Ingreso password y luego me dice "Bienvenido a la consola del D2GS".

Y ahí me aparece:

CitarD2GS>

Si yo ingreso kick Fede la función que cumple es la de expulsar al jugador "Fede" de la partida donde se encuentre (es un juego online).

Ahora, con mi código:

<html>
<head><title>Telnet de D2Nemesis</title></head>
<body>
<?php
$direccion 
IP";
$puerto = NUMEROPUERTO;
$tiempo_colapsa = 30;
$password_telnet = "CONTRASEÑA";
$conecta_telnet = fsockopen($direccion$puerto$errno$errstr$tiempo_colapsa);
 if (!
$conecta_telnet) {
  echo "
$errstr ($errno)";
  echo "
<br>";
  } else {
   fputs(
$conecta_telnet,$password_telnet);
   echo "
&iexcl;Conectado satisfactoriamente!";
   }
?>

<div align="Center">
<form method="GET" action="telnet.php">
<b>Kickear usuario</b>:&nbsp;<input type="text" name="usuario_kick" id="usuario_kick" maxlength="15" style="text-align: center">
<input type="submit" value="Kickear usuario">
</form>
<?php
if (isset($_GET['usuario_kick'])) {
 
$usuario_kick trim($_GET['usuario_kick']);
  
$kickear fputs($conecta_telnet"kick $usuario_kick");
  if (!
$kickear) {
   echo 
"Error al kickear al usuario $usuario_kick";
   } else {
  echo 
"El usuario $usuario_kick ha sido kickeado satisfactoriamente.";
  }
 }
?>


Me devuelve:

Citar¡Conectado satisfactoriamente!
Kickear usuario:  <TEXTBOX ACA>

Es decir, estaría conectado ya al telnet de forma correcta. Pero el problema está en cuando le indico el usuario a kickear, me devuelve:

Citar¡Conectado satisfactoriamente!
Kickear usuario: 
El usuario Ari ha sido kickeado satisfactoriamente.

Es decir, yo hubiese ejecutado por la consola "kick Ari". El problema está en que desde la página me dice que lo hizo correctamente, pero nunca lo kickea al usuario de la partida, sin embargo, en el cmd siguiendo los mismos pasos SI lo kickea.


Espero que puedan ayudarme, gracias.

Diabliyo

en este caso cuando te encuentras con estos problemas, siempre es conveniente verificar las tramas mediante Wireshark... Te recomiendo abras Wireshark ejecutes el comando en consola (de la forma en que si te funciona) después detienes wireshark y verifica las tramas para confirmar si es solo un paquete el que envía para realizar el kick. Tambien verificar si el nombre del usuario se envia con salto de linea o sin salto de linea, eso tal vez influya.

Necesitas analizarlo a nivel de tramas !

Saludos !

Feedeex

Siguiendo este tutorial: http://www.youtube.com/watch?v=O1JMQfbHFaI intento ver los packetes que se envían. El programa me dice que estoy recibiendo paquetes (aumentan cada ves mas) en la barra de tareas, pero la lista se queda en blanco. ¿Qué sucede?.

Diabliyo

Mira el minuto 3:26 del video !...

Y explicate mejor, no se que es la "barra de tareas", entiendo que aparecen....

Feedeex

Gracias, he conseguido ver los paquetes que entran desde la IP donde conecto al telnet pero.. ¿ahora que hago? (me mire por completo el videotutorial que explica sobre las peticiones). Siempre utiliza el protocolo TCP,  acá un pequeño ejemplo de cuando hago la petición:

Citar1   0.000000   192.168.1.100   190.224.163.23   TCP   58127 > ddi-tcp-1 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=8 SACK_PERM=1
2   0.059510   190.224.163.23   192.168.1.100   TCP   ddi-tcp-1 > 58127 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1452 WS=0 SACK_PERM=1
3   0.059559   192.168.1.100   190.224.163.23   TCP   58127 > ddi-tcp-1 [ACK] Seq=1 Ack=1 Win=66560 Len=0
4   0.117303   190.224.163.23   192.168.1.100   TCP   ddi-tcp-1 > 58127 [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=6
5   0.117413   192.168.1.100   190.224.163.23   TCP   58127 > ddi-tcp-1 [PSH, ACK] Seq=1 Ack=7 Win=66560 Len=3

Y falta mucho más pero.. estoy desconcertado. ¿Qué debo hacer ahora?, ¿qué es lo que "especificamente" debo buscar?. Muchas gracias.

Feedeex



Feedeex

Cita de: SmogMX en 26 Febrero 2011, 20:03 PM
http://php.net/manual/es/function.shell-exec.php



espero que te ayude , saludos =)

Si pero eso trabaja con datos y me los devuelve. Si yo uso:

shell_exec("IP, PUERTO");

y el sistema me devuelve:

CitarPassword:

No tengo forma de responderle, ¿o si?.