You are on page 1of 5

Universidade Federal do Piauí

Centro de Ciências da Natureza


Departamento de Informática e Estatística
Redes de Computadores I
André Silva Rodrigues

Artigo Estudo de Caso:


Biblioteca WinPcap

Teresina – PI
2006
BIBLIOTECA WINPCAP

André Silva Rodrigues1

RESUMO: WinPcap é uma ferramenta para acesso a camada de rede em desenvolvimentos


Windows, permitindo a aplicação capturar e transmitir pacotes ultrapassando a pilha do protocolo, e
tem funções úteis, incluindo filtragem de pacotes no nível do kernel, uma engine para estatística da
rede e suporte para captura remota de pacotes.

PALAVRAS-CHAVE: Pacotes - Winpcap - API

1. SUMÁRIO
Resumo 2
Palavras-Chave 2
1. Sumário 2
2. Lista de Ilustrações 2
3. Lista de Siglas 3
4. Corpo 3
4.1. Arquitetura 4
4.2. Funcionalidades 4
4.2.1. Captura 4
4.2.2. Monitoração 4
4.2.3. Despejo em Disco 4
4.2.4. Injeção de Pacotes 5
4.2.5. Exemplos de Aplicações 5
5. Referências Bibliográficas 5

2. LISTA DE ILUSTRAÇÕES

Figura 1 – Principais componentes do Winpcap

1
Estudante de Bacharelado em Ciências da Computação – UFPI, E-mail: masterasr@yahoo.com.br

2
Figura 2: Driver NPF

Figura 3: Despejo no disco

3. LISTA DE SIGLAS

- NPF: Netgroup Packet Filter

4. CORPO
WinPcap consiste de um driver, que estende o sistema operacional para prover acesso à
rede em baixo nível, e uma biblioteca que pode facilmente ser usada para ter acesso às camadas
mais baixas da rede.

3
4.1- Arquitetura
WinPcap inclui filtro em nível de kernel, uma biblioteca de baixo nível (packet.dll), e uma
biblioteca de alto nível e independente de sistema (wpcap.dll). A figura 1 mostra os principais
componentes da WinPcap.
Primeiro o NPF provê acesso aos pacotes em modo raw, sendo que está integrado ao
sistema operacional. Depois temos as bibliotecas packet.dll e wpcap.dll que provê uma interface
para aplicações em nível de usuário.

4.2- Funcionalidades
O NPF permite realizar diferentes operações: captura, monitoração, despejo em disco e
injeção de pacotes.

4.2.1- Captura
A mais importante função é a captura de pacotes, durante captura, o driver suga os pacotes
usando a interface de redes os entrega intactos para a aplicação em nível de usuário.
O filtro de pacotes decide se um pacote recebido deve ser aceito e copiado para a
aplicação. O filtro de pacotes é uma função que retorna um booleano, se o valor da função for true,
o driver copia o pacote para a aplicação, se for false o rejeita.
Um buffer armazena os pacotes e evita perdas, sendo armazenado com um cabeçalho que
mantém informações de chegada e tamanho do pacote. Um grupo de pacotes também pode ser
copiado com uma simples operação, evitando leituras desnecessárias.

4.2.2- Monitoração
WinPcap oferece um modulo de monitoração programável em nível de kernel, capaz de
calcular estatísticas simples no trafico de rede. A idéia atrás deste modulo é mostrada na figura 2. As
estatísticas podem ser obtidas sem a necessidade de copia de pacotes para a aplicação, que recebe e
mostra os resultados obtidos da engine de monitoramento, evitando sobrecarga na captura de
pacotes e desperdício de tempo de CPU e memória.
A engine de monitoramento é feita de um classificador seguido de um contador. Os
pacotes são classificados pelo filtro e então vão para o contador que mantém algumas variáveis
como o numero de pacotes e a quantidade de bytes aceitos pelo filtro, algumas dessas variáveis são
repassadas para a aplicação em nível de usuário em intervalos regulares cujo período é configurado
pelo usuário. Não se faz uso de nenhum buffer nem em nível de usuário nem em nível de kernel.

4.2.3- Despejo em Disco


A capacidade de despejo em disco pode ser usada para salvar diretamente em disco os
dados da rede diretamente do modo kernel.
Em sistemas tradicionais os pacotes seguem o caminha de setas pretas na figura 3: os
pacotes são copiados varias vezes para a aplicação e depois são salvos em disco, além de utilizar
quatro buffers. Quando os dados são salvos diretamente do modo kernel se faz uso somente de dois
buffers e diminui drasticamente o numero de chamadas ao sistema, melhorando a performance.
Também se pode utilizar o filtro para selecionar que pacotes devem ser salvos em disco, evitando o
despejo desnecessário de pacotes.

4
4.2.4- Injeção de Pacotes
O NPF permite a inserção de pacotes raw na rede. Para enviar dados a aplicação usa uma
chamada ao sistema (WriteFile()) no driver NPF. Os dados são enviados na rede como estão, sem
encapsulamento em nenhum protocolo, neste caso a aplicação deve construir os vários cabeçalhos
de cada pacote.
Em situações normais a taxa de envio de pacotes na rede não é muito alta devido a
necessidade de chamadas de sistema para cada pacote, por esta razão a possibilidade de enviar um
simples pacote mais que uma vez com uma simples chamada de sistema foi adicionada. Esta
funcionalidade pode ser usada para gerar um grande trafico para efeitos de teste de rede.

4.2.5- Exemplos de Aplicações

- Deep Network Analyzer (DNA)


DNA é um analizador de rede e arquitetura aberto, flexível e extensivel, para obter e
analizar pacotes de rede, sessões de rede e protocolos de aplicações. Foi desenvolvido para ser
usado em aplicações de segurança de rede, detecção de intrusão, controle de rede, analizar rede e
protocolo, monitoramento de rede.

- assniffer
Assniffer pode monitorar uma rede e para cada transferência http que ele perceber, salva
uma copia dos dados transferidos.

- HiDownload
HiDownload é um gerenciador de downloads multi-thread que permite baixar arquivos
individuais , ou lista de arquivos, via web e FTP.

- Libnet
Libnet é uma API de alto nível que permite aplicações gerar e inserir pacotes de rede.
Provê uma interface simplificada e portável para formatos de pacotes rede de baixo nível, manuseio
e inserção.

5. REFERÊNCIAS BIBLIOGRÁFICAS

WinPcap: The Windows Packet Capture. Obtida via internet:


http://www.winpcap.org/default.htm. Acesso em 30 de Abril de 2006.

Deep Network Analyzer (DNA). Obtida via internet: http://dnasystem.sourceforge.net/. Acesso em


30 de Abril de 2006.

assniffer. Obtida via internet: http://www.cockos.com/assniffer/. Acesso em 30 de Abril de 2006.

Hidownload. Obtida via internet: http://www.hidownload.com/. Acesso em 30 de Abril de 2006.

Libnet. Obtida via internet: http://www.packetfactory.net/Projects/Libnet/. Acesso em 30 de Abril


de 2006.

You might also like