zteOnu 设备调试全攻略:三步打开中兴光猫工厂模式与永久 Telnet,网络管理效率翻倍
zteOnu 设备调试全攻略:三步打开中兴光猫工厂模式与永久 Telnet,网络管理效率翻倍
【免费下载链接】zteOnuA tool that can open ZTE onu device factory mode项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu
一台被运营商锁死的中兴光猫,想开 Telnet 做设备调试,默认连入口都找不到。zteOnu 这个免费开源工具,把整套流程压成一条命令,让网络管理从此不必再求人。本文从一次真实故障讲起,先拆解它的工作原理,再给出可直接照抄的命令、批量脚本和排错顺序。
深夜机房的七次 Login incorrect
那天凌晨,某分支机构的网关设备集体掉线。原因很快定位:中兴 ONU 的 Telnet 服务是关闭的,想进去看状态,得先"撬开"工厂模式——而这个入口藏在 8080 端口的加密接口后面,普通管理页面根本看不到。
手动尝试七次登录全部失败后,我找到了 zteOnu。它的定位非常单一:通过中兴设备的webFac接口,把工厂模式和永久 Telnet一次性搞定。后续所有排障动作,都建立在它提供的这条通道上。
一句话总结它的价值:不用再去翻运营商隐藏的调试页面,不用每次重启设备后重新配置,一条命令拿到最高权限,而且 Telnet 重启后依然有效。
先摆结论:它到底替你做了什么
工厂模式链路,拆开是四步握手
工具内部并非"发一条请求"那么简单,而是按顺序走完一套加密流程:
- 激活会话:先访问 ONU 的 HTTP 服务(默认
8080端口),再向webFac提交SendSq.gch,把设备拉到"可调试"状态; - 获取随机数与密钥:携带当前秒级时间戳请求
SendSq.gch?rand=N,设备会返回空响应(老版本)或newrand=参数(新版本),据此切换两套不同的 AES 密钥池; - 加密认证:用户名密码拼进
CheckLoginAuth.gch命令,用上一步的密钥做 AES-ECB 加密后提交,200 返回即通过; - 换发凭证:请求
FactoryMode.gch?mode=2,解密响应后就能拿到一组 Telnet 登录用的临时账号密码。
整个过程自带重试机制:失败最多重试 10 次,每次间隔 500 毫秒,网络抖动时也能自行恢复。
永久 Telnet 的秘密:改写数据库再重启
拿到临时凭证后,工具会连接设备的 Telnet(默认 23 端口),依次执行一组sendcmd数据库指令:
TelnetCfg 0 Lan_Enable 1——打开 Telnet 使能TSLan_UName root/TSLan_UPwd Zte521——写入固定账号密码Max_Con_Num 3/InitSecLvl 3——放宽连接数与安全级别DB save——落盘保存reboot——重启设备让配置生效
重启之后,用root / Zte521就能随时登录,这就是"永久"的含义。
新旧两种方法的分水岭:一道 MAC 校验
这是 zteOnu 最容易踩坑、也最值得了解的部分。老方法直接复用抓包得到的固定密钥;而--new新方法会把本机网卡 MAC编码进SendInfo载荷再加密发送,设备端会恢复出客户端 MAC 并和白名单比对。
载荷本身是逆向工程的产物:46 字节按 12 组小端uint16排列,每组后跟两个零字节,MAC 的每个字节以 XOR 方式折进两组值里(info=12即 6 个 MAC 字节 × 2)。历史抓包样本对应的白名单 MAC 是00:07:29:55:35:57。
核心结论:设备只放行它认可的 MAC。要么用
--mac直接指定白名单 MAC,要么改网卡 MAC,要么换一台认可当前网卡 MAC 的设备。
从源码到跑通第一条命令
编译安装三步走
本机装好 Go 环境(1.16 及以上)后,照下面顺序执行:
git clone https://gitcode.com/gh_mirrors/zt/zteOnu cd zteOnu go build -o zteonu main.go sudo mv zteonu /usr/local/bin/验证是否装好:
zteonu version zteonu -h参数速查:一张表看懂全部开关
| 参数 | 简写 | 默认值 | 作用 |
|---|---|---|---|
--user | -u | telecomadmin | 工厂模式认证用户名 |
--pass | -p | nE7jA%5m | 工厂模式认证密码 |
--ip | -i | 192.168.1.1 | ONU 的 IP 地址 |
--port | 无 | 8080 | ONU 的 HTTP 端口 |
--telnet | 无 | false | 开启永久 Telnet(root / Zte521) |
--tp | 无 | 23 | 目标 Telnet 端口 |
--new | 无 | false | 启用新方法,载荷由网卡 MAC 派生 |
--iface | 无 | 第一个非回环网卡 | 指定读取 MAC 的网络接口 |
--mac | -m | 空 | 直接指定客户端 MAC,优先级最高 |
最常用的三条命令:
# 只开工厂模式,拿到临时 Telnet 账号密码 zteonu -u telecomadmin -p nE7jA%5m -i 192.168.1.1 # 工厂模式 + 永久 Telnet zteonu -u telecomadmin -p nE7jA%5m -i 192.168.1.1 --telnet # 自定义 Telnet 端口 zteonu -u telecomadmin -p nE7jA%5m -i 192.168.1.1 --telnet --tp 2323新方法必读:三种指定 MAC 的方式
# 自动取第一个非回环网卡的 MAC zteonu -i 192.168.1.1 --new # 指定某块网卡(如 en0)的 MAC zteonu -i 192.168.1.1 --new --iface en0 # 直接用白名单 MAC,覆盖网卡自动获取 zteonu -i 192.168.1.1 --new -m 00:07:29:55:35:57建议优先用第三种:已知可用的白名单 MAC 直接填进去,成功率最高。
从单台到一片:批量配置的模板与节奏
手动一台台敲命令太累,用一个循环脚本就能把几十台设备串起来:
#!/bin/bash # 批量配置:开工厂模式 + 永久 Telnet DEVICES=("192.168.1.1" "192.168.1.2" "192.168.1.3" "192.168.1.4" "192.168.1.5") USER="telecomadmin" PASS="nE7jA%5m" for device in "${DEVICES[@]}"; do echo "正在配置设备: $device" zteonu -u $USER -p $PASS -i $device --telnet --tp 2323 if [ $? -eq 0 ]; then echo " ✓ $device 配置成功" else echo " ✗ $device 失败,请检查连通性" fi sleep 2 # 给设备留出反应时间,避免请求过密 done echo "批量任务结束"配完之后别急着走,先做一轮验证:telnet 192.168.1.1 23用root / Zte521登录,执行sendcmd 1 DB p TelnetCfg确认使能项已打开;再跑sendcmd 1 DB p DevInfo看一眼设备状态。设备被误改导致断网时,也能顺着这条通道执行sendcmd 1 DB set WANCfg 0 Enable 1之类的恢复命令,把配置救回来。
报错别慌:四类高频问题的排查顺序
| 现象 | 大概率原因 | 处理顺序 |
|---|---|---|
| 连接超时 | IP 写错或网络不通 | 先 ping,再确认 8080 端口可达 |
| 认证失败(401) | 用户名或密码不对 | 核对默认组合,或向运营商确认 |
| 端口被拒 | 8080 / 23 未开放 | 用nc -zv IP 端口逐个探测 |
| 设备无响应 | 设备繁忙或死机 | 重启设备后重试,工具本身最多会自动重试 10 次 |
另外记住两个物理规律:能走有线就别用 Wi-Fi,能错峰就别挤在同一秒操作多台设备——这两条能显著降低"玄学报错"的概率。
工厂模式是把双刃剑:四条安全红线
打开工厂模式与 Telnet 之后,设备的攻击面明显变大。请把下面四条当成底线:
- 最小权限:只在需要调试时开启,用完及时关闭;
- 网络隔离:把光猫管理网段和业务网段分开,别暴露在公网;
- 改掉默认密码:
root / Zte521是公开组合,落地后尽快更换; - 动手前备份:先把原配置完整导出保存,任何一条
sendcmd写错都可能需要靠备份救场。
使用任何此类工具前,请先确认你拥有设备的操作授权,并遵守当地法规。企业环境务必先在测试设备上跑通,再推进到生产网络。
想改源码?先看懂这张代码地图
项目用 Go 编写、基于 cobra 命令行框架,结构相当清晰:
| 模块 | 职责 |
|---|---|
cmd/ | 命令入口与全部参数定义 |
app/factory/ | 工厂模式核心:四步握手、AES 密钥池、MAC 载荷派生 |
app/telnet/ | Telnet 登录、数据库改写、重启设备 |
utils/ | AES-ECB 加解密与 Base64 工具 |
version/ | 版本信息输出 |
想扩展的人可以从三处入手:给app/factory增加新的密钥池以适配更多固件版本;在app/telnet里追加自定义配置指令;或在cmd层增加批量导入导出功能。项目本身是免费开源的,遇到不支持的机型,改动的方向基本都在上面这几个包里。
收尾:先把一台设备跑通,再谈管理整片网络
回顾整条链路:一条命令拿临时凭证,一条命令落永久 Telnet,一个循环脚本管一片设备——这就是 zteOnu 给网络管理带来的实际收益。它不解决"要不要管理设备"的问题,只解决"怎么高效且可控地管理"的问题。
现在就可以动手:克隆仓库编译一个二进制,挑一台测试设备跑通工厂模式,再按本文的安全清单收紧配置。跑通第一台之后,你会发现后面每一台都只是复制粘贴。记得把文档和配置变更记录留好——工具给你效率,习惯给你安全。
【免费下载链接】zteOnuA tool that can open ZTE onu device factory mode项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考