先森闲着没事就喜欢研究光猫、路由器那一套,对网速比较敏感。在折腾网速的时候经常遇到的方案就是光猫仅转换光信号,改成桥接让路由器直接拨号。让路由器拨号就涉及到宽带的账号密码了,先森已经拿到了光猫的超管账号,由于宽带不是先森办的,也不好联系电信客服索要宽带账号密码,所以就想着自己来获取宽带账号密码。先森坐标成都,运营商电信,光猫型号。折腾记录百度有方法说是将hw_ctree.xml解密,里面会有宽带密码,但是先森实测解密出来里面只有超管密码啥的,并没有宽带密码。经过研究,实测可行方案如下。1、获取“明文”首先使用超管账号登录光猫后台,8080端口那个,不是80端口的。在网络-网络设置中,连接名称选择带internet的那个,可以看到下面有用户名和密码,这个就是宽带账号和密码了。成都的宽带账号是CD开头的,CD是大写。密码是密文,这个只是显示密文,通过F12大法,找到密码的input标签,将type的“password”改成“text”就能看到明文了。但是这个明文是64位的一场串,一看就不是什么正经密码。光猫后台F12大法2、破解密码正经的密码不可能64位那么行,拿着这个密码去拨号也是没法成功的。经过搜索了解,这个密码是经过md5和哈希后的值,这个值想反解是很难的,但是宽带密码是纯数字的,且并不是很长的,所以我们可以生成0~几百万数字先md5再哈希的值去跟“明文”做对比,相等的数字就是宽带密码了。python代码:import hashlib# “明文”贴到这里:secret = '04f96727bb95e8cd75455822a7472e99a3fa14ce8098ffc5ce4a73ef07dde3fe'def sha256(todo):    return hashlib.sha256(str(todo).encode()).hexdigest()def md5(todo):    return hashlib.md5(str(todo).encode()).hexdigest()for value in range(0, 1000000000):  # 可以将数字调大,获取更长的密码    s = sha256(md5(value))    print(value)  # 打印可以看到当前计算的数字,可能会影响效率,不需要的可以删掉此行    if s == secret:        print(f'find: {s} = {value}')        break“明文”字符串以“04f96727bb95e8cd75455822a7472e99a3fa14ce8098ffc5ce4a73ef07dde3fe”为例,这个密码很简单,解密出来是123123:解密过程当然,先森用的宽带密码没这么简单,不过也只是跑了几分钟就跑出来了,跑的速度具体要看机器的配置。先森将光猫改成桥接后,路由器使用破解出来的宽带密码拨号成功,证明此方法是具有可行性的。