Delimitador de pacotes no arquivo de origem netcat

1

Existe um delimitador ou alguma maneira de informar ao netcat quantos bytes enviar por pacote a partir de um arquivo? Invocar o netcat várias vezes em um script não é aceitável, já que preciso enviá-los o mais rápido possível.

Eu capturei pacotes UDP com dados binários em um arquivo usando o mnc (multicast netcat) e tente reproduzi-los da seguinte forma:

# inicia o programa enviando pacotes multicast para 230.250.5.1 12340 >

# start mnc para capturar pacotes:

 $mnc -l -i eth1 -p 12340 230.250.5.1 >capturefile

   # playback de pacotes usando o netcat, enviando para 230.250.5.1 12345

 $netcat -c -w 1 -u -s 10.20.30.40 230.250.5.1 12345 <capturefile

capturefile parece ter os pacotes que eu quero enviar.

Quando reproduzo com o netcat, os pacotes são concatenados. O tamanho do pacote UDP é 208 durante a captura de pacotes e o wireshark mostra 250 como tamanho do pacote, suponho que inclua bytes de rede. No replay, o wireshark mostra o tamanho do pacote de 1016.

    
por CarlH 17.04.2018 / 20:03

1 resposta

2

Isso pode não ser possível para você, mas se você usar socat em vez de netcat , poderá definir um tamanho de bloco fixo facilmente com -b :

socat -b 208 - udp4:230.250.5.1:12345 <capturefile

Se você tiver dados de comprimento variável, poderá usar os formatos tcpdump e tcpreplay e pcap .

    
por 18.04.2018 / 16:14