用TTL电平串口线访问嵌入式系统

家庭宽带网关为家庭用户提供了宽带上网、IPTV和电话业务。然而,在使用中用户会遇到各种问题,需要使用管理账号和密码进行设置。虽然,现在的安装过程很简单,全部是通过下发配置即可完成,但是,下发的配置不一定满足具体特定用户的需要。如果需要自己定制或维修工上门检测,都需要使用管理账号和密码。但是电信的策略是:在安装完成后,管理平台会通过远程控制改变密码,以防用户随意改变配置。这样做实际上对产品的返修也会带来一些问题。对于生产厂家,在加强安全性的同时,也必须考虑到返修问题。因此必须有一条途径可以进入系统,从而实现维修和测试。

光猫本身都有一个嵌入式操作系统,进入这个嵌入式操作系统就可以解决所有的配置问题。当然,进入嵌入式操作系统本身需要账号和密码,但是这一账号和密码不是电信管理平台可以远程随意更改的。如果随意更改了每个光猫的root账号的密码,那么,厂家根本就不能做维修了。譬如:F420/F460的嵌入式操作系统的超级用户root的密码就是root。这也是为了维修方便。
那么,我们如何进入嵌入式操作系统?如何修改配置?如何查出管理账号密码?如何修改上网数量限制?如何去除远程操控?如何修改桥接或路由的配置?如何创建定制的WAN连接?只要能进入嵌入式操作系统,一切都迎刃而解了。


本人曾在百度文库写过一篇文章,文中提到的针对F420的方法在当时是完全可行的。但是,自2012年8月份中兴光猫F420版本升级后就被更改了系统数据,原来的方法全部失效了。

  1. 光猫的telnet服务被关闭了。
  2. WEB超级账户admin 和密码gpon 已被清除。
  3. http://192.168.1.1/web_shell_cmd.gch直接打开命令页面的方法也失效。

更可悲的是本人原来已经获得的管理员密码,在一次点击了“结束维护”之后,就再也无法进入了。“结束维护”就意味着要电信管理平台更新管理密码。这就是TR069的功能。真悔恨当时没有立即删除TR069!

痛苦之余,想起了拆机破解(这不是破坏,而是用TTL串口线接入)。虽然用TTL串口接入是最有效的方法,但这需要专用的TTL线(不是RS232串口线,电平不一样的)。而且用TTL线需要十分小心,电路板上有一个5针的接口,但只需要用中间的3个针脚,特别需要注意的是接地线千万不能错。本人在反复试验中曾烧毁了2根USB转TTL连线(每根8元)。我的原则是最好不要拆机,万不得已才拆机。

一、简单的方法:

如果只需要知道管理员账号和密码,然后自行关闭TR069,并改为桥接方式。只需要在浏览器地址栏输入http://192.168.1.1/manager_dev_config_t.gch。(注意这和以前的路径不一样了,厂家更改了方法)
在以下画面,点击“导出配置“,导出的文件是config.bin。

QQ截图20140216152208

面对config.bin这个文件,需要一个小工具软件才能解开。可在这里下载这个小工具:

下载地址

解压后运行OffzipPackzip UI.exe (只能在xp上运行,我的64位Win7不能运行)导入bin后会分解出6个.dat文件:

QQ截图20140216144717

可以用专业的文本编辑工具打开这些文件。用专业工具只是便于编辑,看起来整齐。我们的目的只是找出telecomadmin对应的密码。最简单的方法是直接用记事本逐个打开找(我是打开了第一个文件),自动寻找telecomadmin,看到有一条是telecomadminxxxxxxxx。这就是管理员密码了。后面再要做改桥接和去除TR069之类的事就由自己做主了。

二、专业的方法:

拆开F420的上盖,找到TTL接口(为了便于描述,桌面放置电路板,使TTL接口在右侧),右上角大电容旁的5个针脚从上至下分别是:Vcc+3.3,TxD,RxD,GND,BL(切记千万不要接Vcc,否则肯定烧毁TTL线芯片)
USB转TTL接线板或封闭连线,需要安装好驱动程序。

QQ截图20140216152409

QQ截图20140216152429

接地GND一定要正确,接受和发送可以互换试验。千万不要接错!!!

QQ截图20140216152510

只需接上TxD,RxD,GND三根线就可以,波特率设置为115200 ,然后出现登入窗口画面,在此画面输入账号root,输入密码也是root,即可登入。

QQ截图20140216152541

QQ截图20140216152547

TTL连接上后可用sendcmd命令修改限制连接数,关闭tr069,开启telnet服务等等。 登入后输入sendcmd 1 DB p UserInfo 可获得管理密码(注意大小写),看以下实录:

root@F420:~ # sendcmd 1 DB p UserInfo
<Tbl name="UserInfo" RowCount="4"> 
            <Row No="0"> 
            <DM name="ViewName" val="IGD.UserIF.UserInfo1"/>             
            <DM name="Type" val="1"/>             
            <DM name="Enable" val="1"/> 
            <DM name="Username" val="telecomadmin"/> 
            <DM name="Password" val="telecomadmin64127403"/>  (这是管理密码)
            <DM name="Right" val="1"/>         </Row> 
            <Row No="1"> 
            <DM name="ViewName" val="IGD.UserIF.UserInfo2"/>
            <DM name="Type" val="1"/>
            <DM name="Enable" val="1"/> 
            <DM name="Username" val="useradmin"/> 
            <DM name="Password" val="js74y"/>  (这是用户密码)
            <DM name="Right" val="2"/>         
            </Row> 
            <Row No="2"> 
            <DM name="ViewName" val=""/>
            <DM name="Type" val="1"/>
            <DM name="Enable" val="0"/>
            <DM name="Username" val=""/>
            <DM name="Password" val=""/>
            <DM name="Right" val="1"/>
            </Row> 
            <Row No="3"> 
            <DM name="ViewName" val=""/>
            <DM name="Type" val="0"/>
            <DM name="Enable" val="0"/>
            <DM name="Username" val=""/>
            <DM name="Password" val=""/>
            <DM name="Right" val="0"/>
            </Row>
            </Tbl>

查看端口开启情况:

root@F420:~ # sendcmd 1 DB p PortControl 
<Tbl name="PortControl" RowCount="8">
            <Row No="0"> 
            <DM name="ViewName" val="IGD.PortControl1"/>
            <DM name="PortValue" val="80"/>
            <DM name="PortEnable" val="0"/>
            </Row>
            <Row No="1"> 
            <DM name="ViewName" val="IGD.PortControl2"/>
            <DM name="PortValue" val="21"/>
            <DM name="PortEnable" val="1"/>
            </Row>
            <Row No="2"> 
            <DM name="ViewName" val="IGD.PortControl3"/>
            <DM name="PortValue" val="22"/>
            <DM name="PortEnable" val="1"/>
            </Row>
            <Row No="3"> 
            <DM name="ViewName" val="IGD.PortControl4"/>
            <DM name="PortValue" val="23"/> 
            <DM name="PortEnable" val="0"/>  (发现Telnet所用端口被关闭)
            </Row>
            <Row No="4"> 
            <DM name="ViewName" val="IGD.PortControl5"/>
            <DM name="PortValue" val="443"/>
            <DM name="PortEnable" val="0"/>
            </Row>
            <Row No="5"> 
            <DM name="ViewName" val="IGD.PortControl6"/>
            <DM name="PortValue" val="161"/>
            <DM name="PortEnable" val="1"/>
            </Row>
            <Row No="6"> 
            <DM name="ViewName" val="IGD.PortControl7"/>
            <DM name="PortValue" val="58000"/>
            <DM name="PortEnable" val="1"/>
            </Row>
            <Row No="7"> 
            <DM name="ViewName" val="0"/>
            <DM name="PortValue" val="0"/>
            <DM name="PortEnable" val="0"/> 
            </Row> 
            </Tbl>

输入sendcmd 1 DB set PortControl 3 PortEnable 1可启用telnet端口

root@F420:~ # sendcmd 1 DB set PortControl 3 PortEnable 1
<Tbl name="PortControl" RowCount="8">
            <Row No="0"> 
            <DM name="ViewName" val="IGD.PortControl1"/>
            <DM name="PortValue" val="80"/>
            <DM name="PortEnable" val="0"/>
            </Row>
            <Row No="1"> 
            <DM name="ViewName" val="IGD.PortControl2"/>
            <DM name="PortValue" val="21"/>
            <DM name="PortEnable" val="1"/>
            </Row>
            <Row No="2"> 
            <DM name="ViewName" val="IGD.PortControl3"/>
            <DM name="PortValue" val="22"/>
            <DM name="PortEnable" val="1"/>
            </Row>         <Row No="3"> 
            <DM name="ViewName" val="IGD.PortControl4"/>
            <DM name="PortValue" val="23"/>
            <DM name="PortEnable" val="1"/>  (这里的值改变了) 
             </Row>         <Row No="4"> 
            <DM name="ViewName" val="IGD.PortControl5"/>
            <DM name="PortValue" val="443"/>
            <DM name="PortEnable" val="0"/>
            </Row>         <Row No="5"> 
            <DM name="ViewName" val="IGD.PortControl6"/>
            <DM name="PortValue" val="161"/>
            <DM name="PortEnable" val="1"/>
            </Row>         <Row No="6"> 
            <DM name="ViewName" val="IGD.PortControl7"/>
            <DM name="PortValue" val="58000"/>
            <DM name="PortEnable" val="1"/>
            </Row>         <Row No="7"> 
            <DM name="ViewName" val="0"/>
            <DM name="PortValue" val="0"/>
            <DM name="PortEnable" val="0"/>
            </Row> </Tbl>

查出使用telnet的权限

root@F420:~ # sendcmd 1 DB p TelnetCfg
<Tbl name="TelnetCfg" RowCount="1">
            <Row No="0"> 
            <DM name="TS_Enable" val="0"/>
            <DM name="Wan_Enable" val="0"/> 
            <DM name="Lan_Enable" val="0"/>  (发现不能通过LAN使用telnet)
            <DM name="TS_Port" val="23"/>
            <DM name="TS_UName" val="root"/> (找到telnet的用户名是root) 
            <DM name="TS_UPwd" val="Zte521"/>  (telnet的密码是Zte521) 
            <DM name="Max_Con_Num" val="2"/> (同时telnet连接数是2个)
            <DM name="ProcType" val="0"/>
            <DM name="ProcPonLinkUp" val="1"/>
            <DM name="ProcFlag" val="0"/>
            </Row> </Tbl>

为了改变上面的telnet设置,进行以下操作即可满足要求:

root@F420:~ # sendcmd 1 DB set TelnetCfg 0 TS_Enable 1
<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="0"/>
            <DM name="TS_Port" val="23"/>
            <DM name="TS_UName" val="root"/>
            <DM name="TS_UPwd" val="Zte521"/>
            <DM name="Max_Con_Num" val="2"/>
            <DM name="ProcType" val="0"/>
            <DM name="ProcPonLinkUp" val="1"/>
            <DM name="ProcFlag" val="0"/>
            </Row> </Tbl>
root@F420:~ # sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1 
<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="TS_UName" val="root"/>
            <DM name="TS_UPwd" val="Zte521"/>
            <DM name="Max_Con_Num" val="2"/>
            <DM name="ProcType" val="0"/>
            <DM name="ProcPonLinkUp" val="1"/>
            <DM name="ProcFlag" val="0"/>
            </Row>
            </Tbl>
root@F420:~ # sendcmd 1 DB set TelnetCfg 0 Max_Con_Num 5
<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="TS_UName" val="root"/>
            <DM name="TS_UPwd" val="Zte521"/>
            <DM name="Max_Con_Num" val="5"/>  (改变了这一条数据) 
            <DM name="ProcType" val="0"/>
            <DM name="ProcPonLinkUp" val="1"/>
            <DM name="ProcFlag" val="1"/>
            </Row> 
            </Tbl>
root@F420:~ # sendcmd 1 DB set TelnetCfg 0 TS_UPwd abcd1234
<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="TS_UName" val="root"/>
            <DM name="TS_UPwd" val="abcd1234"/>  (改变了这一条数据)
            <DM name="Max_Con_Num" val="5"/>
            <DM name="ProcType" val="0"/>
            <DM name="ProcPonLinkUp" val="1"/>
            <DM name="ProcFlag" val="0"/>
            </Row>
            </Tbl>
root@F420:~ # sendcmd 1 DB set TelnetCfg 0 ProcFlag 1
<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="TS_UName" val="root"/>
            <DM name="TS_UPwd" val="abcd1234"/>
            <DM name="Max_Con_Num" val="2"/>
            <DM name="ProcType" val="0"/>
            <DM name="ProcPonLinkUp" val="1"/>
            <DM name="ProcFlag" val="1"/>(改变了这一条数据) 
            </Row>
            </Tbl>
root@F420:~ # sendcmd 1 DB save  (千万不能忘了保存数据) 
root@F420:~ # reboot  (重启生效)

现在你可以通过telenet登入了。不需要TTL串口线了。
QQ截图20140216154314
Login: root 
Password: abcd1234 
BusyBox v1.01 (2012.09.06-08:34+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. / # 
现在可以输入各种命令啦!  
修改telecomadmin对应的密码:

sendcmd 1 DB set UserInfo 1 Password 123456 

 
禁用TR069远程控制: 

sendcmd 1 DB set MgtServer 0 Tr069Enable 0 (注意空格和大小写) 

 
修改电脑上网的数量限制: 

sendcmd 1 DB set CltLmt 8 Max 99 sendcmd 1 DB set CltLmt 8 Enable 0

  
修改完毕一定要保存: 

sendcmd 1 DB save 

以上是本人的实践经验。这对目前的最新版F420是有效的,本人没有在F460上测试,估计应该也是一样的。F460只是增加了无线网络而已。你可以试试。

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 71 queries in 0.459 seconds