A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Oficina

WireShark - o devorador de pacotes

Seg

7

Mai

2007


21:20

(58 votos, média 4.69 de 5) 


Nível intermediário Você já tentou rastrear pacotes numa rede? Não!!?? Então está na hora de começar a se divertir olhando o caminhão de pacotes que transitam entre suas conexões (seu computador com a Internet, com o cliente de email, ftp, etc e tal) e a entender como as conexões são estabelecidas e mantidas.

Introdução

WireShark Se é que existe uma ferramenta que fez história na arte do "packet sniffing", esta é o Ethereal. Foi usada durante anos por especialistas em redes... e também por hackers. Acontece que os mesmos desenvolvedores do Ethereal resolveram dar um passo à frente, melhoraram o código e trocaram o nome do soft para WireShark - tubarão dos fios. Este analisador de protocolos de rede é uma excelente ferramenta para inspecionar redes, desenvolver protocolos e, de quebra, pode ser usada para fins educacionais. Foi escrita por profissionais do ramo e é um exemplo do poder do software de código aberto. Roda em Windows, Linux, UNIX e outras plataformas... precisa dizer mais?

Você encontra o WireShark para Windows na seção de downloads da Aldeia em Informática/Ferramentas de Rede ou no site do projeto indicado nas Fontes para o software no final deste texto.

Botando a mão na massa

Faça o download e instale o programa. Quando for perguntado se o WinPcap deve ser instalado, responda que sim (se ele não estiver instalado). Como o WireShark precisa desta biblioteca de captura de pacotes para funcionar, ela está incluída no instalador.

info Em algumas instalações que fiz, na hora de instalar o WinPcap recebi uma mensagem de erro sobre o NetMon que dizia "An error occurred while installing the Microsoft Network Monitor Driver (NetMon) (0x800F0203)...". Não me deixei impressionar e continuei a instalação e tudo funcionou bem.

info Numa determinada instalação ignorei o mesmo erro, só que, quando tentei rodar o Wireshark ele se recusava a funcionar indicando que o arquivo npptools.dll não podia ser encontrado. Neste caso específico descobri que a instalação do Windows XP havia "subtraído" esta biblioteca dinâmica. Procurei no Google onde poderia baixá-la e a coloquei no diretório /windows/system32/ e o problema foi resolvido. Espero que estas duas informações ajudem a quem está começando.

Dito isto, bote o Wireshark para rodar e vamos lá. A telinha deve mostrar algo como o mostrado na Fig.1:

WireShark
Fig.1 - Tela inicial do WireShark

A primeira coisa que precisamos indicar é a interface de rede que deve ser rastreada. Clique em [Capture/Interfaces] para ativar a janela de escolha mostrada na Fig.2:

Interface ativa
Fig.2 - Escolhendo a interface

Escolha uma interface e clique no botão [Start] - se a interface estiver ativa, o rastreamento começa imediatamente e a janela principal do WireShark passa a mostrar uma porção de pacotes.

Para ilustrar, chamei o Google no browser e obtive os pacotes mostrados na Fig.3:

Pacotes
Fig.3 - Resultado de uma captura de pacotes

Para interromper a captura de pacotes clique no quarto botão da barra de ferramentas ou no item de menu [Capture / Stop]. Veja que diversos tipos de pacotes foram capturados - esta versão do WireShark reconhece 836 tipos de pacotes (protocolos) diferentes.

O primeiro deles (pacote 1) foi gerado pela minha máquina para enviar em broadcast uma mensagem ARP (Address Resolution Protocol - Protocolo de Resolução de Endereço). É que o browser está pedindo um domínio (no caso, google.com) que está fora da rede local, ou seja, minha máquina precisa fazer uma conexão com um servidor de páginas localizado numa outra rede e precisa de "licença" para sair. Esta licença só pode ser dada pelo roteador da minha rede, cujo endereço IP é 198.168.1.2. Para poder falar com esta máquina, a placa Ethernet do meu computador precisa do número (MAC) da placa Ethernet do roteador. Como ela não tem esta informação, ela solta um "berro" em broadcast. Um broadcast funciona mais ou menos assim: minha máquina dá um grito do tipo "Quem tem o 192.168.1.2? Responda para 192.168.1.1" que pode ser ouvido em toda a rede. Apesar de todas ouvirem, apenas a máquina com o endereço perguntado vai responder - e vai responder diretamente para a minha máquina.

0.000194 segundos depois, a resposta chegou no pacote número 2. Se a pergunta saiu em forma de ARP, a resposta também vem no mesmo protocolo informando que a máquina solicitada tem o endereço MAC 00:40:26:a7:67:49. Agora as duas placas Ethernet têm como se comunicar e nós podemos dar uma voltinha lá fora.

Acontece que o browser recebeu o nome de um domínio (google.com) e não tem a mínima idéia do endereço IP deste domínio, ou seja, minha máquina precisa de um serviço de tradução que transforme nomes de domínio em endereços IP. Existem máquinas especializadas em fazer estas traduções - são os chamados servidores de nomes ou DNS. Meu sistema está configurado para procurar o servidor de nomes no endereço IP 200.195.157.66, por isto envia um pacote DNS (pacote 3) solicitando a tradução desejada. O servidor de nomes aciona um outro servidor de nomes, o pt-br.start2.mozilla.com, que responde logo em seguida.

O pacote 4 traz a tradução solicitada: google.com tem o endereço IP 72.14.209.99. Finalmente minha máquina pode fazer contato com uma das máquinas servidoras de páginas da gigante Google. É o que ela faz ao enviar o pacote 5.

Informações adicionais