Hay varias preguntas aquí; el reclamo de un "paquete con formato incorrecto" puede deberse a la descarga de la suma de comprobación y, de ser así, es un error falso, ya que refleja que la captura de paquetes no tiene una vista completa; parte del trabajo se realizó en el hardware de la red. WireShark debería tener documentación sobre esto.
De lo contrario, varias herramientas (como socat
, nc
o netcat
, o mediante características extremadamente similares en shells como ksh93
o bash
) pueden tomar bytes de la entrada estándar y volcarlos en lo que se convierte en un paquete UDP. Si esto es "apropiado" depende del protocolo; en teoría, se podría construir y enviar un paquete DNS o DHCP de esta manera, aunque con mayor frecuencia la gente usa una biblioteca o software dedicado que (con suerte) implementa correctamente el protocolo en cuestión, ya que generalmente hay mucho más involucrado que establecer algunos bits en el cuerpo de un paquete y enviarlo a través del cable, en particular manejando respuestas, reintentando después de tiempo de espera o error, campos de encabezado de paquete, etc. Los protocolos generalmente están muy bien documentados en RFC, o vea la serie de libros "TCP / IP Illustrated" por Stevens para aún más documentación.
Herramientas específicas como nmap
hacer cosas muy personalizadas con la construcción de paquetes. De lo contrario, para la construcción manual de paquetes, generalmente se usa un lenguaje de programación, aunque nuevamente la mayoría del software usará las bibliotecas existentes o los servicios del sistema para enviar DNS o DHCP u otros paquetes UDP, ya que son mucho menos trabajo y mucho menos propensos a errores que la creación manual de un raw paquete desde cero.