#!/usr/bin/perl -w

#  autor: Asmo - asmo@mail.be en http://www.perlmonks.com/?node_id=113876
#  permite  obtener el sistema operativo de un host remoto  y alguna otra información.
# modificado: 29 de sep/2006, FJA - neocipres@telefonica.net

use Socket;
use strict;

my $remote =" ";
my $port=80;

if ($#ARGV == -1) {
affichage();
}
 else {
  $remote=$ARGV[0];
  if ($#ARGV == 1) {$port=$ARGV[1];}
 }

sub affichage
{
	system("clear");
        print "\n\tUso : $0 <host remoto> [puerto]\n\n";
exit();
}



my $submit = "HEAD / HTTP/1.0\r\n\r\n";
if($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
die "no port specified" unless $port;
my $iaddr = inet_aton($remote) || die "\n\t Servidor no encontrado: $remote \n\n";
my $paddr = sockaddr_in($port, $iaddr) || die "Caca !!";
my $proto = getprotobyname('tcp') || die "protocol !!";

socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "cannot open socket : $! \n\n";
connect(SOCK, $paddr) || die "no puedo conectar a $remote: $! \n\n";
send(SOCK,$submit,0);
while(<SOCK>)
{
if($_ =~ /Server: (.*)/) {
        print $_;
}

}
close(SOCK);
