Scapy: erro de retransmissão TCP

0

Estou usando o Scapy para enviar pacotes SCCP ou Skinny para o meu Cisco Desk Phone. No entanto, continuo recebendo esses erros de retransmissão TCP, e acredito que isso está fazendo com que o Cisco Phone não responda. Eu tenho um programa que pode comandar com sucesso o telefone para discar. Por exemplo, o programa em "10.10.50.12" envia quatro pacotes e recebe dois ACKs do telefone ("10.30.37.78"). Veja abaixo:

Noentanto,quandoeuusooPythoneenviooscomandoscomoScapy:

Os quatro pacotes são enviados e até mesmo reconhecidos como mensagens particulares pelo Wireshark, no entanto, recebo o erro TCP Retransmission e nenhum ACK do telefone.

Estranhamente, não há nada de especial sobre "SetLampMessage" para que ele não receba o erro. É simplesmente porque foi o primeiro pacote enviado. Se eu fosse organizar a ordem dos pacotes de forma diferente, o que for enviado primeiro não terá erro.

Eu tentei comparar as saídas hexadecimais, aqui estão as comparações hexadecimais da SetLampMessage:

Programa:

MeuPython:

A maioria das discrepâncias entre as saídas hexadecimais tem a ver com identificações e checksums. Minhas identificações sempre são iguais a 0x0001 de alguma forma, mas eu não acredito que esse seja o problema, porque eu fui capaz de enviar pacotes TCP simples sem nenhum erro, mesmo que todos eles tenham o mesmo ID.

Eu pesquisei erros de "Retransmissão de TCP" no Google e parece que a maioria deles não deve receber um ACK enviado de volta. Acho que essa também não é a causa porque defini vários tempos de pausa entre cada um deles. enviei pacotes para verificar se meus pacotes estão sendo enviados muito rapidamente.

Um indivíduo esclarecido tem uma ideia do que estou fazendo para causar esses erros?

    
por Nick Williams 06.05.2013 / 17:00

1 resposta

0

Depois de algum trabalho, descobri que meu problema está nos números de Sequência e Confirmação nos cabeçalhos TCP dos pacotes que eu envio. Eu estava enviando um "0x0001" para ambos os valores.

Eu achei especialmente esse artigo muito útil para entender como esses valores funcionam: link

Para resolver o meu problema, observei os números Seq e Ack entre o telefone da Cisco Desk e o Call Manager. Eu poderia então prever, calcular os próximos valores de Seq e Ack e depois enviar meus pacotes apropriadamente.

Vocêpodevernaimagemacimaqueminhasmensagens"Skinny", começando com "SetLampMessage", não recebem mais o erro de retransmissão TCP.

No entanto, meu telefone da Cisco é persistente em não responder e continua a me odiar, mas isso não vem ao caso.

    
por 07.05.2013 / 17:20