Как правильно подойти к вопросу: какая сигнатура у протокола TURN?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: мне нужно узнать сигнатуру протокола, чтобы вычленять трафик voip, идущий к ретрансляторам.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

У TURN нет “сигнатуры” в смысле одной строки, по которой его всегда можно надёжно определить как HTTP header или magic bytes. TURN построен поверх STUN и использует STUN-сообщения с определёнными методами: Allocate, Refresh, CreatePermission, ChannelBind и т.п. Поэтому определять TURN нужно по STUN-формату пакетов и типам сообщений.

STUN/TURN-сообщение начинается с заголовка 20 байт. В нём есть message type, message length, magic cookie 0x2112A442 и transaction id. Magic cookie — хороший признак STUN-пакета, но не говорит, что это именно TURN, потому что STUN и TURN используют одну базовую структуру.

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0|     STUN Message Type     |         Message Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Magic Cookie                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                     Transaction ID (96 bits)                  |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0| STUN Message Type | Message Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Magic Cookie | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Transaction ID (96 bits) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Для TURN смотрите message methods: Allocate request, Refresh request, CreatePermission, ChannelBind. Если видите Allocate — это уже TURN-сценарий, а не простой STUN binding check.

Также учитывайте транспорт: TURN может работать по UDP, TCP и TLS. TURN over TLS может быть на 5349 и внешне похож на TLS-соединение, пока не расшифруете содержимое. По одному порту определять ненадёжно.

Итог: ищите не “строковую сигнатуру”, а STUN magic cookie и TURN-specific message types. Для DPI/логов корректнее говорить: STUN packet detected, затем классифицировать как TURN по Allocate/CreatePermission/ChannelBind.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно