Existem várias perguntas aqui; a alegação de um "pacote malformado" pode ser devido ao descarregamento da soma de verificação e, se assim for, é um erro falso, pois reflete a captura de pacote não tendo uma visão completa - parte do trabalho foi feita no hardware da rede. WireShark deve ter documentação sobre isso.
Caso contrário, várias ferramentas (como socat
, nc
ou netcat
ou através de recursos extremamente semelhantes em shells como ksh93
ou bash
) podem obter bytes da entrada padrão e despejá-las em que torna-se um pacote UDP. Se isso é "adequado" depende do protocolo; poderíamos, teoricamente, construir e enviar um pacote DNS ou DHCP dessa maneira, embora com mais frequência as pessoas usem uma biblioteca ou um software dedicado que (esperançosamente) implementa corretamente o protocolo em questão, pois geralmente há muito mais envolvido do que configurar alguns bits o corpo de um pacote e enviá-lo através do fio, notavelmente manipulando respostas, repetindo após o tempo limite ou erro, campos de cabeçalho de pacote, etc. Os protocolos são geralmente muito bem documentados em RFC, ou consulte a série de livros "TCP / IP Illustrated" por Stevens para ainda mais documentação.
Ferramentas específicas como nmap
fazem coisas muito personalizadas com a construção de pacotes. Caso contrário, para a construção manual de pacotes, uma linguagem de programação é normalmente usada, embora a maioria dos softwares use bibliotecas existentes ou serviços do sistema para enviar DNS ou DHCP ou outros pacotes UDP, já que são menos trabalhosos e menos propensos a erros do que criar manualmente pacote do zero.