I. O que é SnifferFox.
II.Como funciona o SnifferFox
III.Estrutura de diretórios do SnifferFox.
IV. Descrição da função SnifferFox.
V. Recursos do SnifferFox
VI. Estender o SnifferFox
VII. Autor
VIII. Conclusão
I. O que é SnifferFox
SnifferFox é um sniffer (Sniffer) rodando na plataforma Windows. Usado para interceptar todos os pacotes de dados que passam pela placa de rede especificada do computador local e analisar e coletar estatísticas sobre esses pacotes.
O SnifferFox foi desenvolvido com base no Winpcap, que é um projeto de código aberto. Para obter os pacotes de dados originais, nós o escolhemos (porque o Socket funciona na camada IP e não pode obter pacotes ARP e RARP, então não o utilizamos). Portanto, instale o Winpcap antes de instalar o SnifferFox, caso contrário, você será avisado de que a placa de rede não pode ser encontrada.
Escolhemos o Borland C++Builder para desenvolver este Sniffer. Após quase 2 meses de trabalho árduo, escrevemos quase 6.000 linhas de código (o arquivo docs/codestat.txt contém estatísticas detalhadas) e o software foi finalmente desenvolvido. agora podemos lançar sua versão Alpha. No entanto, ainda pode haver muitos erros que não descobrimos, e estes poderão ser corrigidos em versões futuras.
SnifferFox é gratuito e um software verde que não requer instalação ou registro. Prometemos que nunca modificaremos o registro do seu computador e pode ser executado diretamente (é claro, para sua conveniência, criamos um pacote de instalação).
II. Princípio de funcionamento do SnifferFox O software primeiro configura a placa de rede para o modo promíscuo, depois obtém os dados recebidos pela placa de rede, analisa os pacotes de dados de acordo com o protocolo TCP/IP, filtra alguns pacotes de acordo com os requisitos do usuário, e em seguida, filtra os pacotes restantes. O pacote de dados é gravado no buffer (um bloco de memória de tamanho especificado, que pode ser definido manualmente de acordo com o tamanho da memória do computador do usuário) e é exibido na interface do usuário. o buffer estiver cheio, o sistema gravará automaticamente os dados no buffer. Vá para o armazenamento externo.
A imagem abaixo é uma ilustração simples.
SnifferFox é um sistema multithread, que pode ser dividido aproximadamente em 3 threads (apenas 2 foram realmente usados durante a implementação), thread de captura de pacotes (Sniffer Thread), thread de análise e filtragem de protocolo e interface de usuário. Trabalhando na camada de enlace de dados, ele pode obter o quadro de dados original, de modo que o SnifferFox pode suportar protocolos subjacentes como ARP e RARP.
Como a quantidade de dados nos pacotes interceptados pelo Sniffer é muito grande, não é realista armazenar todos esses pacotes na memória, por isso apresentamos aqui dois conceitos no sistema operacional, Cache e Buffer. Cache é uma lista vinculada que armazena temporariamente pacotes de dados. Para não sobrecarregar muito o computador do usuário, limitamos o comprimento máximo desta lista vinculada a 5.000. Quando o comprimento desta lista vinculada atingir o limite superior definido pelo usuário, o sistema gravará automaticamente os dados da lista vinculada no Buffer e, em seguida, limpará o Cache.
Buffer é um arquivo binário composto de pacotes de dados um por um. Poderíamos também chamar cada pacote de registro. Seu comprimento não é fixo, principalmente porque não há como determinar o tamanho do pacote de dados.
Consiste em 4 partes, ID (4 bytes), deslocamento de segmento (4 bytes), informações relacionadas ao quadro de dados (16 bytes), dados (o comprimento é variável, mas pode ser calculado de acordo com a fórmula de cálculo na figura). O deslocamento do segmento é o comprimento do registro, usado principalmente para determinar a posição final do registro e a posição inicial do próximo registro.
III. Estrutura de diretórios do SnifferFox Claro, o que devemos explicar aqui é que a estrutura de diretórios da versão de lançamento e da versão de desenvolvimento são diferentes. Existem mais diretórios na versão de desenvolvimento e são mais complexos, mas os diretórios na versão de lançamento são. tudo na versão de lançamento, então aqui apresentamos apenas o diretório da versão de desenvolvimento, que pode ser comparado com a versão de lançamento (consulte docs/dir.txt).
+Snifferfox
+Bin O arquivo binário compilado pelo compilador possui o arquivo de biblioteca de vínculo dinâmico
+Configuração do arquivo de configuração
+Imagens fotos
+Arquivo intermediário Obj gerado pelo compilador
+Diretório de documentos do Documentos
+Diretório do projeto do projeto
+Código central, principalmente estruturas de dados autodefinidas e sua implementação
+Código GUI para implementação de interface gráfica
+ Suporte multilíngue Lang
+Cache diretório de cache, usado para armazenar arquivos temporários
+Controles de terceiros usados no sistema 3Com
+Salvar diretório do usuário, usado para salvar arquivos do usuário
IV. Descrição da função SnifferFox.
1. Interceptação de pacotes de dados Os usuários podem especificar a placa de rede de um computador e, em seguida, usar o SnifferFox para interceptar todos os pacotes de dados que passam por esta placa de rede. Após interceptar esses pacotes, o sistema exibirá as informações resumidas do pacote em forma de lista e as informações específicas do pacote em forma de painel conforme necessário.
2. Filtragem de pacotes: Depois de obtermos os pacotes que atendem aos nossos requisitos, podemos filtrar os pacotes interceptados de acordo com os diferentes requisitos, podemos definir 2 filtros diferentes: filtro de protocolo e filtro de endereço IP. Esses dois filtros funcionam ao mesmo tempo. Somente os pacotes que atenderem a esses dois requisitos serão retidos e os demais pacotes que não atenderem aos requisitos serão descartados.
3. Estatísticas de pacotes Para facilitar a compreensão dos usuários sobre a distribuição dos pacotes interceptados, disponibilizamos a função de estatísticas de pacotes de dados, que conta a porcentagem e o número de pacotes de acordo com os diferentes níveis de protocolo. Exiba-o em forma de diagrama.
4. Análise de protocolo De acordo com o tipo de pacote, analisaremos e exibiremos os dados do pacote de acordo com diferentes situações. SnifferFox oferece suporte a um grande número de tipos de protocolo, desde a camada de enlace de dados até a camada de aplicativo.
Os protocolos abaixo da camada de aplicação foram analisados detalhadamente e todos os campos do pacote de dados foram retirados. Quanto à camada de aplicação, apenas 112 protocolos foram identificados por enquanto. No entanto, como existem muitos protocolos da camada de aplicação e cada protocolo é bastante complexo, não conduzimos uma análise aprofundada.
5. Classificação inteligente Para facilitar aos usuários a localização rápida de pacotes especificados, oferecemos uma função de classificação inteligente. Quando o usuário para de interceptar pacotes de dados, ele só precisa clicar em um dos campos da lista e o sistema classificará automaticamente. os dados na lista Para classificar em ordem crescente, clique novamente para mudar o método de classificação.
6. Detectar informações da placa de rede O sistema pode detectar automaticamente o número de placas de rede no sistema (incluindo placas de rede virtuais) e exibi-las dinamicamente na lista do menu. Ao mesmo tempo, pode detectar as informações relevantes da placa de rede.
7. Após o teste como um processo daemon para interceptação de pacotes, o SnifferFox pode ser executado no computador por vários dias sem travar. Portanto, podemos usá-lo como um programa especializado de interceptação de pacotes e executá-lo como um processo daemon (é claro, isso tem certeza). limitações. Quando há muitos pacotes interceptados, como vários gigabytes, é um pouco difícil, porque nesta versão não dividimos o arquivo Buffer em pedaços. Este recurso pode ser adicionado em versões futuras).
8. Exibição dinâmica de status Para não afetar outros trabalhos do usuário ao interceptar o pacote, podemos minimizar o SnifferFox, e então ele desaparecerá automaticamente da barra de tarefas e exibirá apenas um pequeno ícone na bandeja. Enquanto estiver funcionando, seu ícone piscará. dinamicamente e congelar quando parado. Além disso, também criamos uma pequena janela flutuante para exibir o status do sistema, que por padrão é colocada no topo da janela.
9. Salvar e carregar pacotes de dados. Os usuários podem salvar os pacotes interceptados em um arquivo especificado (extensão *.sni) e então carregá-los através do SnifferFox quando necessário, os pacotes de dados e os pacotes interceptados podem ser visualizados lá. não há diferença alguma, e você também pode decidir dinamicamente qual página visualizar (o sistema já possui uma função de paginação, e é paginação dinâmica. Nós mesmos podemos definir o número de registros em cada página).
10. O conteúdo das opções do usuário e do sistema armazenadas é salvo em config/config.ini, que é um arquivo in. Assim que as configurações do usuário (como interface, idioma, etc.) forem alteradas, as alterações serão registradas no arquivo. arquivo e será usado na próxima vez que o sistema for executado. Ele responderá automaticamente com base nessas configurações.
V. Recursos do SnifferFox
1. Simples e prático é o nosso objetivo Embora o design e a implementação do sistema sejam relativamente complexos, preferimos que os usuários vejam um sistema simples e prático.
2. Interface bonita
Não há nada a dizer sobre a interface do SnifferFox. O sistema contém 5 conjuntos de interfaces padrão (Winxp, MacOS, Protein, DeepBlue, BlueGrass). A interface do sistema pode ser substituída a tempo, sem reiniciar o sistema, e é uma substituição completa. (Claro que isso se deve aos nossos controles de terceiros).
3. Suporte multilíngue Levamos essa questão em consideração ao projetar o sistema, portanto, o próprio SnifferFox oferece suporte a vários idiomas. Só precisamos traduzir Lang/inglês para o idioma correspondente. . O sistema já oferece suporte para os idiomas chinês e inglês, que podem ser facilmente alternados.
4. Possui escalabilidade relativamente boa Consideramos totalmente sua escalabilidade em termos de linguagem, interface e protocolo. Portanto, é relativamente fácil desenvolver uma nova versão baseada nesta versão. Isso permite que você reutilize muito bem o código existente.
5. Conveniência de operação Esta é uma questão que consideramos muito. Estamos tentando ao máximo tornar o método de operação do sistema consistente com os hábitos das pessoas, para que os usuários o considerem conveniente e fácil de usar.
6. Suporta um número relativamente grande de protocolos Na Ethernet, o SnifferFox analisou quase todos os protocolos abaixo da camada de aplicação da família TCP/IP e pode reconhecer 112 protocolos da camada de aplicação.
VI. Estender o SnifferFox
Estender o SnifferFox não é uma tarefa fácil, a menos que você conheça muito bem sua estrutura. É claro que é difícil fazer isso apenas lendo este documento agora. Podemos estendê-lo em 3 aspectos:
1. Extensão do protocolo
SnifferFox usa um método orientado a objetos para analisar o design e a implementação, portanto, para estendê-lo, você precisa escrever a classe de análise de protocolo correspondente para resolver o problema e, em seguida, conectá-los no programa principal. Isto requer uma compreensão detalhada da estrutura atual do sistema.
2. A expansão da interface é obtida alterando o SUIPack de controle de terceiros (diretório 3com). Para obter detalhes, consulte os documentos relevantes do SUIPack.
3. Expansão de idioma Esta é a parte mais simples da função de expansão no SnifferFox. Basta traduzir arquivos Lang/inglês diretamente.
VII. Autor
Equipe FoxBackBone: zhengsh, gourf
VIII. Conclusão Embora o SnifferFox seja apenas um software pequeno, só podemos entender uma pequena parte dele através deste documento, então se você quiser entendê-lo em detalhes, apenas através deste documento definitivamente não é suficiente. A leitura adicional é apenas o código-fonte, porque não temos muito tempo para escrever detalhadamente o design do sistema.
Se você tiver alguma sugestão ou ideia sobre o SnifferFox após usá-lo, seja elogios, críticas ou outros aspectos, envie feedback para nosso e-mail: shaohui_1983#163.com, gouruifeng_529#sohu.com, obrigado pelo seu apoio.
Além disso, o componente Suipack e WinPcap são usados no programa, baixe-os neste site