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.
Sockets... busca en: php.net sobre fsockopen()
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 "¡Conectado satisfactoriamente!";
}
?>
<div align="Center">
<form method="GET" action="telnet.php">
<b>Kickear usuario</b>: <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.
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 !
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?.
Mira el minuto 3:26 del video !...
Y explicate mejor, no se que es la "barra de tareas", entiendo que aparecen....
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.
¿Nadie? :-(
http://php.net/manual/es/function.shell-exec.php
espero que te ayude , saludos =)
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?.