Обратный инжиниринг коммуникационных протоколов

Просто любопытно - какие есть автоматические или даже полуавтоматические методы для обратного проектирования протоколов связи?

Меня особенно интересует случай, когда кто-то перехватывает трафик и пытается понять протокол.

Я смог найти количество статей на Scholar, но, по моему опыту, в большинстве случаев это полностью ручной процесс.

Если у кого-то есть опыт работы в этой области и он хочет поделиться, мы будем очень признательны.


person JohnIdol    schedule 25.11.2009    source источник
comment
Вы пытаетесь перепроектировать код обратно в конечный автомат или угадаете, что это за протокол, наблюдая только за трафиком сообщений?   -  person Ira Baxter    schedule 25.11.2009
comment
Последнее - я спрашиваю, как получить доступ к спецификации протокола, просто наблюдая за трафиком.   -  person JohnIdol    schedule 25.11.2009
comment
Без какой-либо другой информации? Это очень сложно. Сначала вы предполагаете базовую модель протокола, скажем, чистых конечных автоматов; если вы ошиблись (скажем, у него есть скрытый счетчик или таймер), то вы не сможете получить правильный ответ, что бы вы ни делали. Если вы поняли это правильно, вам все равно нужно определить структуру поля сообщения, какие элементы запускают переходы протокола и фактические условия перехода. Люди пишут кандидатские диссертации, пытаясь вывести FSA из моделей вариантов использования. Если вы не желаете привносить больше знаний, вам будет ужасно тяжело.   -  person Ira Baxter    schedule 25.11.2009
comment
спасибо за ваше мнение по этому поводу - я пытаюсь понять масштаб проблемы. Я был бы счастлив получить несколько указателей даже на основе ряда предположений - типичных сценариев реального мира и так далее.   -  person JohnIdol    schedule 25.11.2009


Ответы (1)


  • Получите некоторую степень контроля над каналом связи и проанализируйте данные. Затем выполните ряд операций связанного приложения, чтобы понять, как протокол связан, чтобы вы могли собрать общие наблюдения.

  • Гугл по протоколу. Может быть, это опубликовано. Может быть, кто-то уже в этом разобрался, или кто-то неосторожно слил подробности об этом.

  • Напишите тестовую программу, которая заменяет один конец протокола: попробуйте получить ответы с другой стороны методом проб и ошибок.

  • Часто протокол является потомком другого протокола - или, по крайней мере, во многих отношениях с ним связан. Увидев специфику и ознакомившись со многими протоколами, можно часто делать обоснованные предположения о его функциях и возможностях.

person wallyk    schedule 25.11.2009