Trabalhando em torno de conflitos IP com interferência ARP ou pilha TCP / IP personalizada

0

Enigma um pouco interessante, eu tenho uma rede de 15-20 dispositivos embutidos que são efetivamente codificados com o mesmo endereço IP estático, mas todos eles têm IDs MAC diferentes. Eu preciso abordá-los individualmente para configurá-los remotamente, e conectá-los / desconectá-los não é uma solução sustentável.

Embora eu tenha acesso root aos dispositivos, não posso configurar seus IPs para endereços exclusivos de antemão, mas posso reconfigurá-lo para a sessão e redefini-lo no ciclo de energia, mas isso exige poder resolvê-los sobre TCP / IP começar com.

Idealmente, o que eu gostaria de fazer é enumerar todos os MACs na rede (supondo que garantido apenas este dispositivo embutido) e modificar minha tabela ARP ou acessar e modificar cabeçalhos de pacotes Ethernet em um repetidor (digamos, um framboesa executando uma modificação Pilha IP). Idealmente, esse hack só precisaria ser ativado por tempo suficiente para se conectar ao dispositivo e definir seu ip para um endereço exclusivo. Eu acho que a essência do que eu quero fazer é substituir o serviço ARP por um protocolo de resolução personalizado.

Eu sou versado em kernel, baixo nível e desenvolvimento de drivers, mas com o ethernet acima do Nível 2 no OSI estou um pouco perdido. Que implicações esse tipo de interferência teria em protocolos de nível superior? Posso simplesmente substituir o daemon do ARP no linux para obter essa funcionalidade?

    
por crasic 07.01.2016 / 05:46

1 resposta

0

Supondo que os dispositivos estejam na mesma sub-rede que o dispositivo que você deseja fazer, deve ser possível "direcionar" os pacotes IP, mas gravar seus próprios pacotes ethernet com os endereços MAC e IP corretos. As respostas serão destinadas à sua máquina, mas você provavelmente terá que buscá-las e processá-las você mesmo, pois o sistema do sistema operacional talvez não consiga classificá-las corretamente.

Para fazer isso, você precisará:

  • uma compreensão aproximada do que os pacotes ethernet, IP e TCP de dados consistem (o google deve ajudar nisso; isso fornece uma visão geral da estrutura geral do pacote)
  • uma maneira de montá-los e colocá-los na linha ( isso descreve o básico)
  • uma maneira de receber pacotes de resposta ( isso deve ajudar nisso)
  • e uma maneira de reunir os pacotes recebidos em algo útil (já que você está recebendo pacotes ethernet não processados, o fluxo TCP não será montado ou pedido para você, você precisará armazenar em buffer e montar os dados também como lidar com as outras partes do protocolo TCP, uma vez que você tenha os itens acima funcionando, você deve saber o suficiente sobre fluxos TCP para fazer isso)

O Wireshark é uma ferramenta para farejar redes e tem muitos detalhes que podem ajudá-lo a entender o que acontece na rede, o que é nos pacotes para que você possa combiná-lo com o que aprender e ajudá-lo a depurar seu software.

    
por 07.01.2016 / 06:40

Tags