无法解释RTSP身份验证(基本和摘要)

时间:2014-08-15 18:40:43

标签: python authentication rtsp digest

我为这篇长篇文章道歉。寻找任何见解和帮助...

所以我试图在python中编写一个简单的rtsp认证研磨器。我在测试中跑过(相机)上的rtsp端口,当我访问它时,我回来了:

Received, 'RTSP/1.0 401 Unauthorized\r\n
CSeq: 1\r\n
Session:        645252166;timeout=60\r\n
WWW-Authenticate: Digest realm="4419b63f5e51", nonce="8b84a3b789283a8bea8da7fa7d41f08b", stale="FALSE"\r\n
WWW-Authenticate: Basic realm="4419b63f5e51"\r\nDate:  Sat, Aug 16 2014 02:22:28 GMT\r\n\r\n',

正如您所看到的,响应似乎表明该连接支持Basic和Digest身份验证。所以我先尝试了基础。我构建了以下消息并发送了它:

SETUP rtsp://192.168.201.113 RTSP/1.0
CSeq: 1
Transport: RTP/AVP;unicast;client_port 4588-4589
Authorization: Basic YWRtaW46NDQxOWI2M2Y1ZTUxOjEyMzQ=
User-Agent: VLC media player (LIVE555 Streaming Media v2010.02.10)

我在base64编码“user:password”并提出“YWRtaW46NDQxOWI2M2Y1ZTUxOjEyMzQ =”。

这再次引发了401 Unauthorized错误。

所以我鞭打VLC并试图连接,只是为了确保信用卡真正起作用,并在我输入的VLC连接字符串中:

的rtsp://用户:通过@:554

像魅力一样!

所以我点燃wireshark,看看它在做什么,并观察交通。在引擎盖下而不是基本身份验证,vlc正在使用摘要身份验证。

所以第一个问题是,基本身份验证是否适用于RTSP,还是对我说谎?如果是这样的话,我错过了什么才能让它发挥作用?

据我所知,有效。所以我尝试使用基于摘要的身份验证来构建一些东西。在阅读几个关于摘要认证的网站之后,我需要弄清楚的第一件事是它正在使用的参数。从我的401响应中我得到的是:

  1. 领域
  2. 随机数
  3. 我没有任何qop,也没有在出站VLC消息中看到cnon。我假设我们使用摘要式身份验证的基本形式,其中:

    H(A1) = MD5(user:realm:pass)
    H(A2) = MD5(method:digestURI)
    response = MD5(H(A1):nonce:H(A2)
    

    我的具体价值观是:

    H(A1) = MD5(admin:4419b63f5e51:1234) = d43b7f7d7f627da1aded72517f2a3c6c
    H(A2) = MD5(DESCRIBE:rtsp://192.168.201.113) = a7c212739387f1550970752dc7a17fa2
    response = MD5(d43b7f7d7f627da1aded72517f2a3c6c:57fa10a142d6c1f9e3dfabccc3ba045d:a7c212739387f1550970752dc7a17fa2) = 33477d22629eb37a6fc2d3435f03eb81
    

    VLC发送的具体响应是:

    0bde767876cbe8e6a6dfbba3c62c6db1

    != 33477d22629eb37a6fc2d3435f03eb81

    他们不匹配!! ??

    没有适当的信息来进行其他形式的Digest Auth,那么这里发生了什么?

2 个答案:

答案 0 :(得分:1)

某些相机制造商不支持基本身份验证。例如,Axis在最近的版本中已经取消了对它的支持。

答案 1 :(得分:0)

基本身份验证应该有效。如果我们解码" YWRtaW46NDQxOWI2M2Y1ZTUxOjEyMzQ ="我只是在您的帖子中进行逆向工程。解码后的字符串是" admin:4419b63f5e51:1234"那么这里的密码和用户名是什么?这可以吗?

在摘要式身份验证中,您将传递NULL字符串来代替qop等字段。摘要验证响应生成器的C实现存在于以下RFC中,

http://tools.ietf.org/html/rfc2617#section-5