RTSP 协议分析? 研究TCP/IP的朋友请进!(加到1000分) (100分)

  • 主题发起人 主题发起人 OopsWare
  • 开始时间 开始时间
O

OopsWare

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在研究 RTSP 协议,参考了 RFC2326 ,但是在与 RealServer 的对话中
有一段可能是与用户验证有关的对话,不明其意。 如下:
---- PUT ----
OPTIONS rtsp://oops:554 RTSP/1.0
CSeq: 0
User-Agent: MyApp

---- GET ----
RTSP/1.0 200 OK
CSeq: 0
Date: Fri, 11 Jan 2002 06:06:01 GMT
Server: RealServer Version 8.0.0.149 (win32)
Public: OPTIONS, DESCRIBE, ANNOUNCE, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN
[red]RealChallenge1: 59ccee52cb5030feaa0d23ab4ddb8cb2[/red]
StatsMask: 3

在以后的对话中多次见到此项 ( RealChallenge? ),不知道是怎样生成的。
如果不响应此对话则有如下错误
---- PUT ----
SETUP rtsp://oops:554/real8audio.rm/streamid=0 RTSP/1.0
CSeq: 2
Transport: x-pn-tng/tcp;mode=play,rtp/avp/tcp;unicast;mode=play
If-Match: 20654-1

---- GET ----
RTSP/1.0 461 Unsupported Transport
CSeq: 3
Date: Sat, 12 Jan 2002 03:11:19 GMT

应该不是Transport参数的问题,关键在要响应
RealChallenge2: 2be4e5d41cb9c9ed44c0144429d9c20901d0a8e3, sd=2e1c412c
之类的东西。查了好多资料,都没有关于此处的介绍(RFC中没有)。
后来在 Real G2 SDK 中找到了一点东西,是VC++的,COM接口,不知道怎样导出...

 
不懂。帮你up。
>后来在 Real G2 SDK 中找到了一点东西,是VC++的,COM接口,不知道怎样导出...
如果他有com接口,delphi也可以用,可能有没个方法作这个事,信口胡说,莫怪莫怪。
 
在 RealServer 的文档中有这样一段话:

Access Control, Authentication, and Live Unicasting
Before any client is allowed to receive any broadcast, RealServer checks
the client's IP address to see whether the client is allowed to receive a
broadcast. If the address is acceptable, RealServer looks at the location of
the file to see if it is in a secure location. If so, RealServer challenges
the user (or Player) for identification. Once the client passes the tests,
RealServer connects the client to the live broadcast.

从对话中看
S->C RealChallenge1: 19459da415c6b4f58e3fd96c4f894e18
C->S RealChallenge2: 097a9ed6dea8d4c1b9652978fc2f12f601d0a8e3, sd=09ddb2f1
S->C RealChallenge3: b2ee51bc2dff47a7b33561ace64c82c44f213d09,sdr=b524b6e8
似乎使用了MD5之类的加密方式交互了一些用户名和密码(IP地址、端口)之类的信息。

[xx(][xx(] 到底谁知道啊??? 给点提示也可以!!![xx(][xx(]

 
今天下午测试 rtsp 传输 mp3 文件通过了,并且不认证此对话。
但 rm 文件就是不行 [xx(][xx(]

另外,对话中还有好多 Base64 的加密算法。
如:
a=Copyright:buffer;"qTIwMDAA" -> Neo
a=Author:buffer;"TmVvAA==" -> (C)2000
 
OopsWare:
研究进展的如何,能否联系
netmoles@email.com.cn
qq:30577799
 
to netmoles:
我现在多用 MSN Messenger ID: qiangdu@hotmail.com
需要找我最好使用 MSN Messenger。

RFC中有这样一段,看来 encrypte 是关键。
Authentication:
Servers SHOULD implement both basic and digest [ 8 ]
authentication. In environments requiring tighter security for
the control messages, the RTSP control stream may be
encrypted.
不知道 StreamBox 是怎样作的。 好像超级解霸也做到了。
basic 应该就是 Base64 了。
digest [ 8 ] 是怎么回事?
 
不懂,帮你up
 
REAL SDK用过看过否?
 
REAL SDK 中的服务端一个接口中有类似用法,好像可以....
 
相关参考:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=915361
 
新发现,感谢网友 Luky 提供。
S->C RealChallenge1: 19459da415c6b4f58e3fd96c4f894e18
C->S RealChallenge2: 097a9ed6dea8d4c1b9652978fc2f12f601d0a8e3, sd=09ddb2f1
^---^---^---^---^---^---^---^----------------^^^^^^^^
S->C RealChallenge3: b2ee51bc2dff47a7b33561ace64c82c44f213d09,sdr=b524b6e8
^---^---^---^---^---^---^---^----------------^^^^^^^^
另外,对话中的 Session 为 20653-1。不知道有没关系。
 
似乎是一种验证,应该在REAL SDK中有相应的函数吧
>COM接口,不知道怎样导出...
应该可以用Delphi中的Import ActiveX Control来导入
 
Delphi并不能正确的导出所有可用接口。
例如 MSN Messanger 的 IMessengerExtension 导出时就出错....
 
好像使用的是一次性加密口令的验证系统.
 
第一眼看到这串字符就像个数字签名,再看OopsWare给的那段英文
感觉是这样的,realServer以广播方式发送数据流,但接收数据流
的客户端必须被授权并且是安全的,这段字符验证就是Server端发
出的验证码,客户端必须回应一段验证码才能得到受权接收播放
这个验证一般是基于数字签名或公开密钥算法的,比如MD5就是常用
的一种单向散列函数
至于这个验证要怎么通过,我感觉应该在real Server文档的用户验证
部分寻找,而不是RTSP中,我从没做过这方面的东西,所以说不上什么
具体的做法
 
后退
顶部