草庐IT

为了改桥接,我决定破解中兴F450G V2光猫

boris1993 2023-03-28 原文

还记得我之前买了个猫棒来替换光猫么?用了一个来月,发现这玩意真的不稳定,短则几分钟长则一两天它必定自己重启一次,导致我的网络时不时就会断线。这玩意不好使,我也没有别的光猫,只好找电信装维师傅给我改桥接。可哪成想一个师傅踢皮球让我找另一个师傅,另一个一听我说是悦me直接就说不能改,只有SDN光猫能改。那你们逼我的,我自己改。

光猫信息

我的这款光猫是EPON上行悦me网关,型号是中兴 ZXHN F450G,区域是上海,硬件版本V2.0

准备工作

开始折腾光猫之前,一定要把当前光猫里存的配置备份好,尤其是LOID,万一折腾砸了,还可以改回去,或者重新注册,让局端重新下发正确的配置。我已经有了telecomadmin的密码,就直接登进后台,把配置抄了下来。

开始动手

首先我要大力感谢这篇帖子,那天我就是照着这里面的内容操作的。
https://www.chinadsl.net/thread-127666-1-1.html

复位光猫,开启telnet

首先,拔掉光纤,用细针捅住光猫后面的复位孔,直到光猫前面板下方的两个灯都熄灭,只剩下上面的电信logo亮着,以彻底复位光猫。这一步是为了重新打开telnet,因为这个光猫在插上光纤之后telnet就会被禁用,只有拔掉光纤并彻底复位才能再把telnet打开。

复位后光猫会自动重启,拿根网线,把电脑接上光猫的LAN口(别接LAN 2,那是给IPTV用的),电脑设定静态IP地址192.168.1.100(其实除了192.168.1.1之外,整个192.168.1.0/24网段随便你选),子网掩码255.255.255.0

接下来持续ping 192.168.1.1,光猫启动好之后会有响应,接下来用telnet连接192.168.1.1,使用用户名root和密码Zte521登进光猫shell。

需要通过telnet做的配置

首先用以下命令实现在光纤插入后telnet仍然可用。

# 打开telnet
sendcmd 1 DB set TelnetCfg 0 TS_Enable 1
# 允许局域网登陆
sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1
# 插上光纤后不关闭telnet
sendcmd 1 DB set TelnetCfg 0 Lan_EnableAfterOlt 1
# 最多允许5个用户同时登陆telnet,避免自己被锁在外面
sendcmd 1 DB set TelnetCfg 0 Max_Con_Num 5
# 打开23端口
sendcmd 1 DB set PortControl 3 PortEnable 1
# 保存配置
sendcmd 1 DB save

然后可以用sendcmd 1 DB p TelnetCfg确认下配置。后面的操作也可以用sendcmd 1 DB p 表名这条命令确认配置,就不再重复了。

<Tbl name="TelnetCfg" RowCount="1">
        <Row No="0">
                <DM name="TS_Enable" val="1"/>
                <DM name="Wan_Enable" val="0"/>
                <DM name="Lan_Enable" val="1"/>
                <DM name="TS_Port" val="23"/>
                <DM name="TSLan_Port" val="23"/>
                <DM name="TS_UName" val="root"/>
                <DM name="TS_UPwd" val="Zte521"/>
                <DM name="TSLan_UName" val="root"/>
                <DM name="TSLan_UPwd" val="Zte521"/>
                <DM name="Max_Con_Num" val="5"/>
                <DM name="ProcType" val="0"/>
                <DM name="Lan_EnableAfterOlt" val="1"/>
                <DM name="TS_Sprtwl_Mode" val="0"/>
                <DM name="WanWebLinkToTS" val="0"/>
        </Row>
</Tbl>

然后禁用掉TR069。电信局端通过TR069协议下发配置,而我们自己改的桥接肯定跟局端的配置不一样,不关掉这玩意相当于白忙活。

# 禁用TR069的58000端口
sendcmd 1 DB set PortControl 6 PortEnable 0
sendcmd 1 DB save

虽然原帖中说还要把远程管理配置乱改以斩草除根,我是懒得改,应该关了端口就行,因为一来直到现在一个星期了我的配置都还在,二来重新设备注册的时候也会卡在等待ITMS下发配置,所以TR069应该是已经被掐了。

然后需要骗过光猫,让它认为ITMS下发配置已经成功。一开始搞的时候没做这一步,就发现过几分钟网页就打不开,nslookup一下发现解析全去了192.168.1.1,又打开个网站说试试,结果直接被光猫劫持到了设备注册页面。直接在光猫的表里面改掉ITMS状态,再清理DNS缓存之后就正常了。

sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save

接下来改掉光猫的最大用户数。其实要改桥接的话,这个改不改都没关系,反正我也不用光猫上网。但还是顺手改了。也不需要改什么最大用户数,直接关掉限制完事。

sendcmd 1 DB set CltLmt 8 Enable 0
sendcmd 1 DB save

至此telnet里面要搞的东西就都搞完了。虽然原帖里面还提到改掉telecomadmin的密码,但是既然TR069都废了,密码自然也不会再变。正好之前从装维师傅那要到的密码还能用,我也懒得再改。

登进后台配桥接

插上光纤,用telecomadmin登进光猫后台。先看一眼网关注册信息,因为光猫复位不会丢LOID,所以插上光纤之后,光路(OLT)认证应该就是认证成功的状态;而上面在telnet里面也改掉了ITMS认证状态,所以管理(ITMS)注册也应该是注册成功的状态。

进入网络网络设置,点开连接名称下拉菜单,看有没有INTERNET_B_VID,如果有,而且连接模式是路由,那就删了它。然后下拉菜单选新建WAN连接,连接模式选桥接,业务类型选上网,IP模式选IPv4&IPv6,点保存,光猫端就配置完成了。

齐活

到这光猫就改好桥接了,从光猫上扯根网线连上自己的路由器拨号,就可以上网了。正好改完桥接那天,RouterOS有更新,看PPPoE接口的uptime可以看出来,从RouterOS重启之后到现在,链接就没断过。之前用猫棒的时候,uptime就没多于过2天。

有关为了改桥接,我决定破解中兴F450G V2光猫的更多相关文章

  1. ruby - 只是为了好玩,我如何编写一个 ruby​​ 程序,一次缓慢地打印到 stdout 一个字符? - 2

    我认为这可能有效"abcdefghijk".each{|c|putcc;sleep0.25}我希望看到“abcdefj”一次打印一个字符,每个字符之间间隔0.25秒。但是整个字符串是一次打印出来的。 最佳答案 两件事:您需要使用.each_char来遍历字符。在Ruby1.8中,String.each将逐行进行。在Ruby1.9中,String.each已弃用。如果您希望字符立即出现,您应该手动刷新$stdout。否则,它们往往会被缓冲,以便字符在最后一次出现。.#!/usr/bin/envruby"abcddefghijk".ea

  2. 为了开放互联,明道云做了十件事 - 2

    本文来自明道云资深研发经理孙伟,在明道云2022年秋季伙伴大会活动演讲,经校对编辑后整理为演讲精华。一、开放没有选择很多客户选择我们的一个重要原因,是明道云所能提供的产品开放能力。开放其实是没有选择的,坦白来讲,我也不希望开放,我希望客户所有的业务系统都用明道云管理,这样对我们是更有利的。但是,现实中因为企业业务的多样性与复杂性,没有任何一家平台可以做到一站式解决所有问题。为了方便客户,我们就必须开放自己,让客户用得更好。1.一个典型的业务场景需要多少个系统?我们先来看一个典型的业务场景。一个客户从网站上下了一个订单,经销商收到订单之后去向企业订货。企业订货之后如果自身不进行生产,就需要向供应

  3. javascript - 导入模块只是为了运行它 - 2

    我有一个JavaScript文件,它为我正在使用的表单验证库注册了验证器。这些验证器可以通过该库访问,所以我不需要将它导入任何地方,我只需要确保它运行一次。如何在es6中以这种方式导入模块?项目中执行此操作的最佳位置是什么?我目前在我的主js文件中有它,一切都在那里启动,但该文件与表单或数据验证无关,所以感觉有点尴尬 最佳答案 HowdoIimportamoduleinsuchawayines6?你可以使用import'validators/register';仅针对其副作用导入模块。What'sthebestplaceinapro

  4. javascript - 如何根据以下内容决定哪个 promise 执行 then/catch - 2

    全部:我是Promise的新手,这里有一个例子:varsomeAsyncThing=function(){returnnewPromise(function(resolve,reject){//thiswillthrow,xdoesnotexistresolve(x+2);});};varsomeOtherAsyncThing=function(){returnnewPromise(function(resolve,reject){reject('somethingwentwrong');});};someAsyncThing().then(function(){returnsomeO

  5. javascript - 为什么设计决定使用不同的支架? - 2

    我刚开始学习Angular2,想知道为什么开发人员决定在他的html中使用各种不同的包装器?例如:[(ngModel)]="some.property"(click)="someMethod()"[src]="some.property"我确信它背后有一个很好的逻辑原因,而且我知道它们用于不同的目的,但乍一看它似乎不一致并且是一个需要克服的不必要的障碍。 最佳答案 每种语法都有自己的目标。1)事件绑定(bind)这是一种从内部到外部组件的单向绑定(bind)。称为事件。当内部组件或当前标签触发click事件时,外部组件将调用some

  6. javascript - 桥接 Python 后端和 JavaScript 前端 - 2

    我目前正在从事一个项目,该项目涉及通过用户提供的文件进行解析,使用该数据进行计算,并使用图形实用程序可视化结果。现在,我坚持使用Python作为后端,因为它有JavaScript中不可用的科学库,但我想将整个工具移动到Web服务器,在那里我可以使用D3.js进行更流畅的可视化。工作流程类似于:从浏览器获取文件内容,使用内容执行Python脚本,返回计算值的jsonified对象,并使用D3绘制这些对象。我已经让后端和前端独立工作,但想知道:我怎样才能将两者联系起来?根据我收集到的信息,我需要做一些事情启动服务器、向服务器发送AJAX请求以及从服务器检索数据。但是由于框架数量众多(Fla

  7. javascript - d3 Sankey - 是否有可能影响或决定节点的位置? - 2

    我正在使用d3.js的Sankey插件。有没有办法影响节点的自动放置?如果你比较下面两张图片。自动生成桑基图:https://files.secureserver.net/0s3DEU5s3OZtqL在我手动重新排列后:https://files.secureserver.net/0sYJF1w7f54wdF您会看到节点彼此居中对齐,这使得在您手动重新排列节点之前很难使用图表。我能否以某种方式影响此流程-还是它就是这样?顺便问一下-有没有办法指定节点的文本不应长于节点的高度? 最佳答案 根据demo及其解释,没有办法影响放置(并且简

  8. javascript - 如何对一个JS数组进行批量排序(为了性能) - 2

    我有一个JS应用程序需要对一个大数组进行复杂的排序然后显示它。使用内置的array.sort(cb)方法处理我的数据最多可能需要1秒。这足以让我的UI变得卡顿。因为UI的高度仅足以在屏幕上显示已排序数组的一个子集,而其余部分位于滚动条下方或已分页,所以我有了一个想法。如果我创建一个遍历大型数组的算法并快速排序,使得前N项完全排序,但数组中的其余项排序不完全,会怎样?每次我运行我的算法时,它都会从上到下对数组进行更多排序。这样我就可以将我的处理分解成block并拥有流畅的用户界面。在最初的几秒钟内,数组不会被完美排序,但缺陷会在滚动条下方,因此不会被注意到。我天真的解决方案是编写我自己的

  9. javascript - 为了了解 jQuery,我必须先了解 JavaScript 吗? - 2

    为了了解jQuery,我必须先了解JavaScript吗? 最佳答案 我的回答也是是,这篇文章的原因如下:LearningJavascriptorSimplytheJSFrameworks?引用上面文章的主要原因:框架并不能包办一切。Whereasframeworksandcodelibrariesoftentakealotoftheheavyliftingwhencodingupsites,theycan’tdoitall.Ifyoucomealongandthink“Ineedtodothis”andyourframeworkd

  10. javascript - 是什么决定了使用 promises 或 setTimeout 的延迟函数的调用顺序? - 2

    延迟函数的执行,例如在自定义事件处理中,是JavaScript中的一种常见模式(参见,例如here)。过去使用setTimeout(myFunc,0)是唯一的方法,但是有了promises现在有一个替代方法:Promise.resolve().then(myFunc)。我原以为它们几乎可以做同样的事情,但是在处理包含自定义事件的库时,我想我会发现是否存在差异,所以我将以下block放入Node中:varlogfn=function(v){returnfunction(){console.log(v)}};setTimeout(logfn(1),0);Promise.resolve().

随机推荐