• Publicidad

Detectar sistema operativo de equipos en la red

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Detectar sistema operativo de equipos en la red

Notapor lnx_hg » 2013-07-24 17:23 @766

Buenas tardes.

Despues de años de inactividad vuelvo a las andadas :D.

Mi problema es que deseo que me apoyen dándome una idea para obtener el sistema operativo de unos equipos de cómputo que haya en una red, esto mediante Perl. Ya investigué y encontré NMap, pero el problema es que esta aplicación que deseo hacer en Perl va a ser distribuida a varios usuarios y por lo que leí, se tiene que instalar NMap en los equipos donde se use mi aplicación. Así que yo creo que debe de haber una librería en CPAN que me diga esto.

Saludos y agradezco como siempre el apoyo que venga.
El mensajero no es importante, lo que importa es el mensaje.
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Publicidad

Re: Detectar sistema operativo de equipos en la red

Notapor explorer » 2013-07-24 17:59 @791

Bueno, entrando en CPAN, y buscando por Nmap, salen dos coincidencias:
Este último trae un programa llamado scan, que hace justamente lo que pides: averiguar todo lo que se pueda del sistema operativo de otra máquina. Utiliza para ello el ejecutable nmap, versión 3.49 o superior.

Bueno, el caso es que los dos sirven para lo mismo, aunque adoptan dos estrategias distintas a la hora de dialogar con nmap.

Y... estas no son las únicas soluciones en Perl para averiguar el sistema operativo remoto.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Detectar sistema operativo de equipos en la red

Notapor lnx_hg » 2013-07-27 14:22 @640

Muchas gracias, explorer, tomo en cuenta tu recomendación y agradezco tu tiempo :D
El mensajero no es importante, lo que importa es el mensaje.
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Re: Detectar sistema operativo de equipos en la red

Notapor lnx_hg » 2013-07-30 17:04 @752

De nuevo, pues al analizar NMAP, me convenció y lo usé, ahora cualquier script que tiro me marca el error "The filename, directory name, or volume label syntax is incorrect".

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <nmap-error>
  2.   <pid="5140"/>
  3.   <cmdline="'C:\Program Files\Nmap\nmap.exe' -v -v -v -sS -p 1-1024 -O --max-rtt-timeout 200 MyServer -oX -"/>
  4.   <nmap-err>
  5.      The filename, directory name, or volume label syntax is incorrect.
  6.   </nmap-msg>
  7. </nmap-error>
  8.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Estoy haciendo pruebas con el siguiente script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3.  
  4. use Nmap::Scanner;
  5.  
  6. my %network_status;
  7.  
  8. my $scanner = new Nmap::Scanner;
  9. $scanner->register_scan_complete_event(\&scan_completed);
  10. $scanner->guess_os();
  11.  
  12. $scanner->scan('-O 10.28.122.*');
  13.  
  14. foreach my $host ( keys %network_status ) {
  15.     print "$host => $network_status{$host}\n";
  16. }
  17.  
  18.  
  19. sub scan_completed {
  20.     my $self     = shift;
  21.     my $host     = shift;
  22.  
  23.     my $hostname = $host->hostname();
  24.     my $addresses = join(',', map {$_->addr()} $host->addresses());
  25.     my $status = $host->status();
  26.  
  27.     print "$hostname ($addresses) is $status ";
  28.  
  29.     my $os_name = 'unknown OS';
  30.     if ( $status eq 'up' ) {
  31.         if ( $host->os() && $host->os()->osmatches() ) {
  32.             my ($os_type) = $host->os()->osmatches();
  33.             $os_name = $os_type->name();
  34.         }
  35.         print "($os_name)";
  36.     }
  37.     print "\n";
  38.  
  39.     $network_status{$addresses} = $os_name;
  40. }
  41.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

que es uno que bajé de Internet.

Saludos.
El mensajero no es importante, lo que importa es el mensaje.
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Re: Detectar sistema operativo de equipos en la red

Notapor explorer » 2013-07-30 18:12 @800

Una pregunta: ¿el nmap.exe, en tu ordenador, está instalado en C:\Program Files\Nmap\? ¿No será en otro directorio?

Si no está ahí, debes llamar al método nmap_location(), para decirle dónde está, como se comenta al final de la página de manual de Nmap::Scanner::Scanner.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Detectar sistema operativo de equipos en la red

Notapor lnx_hg » 2013-07-30 21:19 @930

Sí, es la ruta correcta, pero llamar al método de location lo haré más tarde, ya que no tengo el equipo a la mano, pero está en la ruta por defecto del nmap.exe.

Saludos
El mensajero no es importante, lo que importa es el mensaje.
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Re: Detectar sistema operativo de equipos en la red

Notapor lnx_hg » 2013-08-06 17:36 @775

Te confirmo que se encuentra instalado en C:\Program Files\Nmap\nmap.exe

Saludos.
El mensajero no es importante, lo que importa es el mensaje.
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Re: Detectar sistema operativo de equipos en la red

Notapor explorer » 2013-08-06 19:13 @842

Parece que el problema está en las comillas.... Si ese es el caso, deberás modificar el código del propio módulo, o llamar a nmap_location(), con algo así:

nmap_location('"C:\Program Files\Nmap\nmap.exe"');

Bueno, no sé si hay que ponerle el resto de argumentos...


Edito: vale, el error está en esta línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $cmd = "'$nmap' -v -v -v";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
de Scanner.pm. En tu caso, cámbialo a
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $cmd = qq("$nmap" -v -v -v);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y nos dices si funciona.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado