rtsp 用户名、密码登录
2017-02-24 19:44
211 查看
在使用rtp看视频时,有时候需要使用用户名和密码登录,那么在用户名密码登录的流程是怎么样的呢?
服务器应答401错误,说明需要用户名密码认证
rtsp 客户端再次发送DESCRIBE指令,该指令包含用户名密码等有效信息,其中密码采用MD5算法加密发送
服务器应答成功
rtsp客户端继续setup、play流程
CSeq: 6
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp
RTSP/1.0 401 Unauthorized
CSeq: 6
Date: Fri, Feb 24 2017 07:17:45 GMT
WWW-Authenticate: Digest realm="LIVE555 Streaming Media",nonce="213d8479345cb52cee152187ed8f16d9"
DESCRIBE rtsp://192.168.100.123:554/mpeg4cif RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="LIVE555 Streaming Media", nonce="213d8479345cb52cee152187ed8f16d9", uri="rtsp://192.168.100.123:554/mpeg4cif", response="40c4124a69551684cec093e6ae45af96"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 7
Date: Fri, Feb 24 2017 07:17:45 GMT
Content-Base: rtsp://192.168.100.123/mpeg4cif/
Content-Type: application/sdp
Content-Length: 681
v=0
o=- 187880931531 1 IN IP4 192.168.100.123
s=RTSP/RTP stream from Network Video Server
i=mpeg4cif
t=0 0
a=tool:LIVE555 Streaming Media v2011.05.25
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:RTSP/RTP stream from Network Video Server
a=x-qt-text-inf:mpeg4cif
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:384
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640014;sprop-parameter-sets=Z2QAFK2EAQwgCGEAQwgCGEAQwgCEK1CwS03AQEBQAAADABAAAAMBKEA=,aO48sA==;config=0000000167640014ad84010c20086100430802184010c200842b50b04b4dc040405000000300100000030128
400000000168ee3cb0
a=x-dimensions: 352, 288
a=x-framerate: 8
a=control:track1
(1)当password为MD5编码,则
response = md5(password:nonce:md5(public_method:url));
(2)当password为ANSI字符串,则
response= md5(md5(username:realm:password):nonce:md5(public_method:url));
客户端在每次发起不同的请求方法时都需要计算response字段,同样在服务器端校验时也默认采取同样的计算方法。
username:admin
realm:LIVE555 Streaming Media #这个字符在DESCRIBE应答401错误时返回
password:123456
md5(admin:LIVE555 Streaming Media:123456)=b5d76ea8a4c88c4397efbbdbcb8cc725
public_method:DESCRIBE
url:rtsp://192.168.100.123:554/mpeg4cif
md5(DESCRIBE:rtsp://192.168.100.123:554/mpeg4cif)=ec124df220a2c580359ebd8aebff813f
md5(b5d76ea8a4c88c4397efbbdbcb8cc725:213d8479345cb52cee152187ed8f16d9:
ec124df220a2c580359ebd8aebff813f)=40c4124a69551684cec093e6ae45af96
大致流程:
rtsp 客户端发送DESCRIBE指令服务器应答401错误,说明需要用户名密码认证
rtsp 客户端再次发送DESCRIBE指令,该指令包含用户名密码等有效信息,其中密码采用MD5算法加密发送
服务器应答成功
rtsp客户端继续setup、play流程
抓包分析:
DESCRIBE rtsp://192.168.100.123:554/mpeg4cif RTSP/1.0CSeq: 6
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp
RTSP/1.0 401 Unauthorized
CSeq: 6
Date: Fri, Feb 24 2017 07:17:45 GMT
WWW-Authenticate: Digest realm="LIVE555 Streaming Media",nonce="213d8479345cb52cee152187ed8f16d9"
DESCRIBE rtsp://192.168.100.123:554/mpeg4cif RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="LIVE555 Streaming Media", nonce="213d8479345cb52cee152187ed8f16d9", uri="rtsp://192.168.100.123:554/mpeg4cif", response="40c4124a69551684cec093e6ae45af96"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp
RTSP/1.0 200 OK
CSeq: 7
Date: Fri, Feb 24 2017 07:17:45 GMT
Content-Base: rtsp://192.168.100.123/mpeg4cif/
Content-Type: application/sdp
Content-Length: 681
v=0
o=- 187880931531 1 IN IP4 192.168.100.123
s=RTSP/RTP stream from Network Video Server
i=mpeg4cif
t=0 0
a=tool:LIVE555 Streaming Media v2011.05.25
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:RTSP/RTP stream from Network Video Server
a=x-qt-text-inf:mpeg4cif
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:384
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640014;sprop-parameter-sets=Z2QAFK2EAQwgCGEAQwgCGEAQwgCEK1CwS03AQEBQAAADABAAAAMBKEA=,aO48sA==;config=0000000167640014ad84010c20086100430802184010c200842b50b04b4dc040405000000300100000030128
400000000168ee3cb0
a=x-dimensions: 352, 288
a=x-framerate: 8
a=control:track1
response字段计算:
RTSP客户端应该使用username + password并计算response如下:(1)当password为MD5编码,则
response = md5(password:nonce:md5(public_method:url));
(2)当password为ANSI字符串,则
response= md5(md5(username:realm:password):nonce:md5(public_method:url));
客户端在每次发起不同的请求方法时都需要计算response字段,同样在服务器端校验时也默认采取同样的计算方法。
当password为ANSI字符串为例讲解:
step 1:
md5(username:realm:password)username:admin
realm:LIVE555 Streaming Media #这个字符在DESCRIBE应答401错误时返回
password:123456
md5(admin:LIVE555 Streaming Media:123456)=b5d76ea8a4c88c4397efbbdbcb8cc725
step 2:
md5(public_method:url)public_method:DESCRIBE
url:rtsp://192.168.100.123:554/mpeg4cif
md5(DESCRIBE:rtsp://192.168.100.123:554/mpeg4cif)=ec124df220a2c580359ebd8aebff813f
step 3:
response= md5(md5(username:realm:password):nonce:md5(public_method:url)) #nonce字段在DESCRIBE应答401错误时返回md5(b5d76ea8a4c88c4397efbbdbcb8cc725:213d8479345cb52cee152187ed8f16d9:
ec124df220a2c580359ebd8aebff813f)=40c4124a69551684cec093e6ae45af96
相关文章推荐
- 局域网访问共享时提示登录失败:未知的用户名或错误密码
- 使用windows窗体应用程序来实现用户名与密码的登录
- 在登录页面如何实现记住用户名和密码这个功能
- MD5登录+SQL用户名密码校验
- ubuntu输入了正确的用户名密码但是无法登录(环境变量设置错误所以不能登录系统)
- 使用sharedPreferences实现密码登录和注册用户名重复检查
- Axis Session 关于Web Service Forum 用户登录 用户名 密码 的 保存
- 一开机未通过输入密码登录,就出现用户名或密码错误??
- PHP——登录时用户名密码区分大小写设置(binary)
- spring security form 表单提交 多种方式登录(如用户名,邮箱,+密码)登录)
- Android自动登录 记住用户名密码实现 SharedPreferences
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- oracle的system账户用normal模式登录失败,提示用户名或密码错误,但是如果用sysdba登录,即使不输入密码,或者密码错误也能登录成功。
- oracle 忘记了登录的用户名和密码
- MongoDB 用户名密码登录
- 终于找到用户名和密码,登录上了.
- HTML中用户输错用户名或密码,页面跳转3秒钟之后返回登录页面