Pergunta

Estou procurando escrever um pequeno programa que intercepte pacotes de rede (na máquina local) e modifique -os antes que eles saiam na rede. Eu preciso ser capaz de modificar os cabeçalhos também, não apenas os dados.

Eu já procurei várias possibilidades, mas não tenho certeza de qual é o melhor a seguir. Existem filtros de pacotes de código aberto por aí, mas a filtragem parece ser capaz de permitir ou rejeitar pacotes, não muito mais.

A outra solução seria escrever um motorista intermediário do NDIS, mas escrever drivers é um além de mim. Até o exemplo simples de passagem no vento são milhares de linhas. Também não estou ansioso para ter que reinstalar constantemente um driver e reiniciar para testar meu código.

Idealmente, gostaria que o programa fosse independente e não confiar na instalação de drivers/software de terceiros/o que for.

Então, se vocês pudessem me apontar na direção certa, jogue alguns links úteis do meu jeito, tanto faz, eu apreciaria.

Foi útil?

Solução

Depende de que tipo de pacotes você deseja filtrar/modificar.

Se você procura filtragem no nível do aplicativo e deseja colocar as mãos no HTTP ou pacotes similares, sua melhor aposta provavelmente seria um LSP. Nota, no entanto, seguir esse caminho, tem certas desvantagens. O primeiro MS parece estar tentando se livrar dessa tecnologia, e o IIRC parte dos requisitos do logotipo do Windows 7 é "sem LSP no seu produto", eles parecem estar promovendo o Plataforma de filtragem do Windows. Segundo, você ficaria muito surpreso com quanto problema está tendo em termos de compatibilidade com LSP de terceiros. Terceiro, a muito Dummy LSP ainda está em torno de 2 kloc :)

Se você procura uma filtragem de pacote de nível IP, precisará optar por um driver.

Plataforma de filtragem do Windows Fornece a você a funcionalidade necessária em ambos os casos. No entanto, está disponível apenas no Windows Vista e nos produtos posteriores, portanto, não há XP lá. Outra coisa a levar em consideração, o WFP só era capaz de permitir/rejeitar pacotes na terra do usuário e, se você precisar modificá-los, precisará ir ao modo de kernel. (Pelo menos o que era a situação na época em que apareceu, talvez eles já tenham melhorado algo agora).

Outras dicas

IMHO, se você deseja modificar os pacotes, precisará de algo para conversar com o hardware, um motorista de algum tipo. Se você não quiser usar o seu próprio, deve conseguir que um motorista de terceiros entre-operação.

Para filtrar, há bibliotecas como: winpcap ou libpcap.

Também dê uma olhada aqui: http://www.ntkernel.com/w&p.php?id=7

Outro link: http://bittwist.sourceforge.net/

Espero que isto ajude!

O WinPCap só pode filtrar pacotes com condições pré -compiladas. O que você precisa é escrever driver de rede no nível do LSP. Você não precisará reiniciar toda vez que reinstalá -lo, mas ele pode realmente modificar os pacotes antes que eles saiam para a rede. Mais informações aqui: http://blogs.msdn.com/wndp/archive/2006/02/09/529031.aspx ou aqui: http://www.microsoft.com/msj/0599/layredservice/layredservice.aspx

Não sou especialista, mas estou procurando fazer algo semelhante na minha LAN. Quero interceptar os pacotes de um único IP fixo e modificá -los antes de irem para o meu roteador e sair para a Internet. Também quero capturar e modificar os pacotes que retornam antes de permitir que eles até meu host. O método que eu tinha imaginado era algo assim ...

  1. A ARP envenenou o anfitrião e o roteador para que minha máquina de cheirar estava passando por todos os pacotes.
  2. Analise os pacotes que vou querer modificar no futuro e procurar características únicas para esses pacotes para que eu possa pegá -los.
  3. Escreva uma macro/script que procurou a referida característica em tempo real e depois a modificou em tempo real antes de enviá-la no caminho.

Eu sei que Cain & Abel for Windows é capaz (haha) para envenenamento por arp, mas não tenho certeza se ele pode fornecer despejo bruto de conteúdo de pacotes. Wireshark é capaz de despejar tudo, mas não tem certeza se pode envenenar, assim como conseguir o que estou procurando, se não, então posso conectar facilmente o host que quero interceptar para minha máquina de sniffer via Ethernet e depois compartilhar a Internet via O sniffer para que todos os pacotes passem pela máquina Sniffer de qualquer maneira.

Portanto, a etapa 1 pode ser realizada, não sei se os programas referidos têm a capacidade de filtrar com base em detalhes ainda, mas acho que eles têm.

Isso é o mais longe que estou com isso. Espero que isso ajude alguém e talvez alguém possa levar isso mais longe?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top