2016-10-11 6 views
0

Я использую winpcap для захвата сетевого трафика, и я знаю, что этот трафик в основном состоит из сериализованных обменов протокольных буферов. Как я могу обнаружить эти сообщения в трафике, если я знаю все типы сообщений, которые система может передать?Чтение сообщений протобуфа через winpcap API

ответ

0

Это будет немного сложно, поскольку буферы протокола не описываются самостоятельно, и когда вы читаете необработанный поток байтов, нет простого способа определить, когда заканчивается одно сообщение, а другое начинается. Однако с небольшими усилиями вы сможете восстановить некоторые данные, если у вас есть хорошее представление о формате проводов.

Буфер протокола wire format по существу состоит из серии пар ключ-значение. Каждая клавиша представляет номер поля и тип провода (вместе называемый тегом), а значение - это фактические данные, связанные с этим номером поля. Если вы знаете сообщения, которые ищете, я начну с поиска тегов, которые вы ожидаете увидеть, в зависимости от типов и номеров полей в определениях сообщений. Вам нужно будет прочитать документацию по ссылке выше, чтобы выяснить, как вычислить тег и отформатировать его как varint, а затем выполнить поиск этих необработанных байтов переменной. После того, как вы нашли то, что кажется тегом, вам придется попытаться разобрать сообщение оттуда, чтобы получить обоснованное предположение о том, где заканчивается сообщение.