Desabilitar a validação da soma de verificação do UDP no recebimento

0

Eu tenho uma fonte que está enviando pacotes udp com cabeçalhos de soma de verificação inválidos e não tenho controle sobre a origem. Eu posso ver no wireshark que esses pacotes estão fazendo isso para o host de destino, mas o aplicativo não está pegando-os por causa da soma de verificação do udp inválida. Eu gostaria de ter um aplicativo no host (windows server 2012) receber esses pacotes e reenviá-los com uma soma de verificação válida para o aplicativo seleciona os pacotes.

Eu tentei usar o objeto .NET Socket com SocketType RAW e ProtocolType IP, mas ele também ignora os pacotes.

    
por Micah Hunsberger 10.09.2018 / 17:57

1 resposta

0

Sua abordagem de usar soquetes RAW não está muito longe do que você precisa.

O mais provável é que seu sistema tenha a soma de verificação UDP transferida para a placa de rede, o que significa que a NIC está fazendo a validação da soma de verificação antes que o sistema operacional veja o pacote . Isso é ótimo por motivos de desempenho, mas significa que, no seu caso, você literalmente não tem opção de acessar esses pacotes.

Infelizmente, descobrir se isso está ativado é um pouco diferente em todos os sistemas operacionais. No Linux, você pode usar ethtool para verificar a forma de linha de comando (não há um método de GUI que eu saiba). No Windows, ele está oculto na guia avançada das propriedades do driver da NIC (você pode nem conseguir vê-lo ou controlá-lo, dependendo do driver).

    
por 10.09.2018 / 21:48