Página 1 de 1

Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-07-24 17:23 @766
por lnx_hg
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.

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-07-24 17:59 @791
por explorer
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.

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-07-27 14:22 @640
por lnx_hg
Muchas gracias, explorer, tomo en cuenta tu recomendación y agradezco tu tiempo :D

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-07-30 17:04 @752
por lnx_hg
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.000 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.003 segundos, usando GeSHi 1.0.8.4

que es uno que bajé de Internet.

Saludos.

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-07-30 18:12 @800
por explorer
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.

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-07-30 21:19 @930
por lnx_hg
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

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-08-06 17:36 @775
por lnx_hg
Te confirmo que se encuentra instalado en C:\Program Files\Nmap\nmap.exe

Saludos.

Re: Detectar sistema operativo de equipos en la red

NotaPublicado: 2013-08-06 19:13 @842
por explorer
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.