搬了新房近一年,终于弄好了家里的网络部署,为什么拖拖拉拉搞了这么久?对于一个曾经从事过六年骨干网运维管理的工程师,个中原因真是一言难尽……

背景

奇葩的开放商将屋内弱电箱的位置设计在客厅靠近中间的墙上(下图中红色五星位置),而我需要接入网络的信息点位置如下图,绿色笑脸为电视(LeTV)、各种盒子、Raspberry Pi、路由器、家庭NAS存储等需要以太网有线接入的位置;蓝色网络信号为家里需要无线Wifi覆盖的地方,便于手机、iPad和电脑的随处使用。


因为这个弱电箱预埋的接入线路为光纤入户,改变位置的施工容易弄断光纤;而屋外过道中的吊顶又完全封死,也没有办法在屋外重新熔接入户光纤另行布放。

纠结之处

因此,这个弱电箱的位置是不能改变了。考虑到无线信号的稳定性(客厅到两间卧室的整面墙为石材装饰,信号穿透性很差),以及家里随处使用网络的方便性,我规划的家庭网络部署方案为:

  • 从弱电箱配线至每个房间的每个信息点;
  • 用部署在弱电箱的路由器/电信光猫本身拨号,各房间的以太网端口可以DHCP自动获取内网IP、并NAT地址转换上网;
  • 如果哪个房间需要Wifi,直接将配置为AP模式的无线路由器接入到对应的以太网端口即可(无线桥接),无线路由器无需做分配地址、拨号等其他设置。

想要实现这个方案,问题也随之而来:

首先,为了弱电箱外观好看(谁叫它在客厅那个位置呐),我当时买的Schneider弱电箱内部空间偏小,即使放入中国电信最小的光猫——华为HG8120C,也仅能勉强再挤一台小尺寸的网络设备在里面。


其次,直接配线至每个房间的每个信息点,需要在弱电箱内放置一台具备足够端口数(6~8端口)的网络设备。直接在光猫下挂一台有线路由器本来是最经济可行的方式,可惜小尺寸的路由器端口数都太少,如果不能把所有信息点都用有线接入进来,仅靠Wifi覆盖来解决,就失去了部署方案的稳定性与灵活性。家用交换机通常都有8个端口,尺寸迷你、价格便宜,如下图我最终选择的朗科Netcore NS108D,在京东购买才三十几元,差不多只有光猫的一半大小。

如此一来,就要求交换机之上的电信光猫具备拨号、路由等能力。从规格来讲,华为HG8120C其实有蛮多功能的,可惜中国电信控制欲太强😂,ChinaNet“我的e家”宽带业务配套的光猫全为中国电信定制机,运行定制固件、没有超级用户及密码、关闭telnet命令行访问,用普通用户Web登录上去,除了能完成LOID注册外,仅能查询一些基本的业务参数,没有办法修改光猫缺省的桥接运行模式。多次联系电信的维护人员上门,他们也无法完成这些调整。

当然中国从来都是人多好办事的😄……通过在电信工作的老同学,安排工程师远程在网管系统上操作,拨号、路由统统搞掂,还短信我了超管帐号密码!本来也就没有后面的事情了,结果,使用一段时间才发现,内网中只能有4台终端(内网IP地址)可以正常访问互联网,其他终端能连入内网,但是无法访问外网!原来这也是中国电信的缺省限制,要修改,只能完全破解才行,即使有telecomadmin的超管帐号,也是没法修改这个参数的。


我的折腾之旅从此开始!

失败的破解方法

虽然宽带技术网论坛、百度文库、个人博客等地方有不少的文章都详细介绍了破解步骤与破解方法,但由于版本的问题,均已失效!华为和电信真是好基友,不断升级固件,在bugfix和新增功能的同时,用尽方法来限制用户不能随意更改设备配置。可是这设备是我买的啊,这宽带服务我也是缴费使用,凭什么限制我?我爱怎么用就该怎么用,入网用户协议上并未规定这些限制!气得我差点要投诉到工信部去!然并卵,还是尽快倒腾技术上的解决办法才行!

言归正传,说回破解!既然定制固件限制了telnet,那么是否可以从其他方式获取命令行的访问,这样是否网友们过去的破解方案就变得可行了呢?我们都知道,对于许多嵌入式产品,为了在生产时方便烧写firmware及出厂测试、售后维护,会在电路板上预留一个调试接口。万能的网友确实在HG8120C上发现了这个调试口,并分析出它就是一个TTL串口:


  • 1脚—是一根很细的导线,带一个电阻,一般是22R或33R,是信号线,一般是TX或RX
  • 2脚—正面没见到连接,可能是空脚,而且90%以上是空脚,为啥待会解释
  • 3脚—导线较粗,被挡住的部分看不清楚,但可以推断是电源VCC,可以上电量一下电压
  • 4脚—GND,敷铜层采用十字连接,大面积敷铜连接,是GND没有错的
  • 5脚—细导线,加一个电阻,信号线,同1脚,可能是TX或RX

以上是引用某位网友的分析(抱歉,原始链接我忘记了),经过我确认的ttl连接线序已在上图中注明。

有了这个串口的线序,稍微动动烙铁焊上插针,用一块现成的FTDI板子做TTL-USB转换,就可以在电脑上通过串口工具访问命令行了。串口的连接配置为:

波特率:115200;数据位:8;奇偶校验:none;停止位:1

为什么说它是一个失败的破解方式呢?因为这个被称为华为WAP的命令行环境登陆后,权限不足,支持的命令较少。新版固件如果想要su,会提示一个challenge码,要求输入这个challenge码换算的verfication码才可验证通过……华为真是挖空心思堵用户啊!

网上也有不少网友在尝试破解这个没有公开的challenge-verification code规则,更有人声称成功破解了规则并制作出算号软件。出于路由器破解灰色产业链的利益考虑,在网上无法找到算号软件,我也没有研究明白到底用的什么算法,破解路由器这件事情就只能放下来了,凑合着用!之所以把这个失败的破解方式专门写一写,一来是因为它很靠谱,从硬件入手,简单粗暴,只是受限于su权限,但从ttl串口进入的WAP环境和从IP telnet登录的运行环境是一致的;二来,获取su权限的challenge-verification code正是破解、修改路由器的关键,半年之后我终于从活雷锋网友处获得了这个算号软件,从而破解成功!

不过,考虑到大多数网友的硬件动手能力不强,我下面介绍的破解方式是通过纯软件的操作来实现的,不用动烙铁焊板子。

如何成功破解最新固件的华为HG8120C光猫

好了,前面都是废话!对于可以看见这篇博客的人来说,最需要的是正确的破解姿势😄😄💪

一、破解方法简述

  • 第一步:通过华为ONT组播版本配置工具使能光猫的telnet;
  • 第二步:telnet登录光猫,运行backup cfg命令备份hw_ctree.xml配置文件(电脑需运行TFTP服务);
  • 第三步:通过华为光猫配置文件加解密工具解密hw_ctree.xml文件,获取telecomadmin超级管理员密码;
  • 第四步:在telnet会话中su,通过华为光猫SU密码计算器计算验证码,获权后运行restorehwmode.sh脚本,直接将光猫恢复为华为官方版固件(非电信定制版);
  • 第五步:用缺省telecomadmin密码登录光猫的web管理界面,将原hw_ctree.xml备份文件(第二步备份的配置文件)再更新回光猫;
  • 第六步:用第三步获得的telecomadmin帐号密码登录光猫,想怎么改配置就怎么改!!

在操作熟练的情况下,破解耗时不会超过10分钟!

二、适用版本

由于手上没有其他版本和型号的华为光猫,我这台2015年1月购买的HG8120C版本如下:

1
2
3
4
hardware version		= 393.E
main software version = V3R013C10S118
standby software version = V3R013C10S118
uboot version = 2010.03

如您在其他版本和型号的华为光猫上成功破解,还望留言告知!

三、破解工具

需要使用的相关工具软件如下,皆为Windows版:

  • 华为ONT组播版本配置工具
  • tftpd
  • 华为光猫配置文件加解密工具
  • 华为光猫SU密码计算器

下载地址:百度云盘

四、详细破解步骤

前面破解方法简述中已对操作的主要内容和目的进行了介绍,下面来详细说一说具体怎么操作。

1、使能光猫的telnet

首先将PC电脑的IP地址设置为光猫的同一网段,我修改为路由模式的HG8120C缺省网段为192.168.1.0/24。用网线将电脑连接到光猫的LAN1/LAN2口,保证电脑与光猫通信正常(可以用ping来测试到192.168.1.1的连通性),并拔掉光猫的光纤。

运行华为ONT组播版本配置工具,选择“维修使能”,并选择连接到光猫的网卡,接着点启动即可。


下面的“发送进度”进度条会开始有进度,这时候观察你的光猫指示灯(注意:一直保持光纤断开状态,切记不要连接光纤!),刚开始光信号灯会是红灯闪烁,等到光信号灯不亮,LAN1、LAN2、网络E/G三个灯长亮,这时即可按下工具的停止按钮,关闭工具。此时光猫将自动复位重启,之后就可以通过命令行的telnet工具登录了。虽然没有抓包分析,但是我猜测这个工具是通过组播广播特定的报文,让光猫进入维修状态(使能telnet)。而且,telnet服务只对内网IP访问有效,WAN侧无法连接,所以也无需担心使能telnet后,其他人来搞破坏。

2、备份hw_ctree.xml配置文件

telnet192.168.1.1访问光猫,用root:admin缺省用户名、密码登录,这时便进入了华为WAP环境的普通用户模式。在电脑上运行tftpd启动TFTP服务,然后在telnet中使用backup cfg命令备份出自己光猫的配置文件 hw_ctree.xml。

1
backup cfg by tftp svrip 192.168.1.2 remotefile hw_ctree.xml

参数svrip后的IP地址为电脑本机地址,备份的hw_ctree.xml文件可以在tftpd软件的当前目录下找到。

BTW,如前所述这个telnet服务只对内网访问有效,我觉得没必要修改root密码,如果不放心,可以通过命令set userpasswd root来重新设置。

3、解密hw_ctree.xml文件

备份hw_ctree.xml文件有两个目的:首先,在恢复到华为版固件模式后便于导入,不用再去配置LOID、VLAN等业务信息,这些信息在电信版固件模式下是通过新设备注册流程,网管系统远程自动下发的,自己配置太繁琐。其次,有了这个配置文件并解密后,可以查看自己的telecomadmin超级管理员帐号密码,这个密码也是网管系统在注册时随机生成的,一旦注册后就不再是缺省密码了。

其实这个叫hw_ctree.xml的文件并不是一个简单的xml文件!它是xml经过gzip压缩后再用aescrypt2算法加密生成的(华为做这事儿得多蛋疼啊😂😂😂)。如果想要对其进行解密,首先需要将文件名修改为hw_ctree.xml.gz,然后再运行华为光猫配置文件加解密工具做aescrypt2解密,这样便得到了一个解密后的gz文件。随便用一个支持gzip解压缩的工具软件,即可解压出xml明文配置文件。用文本编辑器打开后,搜索telecomadmin便可看见它的密码。

4、恢复华为官方版固件模式

继续在telnet输入su命令以进入WAP环境的超级用户模式,此时命令行将提示一个challenge code,运行华为光猫SU密码计算器输入这个challenge计算verification code,输入后即通过验证。


进入超级用户模式后,只需要运行restorehwmode.sh脚本,便可恢复至华为官方版固件,解除电信固件的管理限制。

注意:一旦运行该命令,将清空当前光猫的所有配置。重启复位后,虽然已运行华为官方固件,但光猫配置为出厂缺省状态。如果第2步的配置文件备份没有成功,将会非常麻烦!

5、还原光猫配置

恢复为华为版固件的光猫缺省配置,与电信版有些不同,需要再次修改电脑的IP地址为192.168.100.0/24网段,才能使用浏览器访问192.168.100.1光猫的Web管理后台。使用telecomadmin的缺省密码nE7jA%5m即可登录。


然后选择“系统工具—配置文件”,上传第二步备份的配置文件,从而恢复所有业务配置。光猫在上传成功后将自动复位。

注意:这个配置文件是通过tftp备份出来的原始文件,即加密的配置文件。如果需要修改一些配置后再上传更新,应在修改完xml明文文件后,重新gz并加密。

6、成功破解

复位后的光猫,既恢复了之前的业务配置,又切换到了华为版固件,可以随意蹂躏!😄😄😄

只是,此处还需注意两点:首先,再次修改电脑的IP地址为192.168.1.0/24网段,因为此时的配置已恢复,光猫的地址也变回192.168.1.1。其次,telecomadmin帐号登录时的密码也已恢复,只能在第三步解密的配置文件中读取。


上图为我整理的华为版光猫固件导航菜单,一眼即可发现多了很多功能,当然也包括我需要的——“终端个数限制”的修改!!

至此,全部破解完毕!

后记

弄好网络后,我在内网中接入了一台Raspberry Pi,并配置好基于PPTP的VPN服务;又在光猫上设置了VPN 端口映射与3322.org的DDNS服务;以及个人域名到DDNS域名的CNAME解析。这样,便开通了直拨家庭网络的个人VPN,既方便自己出门在外时访问内网的Apple Timecapsule网络存储,又可以跟加州的同学对开VPN,他看国内视频、我访问被墙的各种资源。

如您认为此文对您有所帮助,请不要忘记留言让我知道! ✌️