тут нет единственно верного решения. Условно протоколы можно разделить на 3 группы:
- json\soap\xml. Там уже все описано, даже мозг включать не надо;
- текстовые протоколы без описания структуры. Придется немного подумать, но весь текст у тебя перед глазами, выявить закономерности довольно просто. Записываешь, что настраивал на клиенте, смотришь как изменился запрос и ответ сервера. На крайняк декомпилируешь клиента и смотришь разбор протокола :)
- бинарные протоколы. Вот тут реально хардкор. Если не получиться декомпилировать код клиента, то можно зависнуть надолго. Нужно будет строить предположения о структуре данных, проводить огромное количество экспериментов. И если для простых протоколов это еще реально, то для сложных проще заплатить кому-то из разработчиков, чтобы слили структуру. Например, мы реверсили протокол автомобильных весов. Клиентской программы не было, за нее просили несколько сот тысяч рублей, больше чем стоимость весов. Но в течение пары дней подобрали структуру и успешно расшифровали протокол, интегрировали весы в систему. А вот с протоколом навигационного оборудования это не прокатило- слишком сложный протокол, очень много переменных. Оказалось дешевле закупать другие приборы с открытым протоколом.