ping 172.16.1.116Pinging host 172.16.1.116 : 172.16.1.116ping: No reply. Time Out !!ping: No reply. Time Out !!ping: No reply. Time Out !!ping: No reply. Time Out !!Host 172.16.1.116 replied to 0 of the 4 pingsready 12:26:32 | 
telnet 172.16.1.116 1830Trying...Connected to 172.16.1.116.Escape character is '^]'. | 
telnet 172.16.1.116 1830Trying...Connected to 172.16.1.116.Escape character is '^]'. telnet> quit | 
On target system (Linux) [ndav@phx-lab-lnx64 ~]$ perl tcplisten.pl -p 1830 -m 'Connection has been accepted'perl tcplisten.pl -port 1830 -message 'Connection has been accepted' On OpenVOS client stp -ttp asciiready 12:16:34telnet 164.152.77.155 1830Trying...Connected to 164.152.77.155.Escape character is '^]'.Connection has been accepted Escape character is '^]'.Connection closed by forei.Ready 12:16:40 | 
On OpenVOS target system perl tcplisten.pl -p 1830 -m 'made it to m16'perl tcplisten.pl -port 1830 -message 'made it to m16' On Linux client [ndav@phx-lab-lnx64 ~]$ telnet 164.152.77.128 1830Trying 164.152.77.128...Connected to rigel.az.stratus.com (164.152.77.128).Escape character is '^]'.made it to m16Connection closed by foreign host.[ndav@phx-lab-lnx64 ~]$   | 
telnet 172.16.1.116 1830Trying...telnet: Unable to connect to remote host: The connection was refused.ready 12:31:28 | 
telnet 172.16.1.116 1830Trying...telnet: Unable to connect to remote host: Network trying to be reached is unreac+hable.ready 12:54:34 | 
telnet 172.16.1.116 1830Trying...telnet: Unable to connect to remote host: No route to host.ready 12:55:44 | 
telnet 172.16.1.116 1830Trying...telnet: Unable to connect to remote host: The operation timed out. | 
| 
 Mensagem 
 | 
 Significado 
 | 
|---|---|
| 
 Conectado (com banner) 
 | 
 Pode alcançar o anfitrião e a aplicação 
 | 
| 
 Conectado (sem banner) 
 | 
 Pode chegar ao hospedeiro e à aplicação - provavelmente 
 | 
| 
 Recusado 
 | 
 Pode chegar ao hospedeiro, mas não à aplicação - provavelmente 
 | 
| 
 Inacessível 
 | 
 Não é possível chegar ao anfitrião 
 | 
| 
 Desconto de tempo 
 | 
 Não é possível chegar ao anfitrião - provavelmente 
 | 
perl tuc.pl -i 172.16.1.116 -p 1830Reply received on UDP socket from 164.152.77.128 message: echoed by udpecho.pl:+sent by tuc.pl at Mon Aug 30 13:31:34 2010ready 13:31:34 | 
perl tuc.pl -i 172.16.1.116 -p 1830ICMP Destination port unreachable message received from 172.16.1.116ready 11:40:12 | 
perl tuc.pl -i 172.16.1.116 -p 1830ICMP Destination network unreachable message received from 164.152.77.171ready 11:43:50 perl tuc.pl -i 172.16.1.116 -p 1830ICMP Destination host unreachable message received from 164.152.77.171ready 11:44:54 | 
perl tuc.pl -i 172.16.1.116 -p 1830ICMP Time exceeded , TTL expired in transit message received from 164.152.77.34ready 11:45:39 | 
perl tuc.pl -i 172.16.1.116 -p 1830No response was received from 172.16.1.116ready 16:43:26 | 
perl tuc.pl -i 172.16.1.117 -p 1830 -t 10No response was received from 172.16.1.117ready 12:06:26 perl tuc.pl -i 172.16.1.117 -p 1830 -t 1 No response was received from 172.16.1.117ready 12:06:32 | 
| 
 Mensagem 
 | 
 Significado 
 | 
|---|---|
| 
 Mensagem em banner de aplicação 
 | 
 Pode alcançar o anfitrião e a aplicação 
 | 
| 
 Rede ICMP/mensagem do anfitrião 
 | 
 Não é possível chegar ao anfitrião 
 | 
| 
 Mensagem de porta ICMP do anfitrião 
 | 
 Pode chegar ao host mas não à aplicação 
 | 
| 
 Sem resposta, aplicação envia mensagem de banner 
 | 
 Não é possível chegar ao anfitrião 
 | 
| 
 Sem resposta, a aplicação não envia mensagem de banner 
 | 
 Pode ou não ser capaz de alcançar o anfitrião 
 | 
tcplisten.pl
# tcplisten.pl begins here
# # Versão 1.00 10-07-30 # Este roteiro foi testado em # Aberto VOS 17.0.2ah rodando Perl v5.8.0 construído para i686-vos # Microsoft Windows XP Service Pack 3 em execução # ActiveState Perl v5.10.0 construído para MSWin32-x86-multi-thread # Red Hat Linux 4AS-5.5 rodando # Perl v5.8.5 construído para x86_64-linux-fios-multi # # use IO::Socket; use Getopt::Long; usar Sys::Hostname; usar rigorosamente; meu ($resultado); meu ($localPort, $message, $peerAddr); meus ($newSock, $data); $result = GetOptions ('port=s' => $localPort, message=s' => $message); if (($resultado != 1) ||| !(definido($localPort)) { imprimir "nnUsage:n"; imprimir "tperl tcplisten.pl -port PORT-NUMBER [-message MESSAGE]nn"; saída; } se (!defined ($message)) { imprimir "Nenhuma mensagem especificada - criação de mensagem"; $message = "Conexão aceita por tcplisten correndo em " . hostname; } imprimir "perl tcplisten.pl -port $localPort -message '" . $message . "“‘n”; my $sock = IO::Socket::INET->new( Proto => 'tcp', LocalPort => $localPort, LocalAddr => '0.0.0.0.0', Ouça => 1, ) ou morrer "Não foi possível criar soquete para porta $localPort: $!n"; enquanto (1) { minha meia-nova = $sock->accept (); imprimir "Connected accepted from " . $newSock->peerhost . "em " . localtime () . "“n”; imprimir $newSock $message . "“n”; $newSock -> shutdown(2); $sock->read($data, 1024); # esperar para obter uma indicação próxima */ $newSock->close(); } # # tcplisten.pl termina aqui  | 
tuc.pl
# tuc.pl begins here
# # Versão 1.00 10-07-30 # Este roteiro foi testado em # Aberto VOS 17.0.2ah rodando Perl v5.8.0 construído para i686-vos # Microsoft Windows XP Service Pack 3 em execução # ActiveState Perl v5.10.0 construído para MSWin32-x86-multi-thread # Red Hat Linux 4AS-5.5 rodando # Perl v5.8.5 construído para x86_64-linux-fios-multi # # use IO::Socket; use IO::Selecionar; use Getopt::Long; usar rigorosamente; meu ($resultado); meu ($destIP, $destPort, $timeout, $resultado, $message, $flags); meu ($ready, $socket); meu ($x, $c, $icmpAlready); $resultado = GetOptions ('ip=s' => $destIP, port=s' => $destPort, timeout=s' => $timeout); if (($resultado != 1) || !(definido($destIP) && definido($destPort))) { imprimir "nnUsage:n"; imprimir "tperl tuc.pl -ip DESTINO-IP-ADESTINO" . "-port DESTINO-PORT-PORT-NUMBERnn"; saída; } if (!defined($timeout)) { $timeout = 5; } elsif ($timeout > 15) { imprimir "OK, mas" . $timeout . " parece exageradamente longo.n"; } $message = "enviado por tuc.pl at " . local time (); my $sock = IO::Socket::INET->new( Proto => 'udp', PeerPort => $destPort, PeerAddr => $destIP ) ou morrer "Não foi possível criar soquete para o destino $destIP: $!n"; my $isock = IO::Socket::INET->new( Proto => 'icmp'); $sock->send($message) ou die "Enviar erro: $!n"; $message = ""; meu $read_set = novo IO::Select(); $read_set->add($sock); $read_set->add($isock); ($ready) = IO::Select->select($read_set, undef, undef, $timeout); $icmpAlready = 0; $c = 0; foreach $socket (@$ready) { $c = $c + 1; se ($socket == $sock) { $x = "Resposta recebida no soquete UDP de"; $socket->recv($message, 100, $flags); se ($icmpAlready == 0) { se (comprimento ($message) > 0) { print $x . $socket->peerhost . ” message: ” . $message . “n”; } else { print $x . $socket->peerhost . “n”; } } } outra mensagem # icmp recebida { $icmpAlready = 1; $socket->recv($message, 100, $flags); se (comprimento ($message) > 98) { imprimir "Unexpectedly long (" . comprimento ($message) . "Mensagem ICMP de " . $socket->peerhost . " mensagem: ". $message . "“n”; } elsif (length ($message) < 52) { imprimir "Unexpecedly short (" . comprimento ($message) . "Mensagem ICMP de " . $socket->peerhost . "“n”; } outra # mensagem de processo icmp { meu tipo $ = ord (substrato ($message, 20, 1)); meu código $code = ord (substrato ($message, 21, 1)); meu porto de $ = ord (substrato ($message, 50, 1)) * 256 + ord (sub-mensagem ($message, 51, 1)); se ($port != $destPort) { imprimir "Mensagem inesperada do ICMP recebida de" . $socket->peerhost . "mensagem : " . substrato ($message, 20) . "“n”; } senão # a mensagem icmp é boa { se ($type == 3) { if ($code == 0) { imprimir "ICMP Destination network" . "mensagem inalcançável recebida de" . $socket->peerhost . "“n”; } elsif ($code == 1) { imprimir "ICMP Destination host" . "mensagem inalcançável recebida de" . $socket->peerhost . "“n”; } elsif ($code == 3) { print "ICMP Destination port" . "mensagem inalcançável recebida de" . $socket->peerhost . "“n”; } elsif ($code == 6) { print "ICMP Destination network" . "mensagem desconhecida recebida de" . $socket->peerhost . "“n”; } elsif ($code == 7) { print "ICMP Destination host unknown " . "mensagem recebida de " . $socket->peerhost . "“n”; } elsif ($code == 8) { print "ICMP Source host isolado" . "mensagem recebida de" . $socket->peerhost . "“n”; } elsif ($code == 9) { print "ICMP Network administratively " . "mensagem proibida recebida de" . $socket->peerhost . "“n”; } elsif ($code == 10) { imprimir "ICMP Host administrativamente" . "mensagem proibida recebida de" . $socket->peerhost . "“n”; } elsif ($code == 11) { print "ICMP Network unreachable for " . "Mensagem TOS recebida de" . $socket->peerhost . "“n”; } elsif ($code == 12) { print "ICMP Host unreachable for " . "Mensagem TOS recebida de" . $socket->peerhost . "“n”; } elsif ($code == 13) { imprimir "ICMP Comunicação" . "mensagem administrativamente proibida recebida de" . $socket->peerhost . "“n”; } senão { imprimir "Unexpected ICMP message received type = " . Tipo $ . "código = " . $código . " de " . $socket->peerhost . "“n”; } } # se ($type == 3) elsif (($type == 11) & ($code == 0)) { print "ICMP Time exceeded , TTL expired in transit " . "mensagem recebida de " . $socket->peerhost . "“n”; } senão { imprimir "Unexpected ICMP message received type = " . Tipo $ . "código = " . $código . " de " . $socket->peerhost . "“n”; } } # else # a mensagem icmp é boa } # else # processar mensagem icmp } # outra mensagem #icmp recebida } # foreach $socket (@$ready) if ($c == 0) { print "No response was received from " . $sock->peerhost . "“n”; } # # tuc.pl termina aqui  | 
udpecho.pl
# udpecho.pl begins here
# # Versão 1.00 10-07-30 # Este roteiro foi testado em # Aberto VOS 17.0.2ah rodando Perl v5.8.0 construído para i686-vos # Microsoft Windows XP Service Pack 3 em execução # ActiveState Perl v5.10.0 construído para MSWin32-x86-multi-thread # Red Hat Linux 4AS-5.5 rodando # Perl v5.8.5 construído para x86_64-linux-fios-multi # # use IO::Socket; use IO::Selecionar; use Getopt::Long; usar rigorosamente; meu ($resultado); meu ($localPort, $debug, $resultado, $message, $flags); meu ($ready, $socket); meu ($x, $c); $result = GetOptions ('port=s' => $localPort, debug' => $debug); if (($resultado != 1) ||| !(definido($localPort)) { imprimir "nnUsage:n"; imprimir "tperl udpecho.pl -port LOCAL-PORT-NUMBER [-debug]nn"; saída; } if (defined($debug)) { print “local port number is ” . $localPort . “n”; } my $sock = IO::Socket::INET->new( Proto => 'udp', LocalPort => $localPort ) ou morrer "Não pôde criar soquete $!n"; meu $read_set = novo IO::Select(); $read_set->add($sock); $message = ""; enquanto (1) { ($ready) = IO::Select->select($read_set, undef, undef, 300); foreach $socket (@$ready) { $socket->recv($message, 100, $flags); if (definido ($debug)) { print "Message from " . $socket->peerhost . " mensagem: ". $message . "“n”; } $socket->send("echoed by udpecho.pl: " . $message) ou die "Send error: $! +n”; } } # # udpecho.pl termina aqui  | 
