P. 17 - Ejemplo Telnet en Python
P. 17 - Ejemplo Telnet en Python
La biblioteca socket en Python proporciona una interfaz para la comunicación de red utilizando el modelo
de sockets. Esta biblioteca permite crear conexiones de red entre diferentes aplicaciones, ya sea en la
misma máquina o en máquinas distintas a través de la red. En el contexto de Telnet, socket es fundamental
porque permite implementar tanto servidores como clientes que se comunican usando este protocolo.
La biblioteca socket se utiliza para establecer un servidor Telnet que escucha conexiones de clientes y un
cliente Telnet que se conecta al servidor. El servidor y el cliente intercambian mensajes a través de sockets,
permitiendo la autenticación básica y el envío de datos entre ellos. La biblioteca socket facilita la creación
de estas conexiones y la transmisión de datos en el formato que Telnet espera, gestionando detalles como
la conexión de red y el intercambio de información en texto claro.
Para este ejemplo se hará un cliente y un servidor en Python para poder autenticarse, el servidor se va a
encargar de recibir las credenciales del cliente y el servidor hará la validación de esas credenciales, si las
credenciales son correctas mostrará un mensaje de Autenticación exitosa en el cliente y si es fallida
mostrará el mensaje de Autenticación fallida.
# Conectar al servidor
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST, PORT))
# Enviar la contraseña
password = input("Ingrese su contraseña: ")
client_socket.sendall(password.encode('utf-8') + b"\n")
1
Aplicaciones para comunicaciones en red
client_socket.close()
Para el servidor_telnet.py se va a agregar la siguiente lógica para poder recibir las credeciales y autenticas:
import socket
while True:
client_socket, client_address = server_socket.accept()
print(f"Conexión desde {client_address}")
# Pedir contraseña
client_socket.sendall("Password: ".encode('utf-8'))
password = client_socket.recv(1024).strip().decode('utf-8')
# Autenticación simple
if username == 'escom' and password == 'cisco':
client_socket.sendall("\nAutenticación exitosa!\n".encode('utf-8'))
else:
client_socket.sendall("\nAutenticación fallida!\n".encode('utf-8'))
client_socket.close()
Al ejecutar y realizar las pruebas se puede ver el siguiente mensaje del lado del cliente para el caso de
autenticación exitosa:
2
Aplicaciones para comunicaciones en red
ACTIVIDAD: