Отправить пользовательскую строку в пакете SDP - PullRequest
1 голос
/ 08 октября 2011

есть ли способ отправить короткую заданную пользователем строку из вызывающей стороны в вызывающую часть в SDP-части сообщения INVITE (таким образом, как стеганография)? Я попытался установить строку длиной приблизительно 15 в k = , p = , e = , u = поле. Однако сервер Asterisk не принимает сообщение приглашения. Конечно, я установил новую длину в IP-заголовке и UDP-заголовке, кроме того, я рассчитал новую контрольную сумму IP-заголовка в Интернете. Также я рассмотрел схему CRLF и порядок полей.

Цель состоит в том, чтобы передавать данные в пределах данных SDP от вызывающего абонента к вызываемому абоненту и наоборот, когда вызывающий абонент отвечает сообщению вызывающего абонента 200 OK.

Заранее спасибо!

Сообщение с i = 111.111.111.111, которое не принято звездочкой:

INVITE sip:1000@192.168.0.14 SIP/2.0
Via: SIP/2.0/UDP 192.168.11.2:6060;rport;branch=z9hG4bKGvBkM0qF4
Max-Forwards: 70
To: <sip:1000@192.168.0.14>
From: <sip:2000@192.168.0.14>;tag=SOXFP4ir
Call-ID: BEkXWRwn-1318101970419@x61.local
CSeq: 39 INVITE
Content-Length: 231
Content-Type: application/sdp
Contact: <sip:2000@192.168.11.2:6060;transport=UDP>

v=0
o=user1 1396633799 2096570444 IN IP4 192.168.11.2
s=-
i=111.111.111.111
c=IN IP4 192.168.11.2
t=0 0
m=audio 8000 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv

То же сообщение, но без i = 111.111.111.111. Этот пакет принят, и обработка вызова успешно завершается (с TRYING, RING 200OK)

INVITE sip:1000@192.168.0.14 SIP/2.0
Via: SIP/2.0/UDP 192.168.11.2:6060;rport;branch=z9hG4bKESGSZD1V6
Max-Forwards: 70
To: <sip:1000@192.168.0.14>
From: <sip:2000@192.168.0.14>;tag=YPPrCWLp
Call-ID: 10MpKHYD-1318102031971@x61.local
CSeq: 41 INVITE
Content-Length: 211
Content-Type: application/sdp
Contact: <sip:2000@192.168.11.2:6060;transport=UDP>

v=0
o=user1 1682420165 643979666 IN IP4 192.168.11.2
s=-
c=IN IP4 192.168.11.2
t=0 0
m=audio 8000 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv

На самом деле все выглядит хорошо. И я не вижу ответа. Я перехватываю пакеты через iptables с помощью NFQUEUE. Затем просто несколько strstr, memcpy и т. Д., Чтобы изменить и построить новые пакеты. Я знаю, что есть несколько стеков / API SDP, но в моем случае достаточно быстрого и грязного решения.

1 Ответ

0 голосов
/ 08 октября 2011

Попробуйте поле i =. Как указано в RFC 4566:

Поле «i =» предназначено для представления понятного человеку описания сеанса или цели медиапотока в свободной форме. Не подходит для разбора автоматами.

Таким образом, сервер Asterisk не должен проверять это поле, позволяя помещать туда нужный текст.

...