电信光猫超级管理员破解

今天遇到了一件特别恶心的事情。
下午去小舅新墅安装监控时发现电信天翼网关无法正常拨号,因为没有带电脑,加上是第一次接触电信光猫,所以无法第一时间进行破解,就抱着一丝的希望给装宽带的师傅打电话咨询了,然而他的态度却极其恶劣,告诉我如果进去(超级管理界面)后设置错了网关就废了,还得重新花钱买,听到这里我差点骂出来,虽然忍住了,但是气不打一处来,就决定自己破解一下,于是就有了下面的教程:

这里使用的是中兴(ZTE)ZXHN F652,如果是同一品牌设备也可以尝试进行操作,嫌麻烦的可以直接跳过教程换(买)一个没有限制的光猫进行连接。
首先,网关的默认登录地址是192.168.1.1,我们登录后可以看到已经默认填好了一个叫做“useradmin”的普通用户账号,密码就是写在机器底部贴条上的密码,用这个账号登录进去也只能看看连接状态,进行一些简单的操作,而关键的设置是没有任何权限的,所以我们才需要获取超级管理员的账号密码进行设置,但是因为有ITMS的存在,所以每次师傅上门维护时其实应该是有一个终端可以远程获得密码来登录的,但是作为高端用户,我们并不能容忍这样的设置存在,所以动手开干吧!


在动手之前,请先确认光猫已经断开了光纤的连接,否则后面会很麻烦。

第一步:访问http://192.168.1.1/hidden_version_switch.gch
这里可以查看到当前的版本模式,记住这个版本(一般为当前省份),然后选择default version提交,之后设备会自动重启初始化系统设置,之前的所有设置都会清空恢复到默认状态。重启完成之后,继续访问这个页面,选择之前的版本模式,然后提交-自动重启。

第二步:使用Telnet登录192.168.1.1,用户名:root 密码:Zte521
这也是最关键的一步,也是之前为什么要先不要连接光纤的原因,如果连接了光纤,系统开始工作后,会通过光路下载运营商配置,并且禁止Telnet登录,这样后面的代码就可以慢慢输入了:

sendcmd 1 DB set TelnetCfg 0 TS_Enable 1           
sendcmd 1 DB set PortControl 3 PortEnable 1             
sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1              
sendcmd 1 DB set TelnetCfg 0 Lan_EnableAfterOlt 1    
sendcmd 1 DB save                                             
reboot

最后一条成功执行之后,Telnet连接会关闭,系统将进行重启,重启成功后,这时候就算再接上光纤,也不用担心运营商下发的配置影响telnet了。

第三步:telnet到光猫,执行

sendcmd 1 DB p DevAuthInfo

就可以在0行查看到默认的超级管理员账号密码了,我这里是这样显示的:

/ # sendcmd 1 DB p DevAuthInfo
<Tbl name="DevAuthInfo" RowCount="6">
        <Row No="0">
                <DM name="ViewName" val="IGD.AU1"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="1"/>
                <DM name="User" val="telecomadmin"/>
                <DM name="Pass" val="nE7jA%5m"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="1">
                <DM name="ViewName" val="IGD.AU2"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="1"/>
                <DM name="User" val="useradmin"/>
                <DM name="Pass" val="kayk4"/>
                <DM name="Level" val="2"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="2">
                <DM name="ViewName" val="IGD.AU3"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="2"/>
                <DM name="User" val="root"/>
                <DM name="Pass" val="public"/>
                <DM name="Level" val="2"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="3">
                <DM name="ViewName" val="IGD.AU4"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="2"/>
                <DM name="User" val=""/>
                <DM name="Pass" val="zte"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="4">
                <DM name="ViewName" val="IGD.AU5"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="4"/>
                <DM name="User" val="admin"/>
                <DM name="Pass" val="admin"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="5">
                <DM name="ViewName" val="IGD.AU6"/>
                <DM name="Enable" val="0"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="5"/>
                <DM name="User" val=""/>
                <DM name="Pass" val="samba"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
</Tbl>

至此,超级管理员账号密码就成功获得了,下面进行一些额外的设置,来完全掌控我们的光猫。

先来讲解下Telnet的基本语法:

①读取全部表名:

sendcmd 1 DB all

我这个光猫列出了356个表,每个表的具体用途还有待慢慢研究。

②读取指定表详细信息:

sendcmd 1 DB p 表名

比如sendcmd 1 DB p DevAuthInfo,查看路由器帐号和密码:

/ # sendcmd 1 DB p DevAuthInfo
<Tbl name="DevAuthInfo" RowCount="6">
        <Row No="0">
                <DM name="ViewName" val="IGD.AU1"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="1"/>
                <DM name="User" val="telecomadmin"/>
                <DM name="Pass" val="nE7jA%5m"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="1">
                <DM name="ViewName" val="IGD.AU2"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="1"/>
                <DM name="User" val="useradmin"/>
                <DM name="Pass" val="kayk4"/>
                <DM name="Level" val="2"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="2">
                <DM name="ViewName" val="IGD.AU3"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="2"/>
                <DM name="User" val="root"/>
                <DM name="Pass" val="public"/>
                <DM name="Level" val="2"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="3">
                <DM name="ViewName" val="IGD.AU4"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="2"/>
                <DM name="User" val=""/>
                <DM name="Pass" val="zte"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="4">
                <DM name="ViewName" val="IGD.AU5"/>
                <DM name="Enable" val="1"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="4"/>
                <DM name="User" val="admin"/>
                <DM name="Pass" val="admin"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
        <Row No="5">
                <DM name="ViewName" val="IGD.AU6"/>
                <DM name="Enable" val="0"/>
                <DM name="IsOnline" val="0"/>
                <DM name="AppID" val="5"/>
                <DM name="User" val=""/>
                <DM name="Pass" val="samba"/>
                <DM name="Level" val="1"/>
                <DM name="Extra" val=""/>
                <DM name="ExtraInt" val="0"/>
        </Row>
</Tbl>

③查看当前系统运行的服务状态:

sendcmd -pc show

④修改某个表的某个字段的值:

sendcmd 1 DB set 表名 行数 字段名 字段值

行数就是<Row No=”0″> 这个里面No的值
字段名就是DM name后面引号中的名称,注意大小写。
字段值就是要设置的值
⑤保存对配置文件的修改:

sendcmd 1 DB save

第一项,当然是禁用Tr069连接了,因为如果不禁用它,光猫还是会被电信远程修改配置,这也是我们不想看到的:

#查看表
sendcmd 1 DB p MgtServer
#修改值
sendcmd 1 DB set MgtServer 0 Tr069Enable 0
sendcmd 1 DB set MgtServer 0 PeriodicInformEnable 0
#保存
sendcmd 1 DB save

第二项,修改连接数限制,默认是只能连接4台设备,这里我们把它增大,最高是255,一般家庭20左右就够用了,这里设置的99台设备:

sendcmd 1 DB p CltLmt
sendcmd 1 DB set CltLmt 8 Max 99
sendcmd 1 DB save

第三项,修改wifi前缀,光猫自带的wifi被强制设定了前缀ChinaNet-,可以把它取消掉:

/ # sendcmd 1 DB set WLANCfg 0 ESSIDPrefix
<Tbl name="WLANCfg" RowCount="4">
        <Row No="0">
                <DM name="ViewName" val="IGD.LD1.WLAN1"/>
                <DM name="LANDViewName" val="IGD.LD1"/>
                <DM name="ValidIf" val="1"/>
                <DM name="InstExist" val="1"/>
                <DM name="Enable" val="1"/>
                <DM name="ESSID" val="ChinaNet-Ytny"/>
                <DM name="ESSIDPrefix" val=""/>
                <DM name="Priority" val="0"/>
                <DM name="ACLPolicy" val="0"/>
                <DM name="BeaconType" val="6"/>
                <DM name="ESSIDHideEnable" val="0"/>
                <DM name="BeaconEnabled" val="1"/>
                <DM name="WEPAuthMode" val="2"/>
                <DM name="WEPLevel" val="1"/>
                <DM name="WEPKeyIndex" val="1"/>
                <DM name="WPAEncryptType" val="2"/>
                <DM name="WPAAuthMode" val="0"/>
                <DM name="11iEncryptType" val="2"/>
                <DM name="11iAuthMode" val="0"/>
                <DM name="WPAGroupRekey" val="0"/>
                <DM name="WPAEAPServerIp" val="192.168.1.1"/>
                <DM name="WPAEAPSecret" val="12345678"/>
                <DM name="MaxUserNum" val="32"/>
                <DM name="VapIsolationEnable" val="0"/>
                <DM name="BasicEncryptionModes" val="0"/>
                <DM name="LocalSetEnable" val="1"/>
                <DM name="SimCardFileId" val="43"/>
        </Row>
……

最后,修改超级管理员账号密码,默认的不好记也不安全,所以可以自定义账号密码:

##示例##
#更改超级管理员账号为jjj
sendcmd 1 DB set DevAuthInfo 0 User jjj

#更改超级管理员密码为444
sendcmd 1 DB set DevAuthInfo 0 Pass 444

#保存
sendcmd 1 DB save

至此设置完毕,光猫就真正属于我们自己了,具体的界面设置,后面再做研究。