No hay forma de automatizar fácilmente esto de ninguna manera útil, porque los protocolos están diseñados por humanos. Como tales, realmente no siguen ningún patrón o regla establecido. Vas a tener que poner el trabajo mental en ti mismo para diseccionarlos.
Sin embargo, hay algunos trucos:
- Use Wireshark para separar las conversaciones individuales e identificar los patrones de comunicación de alto nivel.
- Use un editor hex "inteligente" para analizar los paquetes. Hex Workshop es una buena opción (aunque no es gratis) ya que le permite definir estructuras de estilo C en los datos.
- Use una herramienta de diferencias para identificar cambios entre paquetes.
- Use IDA (u otra herramienta de análisis estático) para identificar dónde se usan las API de la red (por ejemplo, Winsock) para enviar / recibir datos, y averiguar qué están haciendo.
- Use ImmunityDebugger, OllyDbg, WinDbg u otro depurador para rastrear la ejecución en un entorno real. Esto es especialmente útil cuando se envían paquetes de prueba a una aplicación cliente o servidor, porque puede ver dónde pasan y fallan las pruebas de validación y por qué. El uso de valores distintivos en estos paquetes le permite ver qué tipos de datos fluyen a diferentes partes del código, lo que le permite identificar su función.
Al final, todavía tienes que ser un ingeniero de ingeniería decente para trabajar con esto. Si nunca ha intentado hacer algo como esto, le sugiero que lo intente con un simple protocolo documentado abiertamente y trabaje al revés. Intente averiguar cómo funciona, luego compare sus observaciones con la documentación.