背景

由于家里更换运营商,导致原电信多端口光猫变成了移动光猫-HG6821M,起初还是很开心的发现有4个千兆lan口,直到接了第二lan口接了路由器发现没有网络才发现移动默认只能一个lan口一个账号,不能多个端口都开启。当时简单百度看了一下,发现好像是只能有一个lan口可用,就买了个千兆交换机,用了两天。

曙光–发现超级账号

我无意见看到一篇写移动光猫开启多端口的帖子,具体里面有一些比较他当时开启多端口的方法。帖子是2018年的,但是我看系统界面都一样,应该是都能用的。然后就开始了我的操作了。(写的比较简单、详细可以看上面链接)

超级账号: USer: CMCCAdmin Password: aDm8H%MdA

多个端口划分到一个vlan命令_公众号

登陆后网络、宽带设置、选择连接为INTERNET连接、选择lan口绑定为1-3-4,然后点击下方保存,然后发生了之前帖子没有提到的事情…

多个端口划分到一个vlan命令_javascript_02


但是幸运的是打开浏览器开发者模式,查看网络,发现点击后并没有网络请求,然后就弹出了这个页面。

尝试绕过

没有请求肯定就是前端判断的,我想的是直接跳过前端判断进行破解。PS:我完全不懂前端,先说经过,这一段完全没用.

  1. 保存网页到本地、然后全局搜索【不允许重复绑定端口】,但是并没有定位到文件。
  2. 详细看发现,每次请求这一页面都会下载一个js,一看这个名字感觉就是它。但是我发现里面的中文都是乱码。
  3. 不得已请求专家。虽然直到是编码问题,但是我解决不了。具体好像就是我浏览器查看的就是utf-8(可能windows可以正常显示),copy下来使用gbk编码格式打开也是不行的。朋友使用tcpdump抓包然后wireshark分析保存了utf-8文件。这样就好定位了

    4.其判断起来主要是用了一堆if来完成的,我不想看了,直接跳过逻辑看到了最终应用更改的函数。语言不一样,但是呢逻辑都是一样的。看起来就是先使用 checkBroadbundFiels判断选择框是否合法、然后使用broadbundPrepaerJson获取框选数据,setbroadbundCMinfo实现更改设置。
  4. 然后就需要只需要更改js文件就可以了,我想过劫持文件、还想过把所有js导入然后post数据到路由器,结果发现直接浏览器就可以执行本页面的js文件…那就easy了。

操作

1.在之前的页面,然后打开浏览器开发者模式

多个端口划分到一个vlan命令_路由器_03


2. 执行然后就发现完成破解了

setbroadbundCMInfo(broadbundPrepareJSON(), function(success, error_desc){
			if (!success)
				alert(_(error_desc));
		    else
			{
				$("#panel_content").hide();
				document.getElementById('light').style.display = 'none';
				document.getElementById('fade').style.display = 'none';
				getbroadbundCMInfo(broadbundReceived);
			}
});
!备注

由于我现在不能复现、具体可以看看输入这几个函数是否有预期的结果。

  1. checkBroadbundFields() 如果多选那么应该弹出警告
  2. broadbundPrepareJSON() 会打印出当前设置,具体可以看到账号和密码。最好记录一下,不然万一玩坏了还可以恢复出场设置然后自己联网!!!

另外

不一样适用所有产品光猫,但是感觉可以按照这个思路试一试。另外想吐槽了一下移动做的这个也算是修补之前可以直接使用超级账号修改lan端口的bug,但是这个修补的太粗糙了。类似粗糙的例子可以看到口之前写的斐讯k2刷固件记录,…感觉都这么简陋。

具体放上一段其识别是否多端口的逻辑:

多个端口划分到一个vlan命令_多个端口划分到一个vlan命令_04


然而1166行到1360行全是这一段if、else逻辑判断。