CCTV webserver javascript

时间:2011-05-18 20:44:59

标签: javascript html cctv

这里有点奇怪,我有一个闭路电视系统并联系制造商询问是否有API。答案是否定的。

我一直在努力了解如何拍摄现场jpeg图片并在我自己的应用程序中使用它(c#)。

这是指向显示实时Feed的实时视图页面的链接; http://pastebin.com/jCp4jZRh

我感兴趣的是

img_buf [0] .src =“ivop.get?action = live& piccnt = 0& THREAD_ID =”+ thd_id;

现在picc​​nt似乎是为了阻止浏览器缓存数据,所以这个数字不断变化,thd_id似乎是频道号。当试图访问这个时,我得到以下消息;

身份验证错误:拒绝访问,身份验证错误

即使我先登录,然后使用我自己的意见尝试上述网址,我仍会检索拒绝访问的消息。

继承人登录页面的来源; http://pastebin.com/q7nLJ4tk 继承人md5.js文件的来源; http://pastebin.com/du1ggaQB

我只是有点坚持如何验证然后显示Feed,有没有人有任何指针?

感谢

4 个答案:

答案 0 :(得分:0)

鉴于可用的有限信息,最佳猜测:他们正在检查推荐人。您可以使用Fiddler检查请求的详细信息(您甚至可以使用略有不同的引荐来重播请求,确认是否发生了这种情况,等等)。如果是这样,您可以在HTTPWebRequest中设置引荐来源:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.referer.aspx

答案 1 :(得分:0)

我回答了一个类似的问题,解决方案最后是你必须设置推荐人。

无论如何,要找到您的解决方案download a copy of Fiddler

运行后,点击相机页面,您会看到多个请求。当您找到ivop.get的其中一个请求时,将其拖到请求构建器中并再次执行它。

如果第二次执行后它仍然有效(使用检查员检查),然后开始更改标题,逐个删除位,直到找到关键元素。我怀疑会有一个cookie,或者需要推荐人。

一旦找到了这些元素,就很容易在您的应用程序中提出适当的请求。

如果您可以发布实时网址,我可以为您提供帮助。

答案 2 :(得分:0)

有很多种可能性,如果无法访问CCTV服务器的源代码,很难说它可能是哪一种。

我建议弹出一个HTTP Header嗅探工具(例如firefox的https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/)并观察成功IMG请求的标头。然后使用netcat或curl重播该请求。一旦你有了这个工作,尝试一次删除一个HTTP头(你可能会发送某种会话ID,HTTP推荐者等 - 这些对CCTV服务器来说都很重要)

在任何情况下,至少您必须至少使用mlogin.get进行身份验证并在后续请求中传递生成的会话ID。

答案 3 :(得分:0)

虽然这可能很旧-我有同样的问题。 DVR需要经过身份验证的登录名,并在第一次重定向到登录页面时在URL中发送一个密钥,并在hex_hmac_md5中输入密码。我有一个python函数来登录和检索两个通道图像,然后在下面注销:

def getcamimg():
    baseurl = 'http://<IPADDRESS>/'
    content = str(getUrl(baseurl))
    x = re.search("key=(\w+)", content)
    keystr = x.group(1)
    key = bytes(keystr,'utf-8')
    password = bytes(<YOURPASS>,'utf-8')
    hmacobj = hmac.new(key,password)
    hmacpass = hmacobj.hexdigest()
    #-----------------------------------------------------
    loginurl = baseurl + 'mlogin.get?account=<USERNAME>&passwd='+ str(hmacpass) + '&key=' + keystr + '&Submit=Login'
    lcontent = str(getUrl(loginurl))
    if("another administrator" in lcontent):
        print("another admin online")
        exit()
    y = re.search('href="([\w\d\.\?=&_-]+)"',lcontent) 
    finalurl = baseurl + y.group(1)
    z = re.search('id=(\w+)',lcontent)
    thid = z.group(1)
    #-----------------------------------------------------
    imgurl = baseurl + "ivop.get?action=live&piccnt=1&THREAD_ID=" + thid
    imgcontent = getUrl(imgurl)
    ctime = datetime.datetime.today().strftime("%Y%m%d%H%M%S")
    with open("chan1_"+ctime+".jpg", "wb") as file0:
        file0.write(imgcontent)
    #-----------------------------------------------------
    chanset = "showch.set?channel=3&THREAD_ID=" + thid
    getUrl(baseurl + chanset)
    #-----------------------------------------------------
    icontent1 = getUrl(imgurl)
    with open("chan3_"+ctime+".jpg", "wb") as file1:
        file1.write(icontent1)
    #-----------------------------------------------------
    logout = "Forcekick.set?ITSELF=1&Logout=Logout&THREAD_ID=" + thid
    getUrl(baseurl + logout)
    #-----------------------------------------------------
def getUrl(url):
    try:
        response = requests.get(url)
        response.raise_for_status()
    except HTTPError as http_err:
        print('HTTP error occurred: '+ str(http_err))
    except Exception as err:
        print('Other error occurred:' + str(err)) 
    else:
        return response.content