草庐IT

巧用Fiddler开启运营商定制版路由器被阉割的功能,免去刷公版固件的风险

好风凭借力 2023-03-28 原文

前言:

三大运营商都有自己的定制版路由器,一般会在自家营销活动中作为赠品送给用户

正巧我家里就有两台电信定制版的华为路由器,都是这两年双十一在某宝上买宽带时送的

两台路由器型号分别是TC7001和TC7102,分别对应华为官方公版路由器型号是AX2和AX3

这两台在我家里都是作为从路由使用的,增强下全屋的wifi信号仅此而已

 

1. 路由器刷成砖了

这两路由器当时到手的时候,我直接用手机把它们设置为家里的从路由了,所以管理后台我都还没仔细看过  <-- 请先注意这句话

晚上闲着无聊打开路由器的后台看了一下,发现定制版的路由器阉割掉了很多功能,只有最基础的wifi设置和一些基础信息设置的功能,完全没有可玩性

我就在网上找了找,看有没有什么第三方固件可以刷一刷扩展下功能,发现这两台华为路由器虽然不能刷第三方的固件,但是可以刷成公版固件,至少能变成一台功能齐全的路由器

于是找到了TC7102的公版AX3的固件,虽然教程写着不明不白,不管三七二十一了,固件版本对的上我就直接下载过来开始刷固件

固件刷完后发现,路由器的wifi信号没了,而且后台管理界面的默认密码也变了,不是机身背后的初始密码,这不等于啥也干不了,跟一台砖头没差!!!??

随后上网找了找,发现很多人都有这个问题,刚好这一款路由器的电信定制版刷成公版路由是有风险和特别注意事项的,一开始看的教程里都没提到

找了好久的解决办法,奈何定制版算是冷门款,网上信息太少了,但可以判断出来这路由基本是废了,得拆机烧固件,要找售后解决了

 

2. 尝试找到隐藏功能入口

我就想着,大家都喜欢刷公版,不就是因为功能太少了,而定制版会不会并没有删除功能,只是把功能入口隐藏掉了???

随后我就打开另一台路由器的后台,都一个品牌嘛,后台跟刚才那台是一模一样的,可以看到有些菜单是灰掉的

1. 先从html源码上入手,按F12打开浏览器调试工具,找到灰掉的按钮元素,把元素上的disabled属性去掉,css也尝试修改一下,发现点击了没反应,说明这事没这么简单

2. 接着发现他们的后台页面是用vue写的,并且点击那几个可用的菜单时,url上的路由跟dom上的id是一一对应的,那么可以确定点击事件就是用vue路由控制的,我们就可以从js源码入手,通过id去搜索对应的路由控制代码

3. 通过搜索其中一个被禁用的菜单id:internet,我在网页加载的资源中找到了一个名为router.js的文件,里面配置了很多页面的路由,以及每个路由需要的依赖引用和属性,而且通过路由命名都可以猜到是什么功能,并且路由数量是远远超过网页上可见的页面入口数量,我就随便找一个页面上没有的功能,在url上直接修改,回车后发现没反应,有的甚至会跳回首页,那这里一定是有什么逻辑在过滤这些路由

4. 很快我再通过一番搜索,在一个名为main.js里发现了一段注释写着白名单控制的方法,代码里清清楚楚的写着如何判断白名单,虽然不能完全看懂某些组合条件是什么意思,但是可以大概判断出来代码是通过一个叫 isRepeater 、meta.repeater 的属性,以及 isBridgemeta.bridage 这个'或'条件去判断的

5. meta.repeatermeta.bridge 这两个属性刚才在router.js里,我已经看到过几次,分外的眼熟,回到router.js中,可以发现很多不可见的页面路由恰巧都设置了这两个属性,真相大白了!

 

3. 利用Fiddler去替换掉JS的响应内容

1. 我们先把router.js这个文件下载到本机,用编辑器打开这个js,把路由包含 repeater: truebridge: true 的meta属性都删了,注意json格式别搞乱了,然后保存

2. 打开Fiddler开始抓包,刷新一下路由器的后台界面,在Fiddler中找到router.js,并把这个响应拖到右侧的AutoResponder中,接着选中这个响应,并指向到刚才我们本机上修改过的router.js,最后开启 Enable rules

3. 我们再刷新下网页,并手动修改url上的路由,随便挑一个隐藏路由即可,发现隐藏页面成功展示出来了,并且里面的各种设置都是能正常工作的,大功告成!!!

4. 有少量路由打开还是没反应的,结合路由的配置和网页加载资源可以判断出,某些路由依赖的js并不存在,说明开发者还是确确实实删了一点点的功能

5. 当然你也可以修改main.js中那段白名单的控制逻辑,用一样的套路实现效果

 

反转来了...

当我打开路由页面/internet,也就上图中顶部第二个灰色菜单,页面上显示 上网方式:Bridge(AP),再想到代码中关于白名单的条件有2个变量叫 isBridgemeta.bridge

我其实已经有点猜到是什么情况:Bridge模式下,开发者故意隐藏掉这些菜单,因为桥接模式的网关控制权已经全权交给主路由了,所以从路由没必须再显示这些功能

前面我也说了,这两个路由器一到手,我直接用手机进入路由器初始化流程,把他们设为从路由器,没机会看过它们的后台是长什么样的

而我这一次进后台,它们已经处于桥接模式了,导致我一直以为是因为定制版的原因这些功能才被阉割掉的

随后我就重置了路由器,设为正常的路由模式,果然所有菜单都正常显示出来了,搞了半天是一个乌龙事件....

 

结:

虽然这是一个乌龙教程,但是万一其他品牌的运营商定制版固件确实有隐藏了功能,并且是使用前后端分离的形式去做,也可以通过这样的方式去摸索,这篇教程能起到一点点的参考意义吧

路由器刷公版固件和第三方固件有风险,网上教程一定要先看完整,甚至可以多找几份教程对比,再刷一些用户的评论看看反馈再进行操作,像我这样操作不当就直接刷成砖,路由器废掉只能走售后,花费的时间成本更大

以上教程仅针对华为路由器的管理后台,其他品牌的后台大概率不适用,请自行研究

 

该文为博客园版本

原创作者:Harry

原文出处:https://www.cnblogs.com/simendancer/articles/17033944.html

有关巧用Fiddler开启运营商定制版路由器被阉割的功能,免去刷公版固件的风险的更多相关文章

  1. Fiddler手机抓包网络报错解决办法 - 2

    首先打开fiddler,点击Tools-Options-Connections一、这里有两个注意点点击HTTPS,左边选项选择如图,右边Actions点击如图第二项会提示Success,点击确定点击Connections,这里注意Fiddlerlistensonport这里面填写默认8888即可,左边三个选项选择如图,以上操作完成后,重启Fiddler二、手机打开WiFi1.长按或者点击Wifi进行修改网络(如不会操作,此处根据具体机型自行百度)修改代理为手动,服务器主机名两种方式可以查到:①win+R,在输入框输入cmd,在弹窗中输入ipconfig,此时IPv4后面的地址就是你的主机ip,

  2. javascript - 如何使用fiddler调试? - 2

    我有一个网页,当它在左下角完成时,有一条警告说:完成,但页面上有错误。我双击它,它告诉我:Line:628Char:100Error:Expected')'Code:0URL:.....我知道Fiddler是一个很好的调试工具。我下载它并尝试调试。IE告诉我我找不到任何丢失的内容')'有人能告诉我如何调试吗? 最佳答案 IE对行号的解释可能与您预期的不同。Firebug可能是帮助调试此类问题的更好工具。 关于javascript-如何使用fiddler调试?,我们在StackOverfl

  3. javascript - 类似风险(基于区域)的 map 和 HTML/JavaScript - 2

    假设我们有一个类似Risk的世界地图,它被划分为自定义形状的区域。如何让用户使用HTML5/JavaScript选择一个单独的区域?我假设Canvas2D是第一步,但接下来呢? 最佳答案 有无数伟大的图书馆。举几个例子:http://d3js.org/http://raphaeljs.com/http://paperjs.org/http://box2d-js.sourceforge.net/http://threejs.org/具体例子:http://bl.ocks.org/mbostock/2206590http://rapha

  4. javascript - 为什么使用 '*' 作为 postMessage 的 targetOrigin 存在安全风险? - 2

    当对postMessage()方法的targetOrigin使用通配符时,我很难理解安全问题。您调用postMessage()的窗口是否已经有一个我们要将数据发送到的来源?怎么会有人能够干涉它?使用window.location.origin将targetOrigin设置为窗口的原点是否不好?我理解在接收端检查事件源的重要性(如图here所示),但我似乎无法理解为什么发送端使用通配符作为targetOrigin是不好的当窗口已经有一个特定的原点时。 最佳答案 这本身不是风险。这只是意味着任何人都可以将您的内容嵌入到框架中并阅读您通过

  5. javascript - javascripts 访问密码字段值是否被视为安全风险? - 2

    如果安全正确地存储密码是一种良好的风格和安全性,那么要求用户输入密码的网页不应该也是如此吗?考虑这个例子functioncopy(){vartext=document.getElementsById('text');varpass=document.getElementsById('pass');text.value=pass.value;}copy在密码框中输入一些内容,然后单击复制按钮,瞧,它就暴露在世人面前了。但是,如果您从密码框中复制和粘贴,那么您将得到无用的数据。考虑一下您的登录页面上包含的不受您控制的javascript片段的数量(分析、页面流跟踪器、云中的托管脚本)。对于

  6. javascript - javascript "fake privacy"是否存在安全风险? - 2

    Javascript不允许您像在C++中那样为对象提供私有(private)数据或方法。哦,实际上,是的,通过一些涉及关闭的解决方法。但是来自Python背景,我倾向于认为“假装隐私”(通过命名约定和文档)已经足够好,或者甚至比“强制隐私”(由Javascript本身强制执行)更可取。当然,我可以想到这不是真的情况——例如人们在没有RTFM的情况下与我的代码进行交互,但我受到指责——但我没有遇到那种情况。但是,有件事让我犹豫了。Javascript大师DouglasCrockford在“Javascript:TheGoodParts”和其他地方反复将虚假隐私称为“安全”问题。Forex

  7. javascript - 包含第 3 方 iFrame 的安全风险 - 2

    包含隐藏的第3方iFrame的应用程序安全风险是什么?如果我没理解错的话...点击劫持对我来说不是问题,因为我拥有父页面同源策略阻止3p框架与我的dom/cookies/js交互框架是隐藏的,所以我不必担心框架中可能显示的任何内容但是我在Chrome控制台做了一些实验并且...3pframe可以调用alert/prompt之类的东西3p框架可以通过location.href重定向父节点3p框架内的恶意软件(java/flash/activeX)可能会感染我的用户我很想看到可能出现的问题和任何缓解措施的列表,但我找不到好的信息来源。那么...包含隐藏的第3方iFrame的应用程序安全风险

  8. javascript - 不使用 setState 修改 state 有什么风险? - 2

    我知道直接修改状态不用setState(...)不会自动更新UI,但我仍然可以这样做:this.state.myValue="foo";this.forceUpdate();我也知道React会等待特定时刻来一次更新多个组件,但是真的有什么令人信服的理由说明我不应该在没有setState(...)的情况下直接改变状态吗??有两种情况直接改变状态对我来说是有益的:如果我必须修改一个非常长的数组的元素,setState(...)的“集群更新”会带来性能提升与不是每次都浅复制整个数组所带来的性能提升相比,可以忽略不计。如果我在状态的2个不同属性中有2个对同一个对象的引用,并且我想修改这个对象

  9. javascript - 使用 ||运营商通知 - 2

    Javascript代码:vara=(b)?b:40;它正在运行,只是NetBeans说:“使用||运算符(列[?在哪里])”。我没有找到任何解释。这是什么?谢谢! 最佳答案 如果您只是测试b的真实性,那么您可以这样做:vara=b||40;…更短而且(可以说)更明显。在JavaScript中,||是一个短路运算符。如果为真,则返回左侧,否则返回右侧。(即,除非输入是bool值,否则它不会返回bool值)。如果您想查看b是否实际定义,那么您最好使用:vara=(typeofb!=="undefined")?b:40;

  10. javascript - Fiddler 的替代品? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。您好,我使用Fidder直接在非开发环境中测试错误修复。它允许您拦截伪造的javascript文件并将其替换为您指定的任何其他内容,而无需部署任何文件。问题是我只是使用Fiddler的这个功能,界面不是很友好(特别是如果你需要替换/拦截多个文件,它很快就会变得乏味)。Isthereanalternativesoftwarewiththesamefeatu

随机推荐