烽火 HG5140A 光猫获取管理员权限及 TR069 组内网

  实在受不了华数的宽带了,单连接限速 1mbps 的限制始终没有好办法绕过,搭建隧道连回学校实验室的体验太差了,遂办了电信的 129 融合套餐,给了 300mbps/30mbps 的带宽,最重要的是有了两条电信宽带,终于可以尝试利用 TR069 组内网。

  所谓 TR069 是光纤入户后的一个用于承载语音 + 管理的 VLAN,而整个杭州甚至浙江地区的所有电信宽带用户这个 VLAN 内理应都是互通的,且可以达到一个极高的带宽。杭州地区光纤进来后有 3 个 VLAN,VLAN-41 用于 PPPoE 拨号上网,VLAN-43 用于 IPTV,VLAN-46 则是这个管理 VLAN。

获取管理员权限

  要利用 TR069 首先需要获得光猫的管理员权限,才能把 TR069 网段桥接出来后利用 WireGuard 搭建隧道,送的光猫配置还比较高,是烽火的 HG5140A,AcWiFi 有拆过,详细配置和拆机可以见这个帖子,经过简单的搜索顺利找到提取密码的办法。当然也走过弯路,看到拆机十分简单,以为拆机利用 TTL 线是最简单暴力的方法,万万没想到这个机器的 u-boot 还设置了密码,据说是 hsan 下次有机会试试。要获取管理员权限,需要两步:①通过某种方式登录系统,这里提供了 TTL线 /Telnet 两种方法,②通过系统的漏洞或者预留的接口获取管理员密码。

TTL 线法

  这里需要一根硬件 TTL 串口线,拆机两个螺丝很轻松,也没有保修贴之类的东西,正常开机启动在内核载入串口驱动后,TTL 就不会输出了,进入 u-boot 还需要密码,研究了一下。

  1. 波特率 115200,不行核对 TX/RX 是否接反或者换别的波特率
  2. 重启,按回车中断引导
  3. 输入密码 hsan
  4. printenv 命令,应该能看到 console=off
  5. setenv console on
  6. saveenv
  7. menu 然后选择 reboot 重启
  8. 用户名 ctuser,密码 ctuser 登录

Telnet 法

  1. 打开 http://192.168.1.1:8080/cgi-bin/luci,利用机器背后的密码登录普通用户账号
  2. 开启 telnet:http://192.168.1.1:8080/cgi-bin/telnetenable.cgi?telnetenable=1&key=AABBCCDDEEFF,这里要把 AABBCCDDEEFF 替换成机器背后的 MAC 地址,成功应该会提示 "telnet 开启"
  3. telnet 登录光猫:用户名 telecom,通用密码 nE7jA%5m,不对的话试试用户名 telnetadmin、密码 FH-nE7jA%5mFH-nE7jA%5mDDEEFF,这里要把 DDEEFF 替换成机器背后的 MAC 地址后 6 位,这组用户名密码是通过这两个命令拿到的:cfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetUserNamecfg_cmd get InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.TelnetPassword,当然这不是重点

获取管理员密码

  • 方法 A:执行两个命令:load_cli factoryshow admin_pwd
  • 方法 B:直接 cat /var/InternetGatewayDevice/DeviceInfo/X_CT-COM_TeleComAccount/value.conf
  • 再放个 root 密码备用:Fh@DDEEFF,这里要把 DDEEFF 替换成机器背后的 MAC 地址后 6 位

网上买的光猫换省份

1
2
3
4
# 查看可用的省份
ls /fhrom/preconfimg/
load_cli factory
load preconfig Zhejiang

桥接 TR069 网段

  1. 利用管理员账号 telecomadmin 和上一步获取到的密码,登录 http://192.168.1.1:8080/html/login.html
  2. 网络 -> 宽带设置记录下 TR069 的 VLAN 和 802.1P 优先级
  3. 新增一个 WAN 连接,VLAN 和 802.1P 用上一步记录下的,其他可以参考:
    • 封装类型:PPPoE
    • 连接模式:桥接
    • 业务类型:其它
    • LAN 端口绑定,选一个没有使用的端口
  4. 如果你的路由器端口紧张,也可以尝试使用 VLAN 绑定功能,把上网和 TR069 用 VLAN 分开,然后用一根网线连到路由器,我在另一款旧的光猫上实验有 bug,路由器的 TR069 会获取到光猫分配到 IP 地址,因此这个方法是否可行还有待证实
  5. 路由器上对应的端口配置成 DHCP 客户端,另外把网关权重设高一点,这样默认路由还是会从 PPPoE 走,杭州地区应该能获取到 15.x.y.z 开头的 IP
  6. 两边 TR069 获取到的可能不是同个网段,我一边是 15.75.0.0/19 的网段,另一边是 15.77.32.0/19 的网段,因此还要手动做一下路由,每次光猫断电这个 IP 都会变,因此你可以把整个 15.0.0.0/8 的网段都从 TR069 接口走,但是考虑到 15.0.0.0/8 的网段在公网上是实际存在的,因此还是尽量缩小网段比较好,甚至直接做主机路由,只要不断电维护起来工作量应该没那么大

搭建 WireGuard 隧道

  其实没啥好说的了,OpenWrt 22.03.2 已经带了非常强大的界面了,MTU 可以设置成 1400,这样速度会比默认的 1320 快 1mbps 左右,再高也没有试过了。目前遗憾的是,旧光猫用的是 3.0 网关,只有一个千兆口,且 VLAN 绑定功能有 bug (试过几个 3.0 都这样),因此目前 TR069 只能跑百兆口,好处是可以完全跑满,重要的是非常稳定,下次有机会咸鱼找一个新光猫换上试试最快能跑多少。实测 TR069 杭州内部可以跑满千兆,但是不稳定,但已经比公网 30M 带宽强太多。

中兴 F612 光猫

  1. telnet 192.168.1.1,用户名 root,密码 Zte521
  2. 获取密码数据库:sendcmd 1 DB p UserInfosendcmd 1 DB p DevAuthInfo
  3. 备用:
  • 列出所有数据库:sendcmd 1 DB all

中兴 ZXHN F7010C 光猫

  1. 拔掉光纤
  2. 捅 Reset 按钮,直到自动重启,会自动进入工厂模式,密码会被重置为 nE7jA%5m,杭州地区实测不会丢失配置,其他地区可以注意保存,宽带识别码
  3. 使用这个 zteOnu 工具,一键永久开启 Telnet,./zteOnu -telnet
  4. 断电,插上光纤,重启
  5. 网络应恢复正常,同时可以 telnet 进入光猫,使用 Telnet 默认用户名密码信息 (user: root, pass: Zte521) 登录
  6. 不要再尝试解密配置文件了,中兴修改了加密协议,目前全网找不到解密方案
  7. 换个思路,直接修改管理员密码:sidbg 1 DB set DevAuthInfo 0 Pass 123456

参考文献