在SDP报文中发送用户定义的字符串



是否有一种方法可以在INVITE消息的SDP部分内从调用方向被调用方发送一个短的用户定义字符串(以类似隐写术的方式)?我试图设置字符串的长度约为15,在k=p=e=u=字段。但是,Asterisk服务器不接受邀请消息。当然,我在IP-Header和UDP-Header中设置了新的长度,并且我计算了IP-Header的新的Internet校验和。我还考虑了CRLF模式和字段的顺序。

目标是,当被调用方向调用方响应200 OK消息时,将SDP数据中的数据从调用方传输到被调用方,反之亦然。

提前感谢!

不被星号接受的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

实际上一切看起来都很好。我看不出有什么反应。我用NFQUEUE拦截iptables上的数据包。然后只需要几个strstr、memcpy等来修改和构建新的数据包。我知道有一些SDP堆栈/api,但在我的情况下,快速和肮脏的解决方案是足够的。

尝试i=字段。如RFC 4566所述:

"i="字段旨在提供会话或媒体流目的的自由格式的人类可读描述。它不适合通过自动机进行解析。

所以Asterisk服务器不应该验证这个字段,允许你在那里放你想要的文本

相关内容

  • 没有找到相关文章

最新更新