尧图精选

华为HG8120C光猫超级密码获取实战:Telnet+HTTP API直连

🕒 发布时间:2026/10/2 4:08:03 📁 来源:尧图网络
1. 项目概述为什么HG8120C光猫的超级密码值得花30分钟去拿华为HG8120C是电信在2017—2020年间大规模铺货的FTTH终端设备至今仍有大量在网运行。它外观小巧、功耗低、稳定性好但出厂固件被深度定制——Wi-Fi设置锁死、DHCP不可关闭、桥接模式隐藏、IPTV VLAN无法手动配置甚至连“恢复出厂设置”都会重置为运营商预设参数。很多用户想自己组网、换路由器、做旁路软路由、调试IPTV组播或者单纯想把光猫从“智能网关”降级为纯粹的光电转换器即桥接模式第一步卡住的永远是那个写着“admin”的默认账号——它只能登录普通管理界面连“高级设置”里的关键开关都灰掉。而真正的超级管理员账户通常是root或telecomadmin拥有完整shell权限、可读写Flash分区、能修改bootargs、甚至直接刷写固件。这篇记录不是教你怎么“破解”而是还原一个真实场景下一名网络工程师如何在不拆机、不短接、不依赖第三方工具的前提下仅用一台笔记本网线基础命令行于2021年12月12日当天在一台实机HG8120C上成功获取root密码的全过程。核心关键词就三个华为HG8120C、Telnet、超级管理员密码——它们不是孤立存在而是一条技术链Telnet是通道HG8120C是载体超级密码是钥匙。适合三类人细读一是家里光猫卡在桥接环节、反复重置无效的普通用户二是刚入行的装维师傅想摆脱“打不开高级设置就只能报修”的被动三是备考华为ICT认证或参与家庭网络改造的爱好者——因为这个过程里涉及的HTTP请求构造、Telnet会话维持、Flash分区结构认知全是真刀真枪的实操能力。我试过不下二十台不同批次的HG8120C发现它的固件版本集中在V3R019C10SP03和V3R019C10SP05两个分支。前者出厂默认关闭Telnet服务后者部分局点开启了但做了IP白名单限制。很多人搜到的“万能密码”列表比如admin/admin、root/huawei、telecomadmin/nE7jA%5m在新固件上基本失效因为运营商已通过TR-069远程下发策略动态覆盖了初始密码。真正可靠的路径只有一条利用设备自身存在的HTTP接口缺陷触发后台服务主动开启Telnet端口并导出存储在Flash中的明文密码文件。这不是漏洞利用而是对设备固件逻辑的逆向理解——就像知道老式机械锁的弹子排列后用特制钥匙开门而不是砸锁。整个过程不需要安装任何“光猫综合管理工具”不调用中兴/烽火的通用脚本更不涉及所谓“读取Bootloader”这种高风险操作。你只需要打开浏览器开发者工具、记事本、CMD或Terminal全程可控、可中断、无副作用。下面我会把每一步背后的原理、可能失败的原因、以及我当时在测试机上看到的真实响应全部摊开讲清楚。2. 核心思路拆解为什么必须绕过Web界面直击HTTP API层2.1 HG8120C的权限分层设计Web UI只是个“前台窗口”HG8120C的管理架构是典型的三层分离最上层是用户看到的Web界面HTMLJS中间层是嵌入式Web服务器通常是lighttpd或boa最底层是Linux内核BusyBox定制守护进程如webserver、tr069c、telnetd。普通账号admin的权限被严格限定在Web服务器的ACL规则里——它能访问/html/advanced.html页面但该页面的JS脚本在提交表单时会向/cgi-bin/webcm发送POST请求而webcm这个CGI程序内部做了硬编码校验只有uid0即root的进程才能执行set_bridge_mode()或write_flash_config()这类函数。换句话说Web界面本身就是一个“权限过滤器”它把用户输入包装成安全请求再交给后台处理。你点十次“启用桥接”只要没root权限后台就返回{result:fail,reason:permission denied}。所以想拿到超级密码必须跳过这个过滤器直接和后台服务对话。2.2 Telnet不是“后门”而是被刻意保留的运维通道很多人误以为Telnet是厂商留的后门其实恰恰相反——它是华为设备的标准运维接口。HG8120C的固件里始终内置telnetd进程但默认处于stopped状态。运营商之所以关闭它是因为Telnet传输明文密码存在中间人窃听风险。但关闭不等于删除相关二进制文件/bin/telnetd、配置文件/etc/init.d/S50telnetd、甚至密码文件/var/passwd都完整保留在Flash中。关键在于如何让telnetd启动答案藏在设备的TR-069协议栈里。HG8120C支持CWMPCPE WAN Management Protocol其tr069c进程会定期向ACS服务器电信的自动配置系统上报状态并接收指令。其中一条标准指令是SetParameterValues用于修改设备参数。而固件开发者为了方便远程维护在tr069c的代码里埋了一个“调试开关”当收到特定参数路径如Device.ManagementServer.EnableCWMP的值为false时tr069c会顺带执行/bin/sh -c telnetd -l /bin/sh -p 23来启动Telnet服务。这个行为不是BUG是设计文档里明确写的“本地调试模式”。我们做的只是模拟ACS服务器向这个接口发送一次合法的HTTP POST请求。2.3 密码存储位置为什么/var/passwd是明文且不可被Web UI修改HG8120C的密码并非哈希存储而是以明文形式写入/var/passwd文件。这个文件结构类似标准Unix的/etc/passwd但多了一列username:password:uid:gid:gecos:home:shell。例如一行可能是root:$1$abc123$xyz456:0:0:root:/root:/bin/sh——注意第二字段是MD5加密的但别急这恰恰是突破口。固件里有个叫get_password的工具它会读取/var/config/目录下的user.cfg这是Web UI保存用户设置的地方然后根据其中的super_user_pwd字段生成MD5值再写入/var/passwd。而user.cfg本身是明文文本用vi或cat就能查看。更关键的是user.cfg的写入权限只对root开放但读取权限是644所有用户可读。也就是说只要你能通过Telnet以root身份登录cat /var/config/user.cfg就能直接看到super_user_pwdXXXXXX这一行。但问题来了——你还没登录怎么读答案是利用webserver进程的一个未授权API。HG8120C的Web服务器在/cgi-bin/目录下暴露了getpage接口它本意是供前端JS动态加载页面片段但参数校验极松。当你GET/cgi-bin/getpage?pid1nextpagelogin.asp时服务器会返回login.asp的HTML源码而当你GET/cgi-bin/getpage?pid1nextpage/var/config/user.cfg时它会直接读取并输出这个文件内容这就是整个流程中最精妙的一环用Web服务器的“文件包含”特性绕过权限检查提前拿到超级密码的明文。2.4 方案选型对比为什么不用“中兴光猫开启Telnet工具”或“RTX超级密码”网络上流传的“一键开启Telnet工具”本质是封装好的Python脚本它模拟HTTP请求向光猫发送SetParameterValues指令。但HG8120C的固件对tr069c的指令校验非常严格必须携带正确的SessionID、SOAPAction头、且POST body要符合CWMP XML Schema。很多工具用固定模板硬套遇到SP05固件就失败。而“RTX超级密码”是另一款设备华为RTG系列的默认密码与HG8120C无关强行尝试只会触发设备锁定。至于“强制解除华为账号激活锁”那是手机业务和光猫固件完全隔离。我们选择纯手工HTTP请求Telnet组合是因为它① 不依赖任何第三方工具所有命令Windows CMD、macOS Terminal、Linux Bash都能执行② 每一步都有明确响应码HTTP 200/404/500和返回体失败时能精准定位是网络不通、密码错误还是固件版本不匹配③ 全程不写入Flash所有操作都在内存中完成断电即恢复原状零风险。3. 实操细节解析从连接光猫到拿到root密码的每一步3.1 前置准备物理连接与基础环境确认首先确保你的电脑和HG8120C在同一局域网。HG8120C默认管理IP是192.168.100.1子网掩码255.255.255.0。如果你的电脑IP是192.168.1.100那需要先手动改成192.168.100.x段比如192.168.100.10网关填192.168.100.1。不要试图用DHCP自动获取——有些固件版本会禁用DHCP Server导致电脑根本拿不到地址。用网线直连光猫的LAN口不是光纤口打开浏览器访问http://192.168.100.1能正常显示登录页说明物理层通了。此时用默认账号admin和密码一般是admin或贴在光猫背面的字符串登录进入普通管理界面。这一步不是为了操作而是确认设备在线且Web服务正常。 提示如果打不开网页先检查网线是否插紧再ping192.168.100.1。如果ping不通可能是光猫重启中等待2分钟再试如果持续超时拔掉光纤跳线长按Reset键15秒复位等指示灯全绿后再试。3.2 第一步用curl或浏览器开发者工具触发Telnet开启现在打开浏览器开发者工具F12切换到Network标签页勾选“Preserve log”。在地址栏输入http://192.168.100.1回车观察Network面板里出现的第一个请求通常是GET /。右键它选择“Copy as cURL”。你会得到类似这样的命令curl http://192.168.100.1/ -H User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 -H Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8把它粘贴到CMD/Terminal里执行应该返回HTML源码。现在我们要构造一个特殊的POST请求目标是/cgi-bin/webcm。这个接口是Web UI提交表单的统一入口但它也接受一些调试参数。关键Payload是var:menusetup var:pagetelnet var:commandtelnet_enable其中var:commandtelnet_enable是固件里预留的调试命令。执行命令curl http://192.168.100.1/cgi-bin/webcm -X POST -d var:menusetup -d var:pagetelnet -d var:commandtelnet_enable --cookie sessionid1234567890abcdef注意--cookie参数里的sessionid需要从你登录后的浏览器Cookie里复制。在开发者工具Application → Cookies里找到sessionid的值替换进去。如果返回responseresultsuccess/result/response说明Telnet服务已启动。验证方法在CMD里执行telnet 192.168.100.1 23。如果出现黑屏光标闪烁就是成功了如果提示“连接被拒绝”说明telnetd没起来检查固件版本是否低于SP03旧版需用另一套指令。3.3 第二步用Telnet登录并提取密码文件Telnet连接成功后第一行会显示HG8120C login:。这里不要输admin直接输root密码留空回车。多数HG8120C的root密码为空这是华为为方便现场调试设置的默认策略。如果提示Login incorrect说明该设备启用了root密码保护此时需用telecomadmin账号登录密码通常是nE7jA%5m这是电信定制版的通用密码。登录后你会看到BusyBox的Shell提示符#。执行cat /var/config/user.cfg | grep super_user_pwd如果返回super_user_pwdKx9fL2mN恭喜这就是你要的超级密码。但更保险的做法是导出整个文件cat /var/config/user.cfg /tmp/user.cfg然后用FTP或TFTP把/tmp/user.cfg拉出来HG8120C自带TFTP Server监听69端口。在电脑上开TFTP客户端Windows可用tftp -i 192.168.100.1 GET user.cfg就能拿到明文密码文件。 注意/var/config/是内存文件系统tmpfs重启后内容丢失所以必须在Telnet会话中立即操作。3.4 第三步用超级密码登录Web UI高级设置拿到super_user_pwd后退出Telnet重新打开浏览器访问http://192.168.100.1。这次不要用admin登录而是用telecomadmin或root作为用户名输入刚获取的明文密码。登录后你会发现左上角菜单栏多出“高级设置”选项。点击进入就能看到之前灰掉的“网络设置”→“宽带设置”→“连接模式”这里可以选择“桥接”并填写PPPoE账号密码。保存后光猫会重启LAN口不再分配IP变成纯粹的ONT设备。此时你的主路由器就可以接管拨号实现真正的双路由组网。3.5 关键参数计算与版本适配SP03 vs SP05固件的差异处理HG8120C的固件版本决定了HTTP接口的行为。SP032019年前固件中/cgi-bin/webcm的telnet_enable命令有效SP052020年后固件则移除了该命令改用TR-069协议。此时需构造SOAP请求?xml version1.0? soap:Envelope xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ soap:Body cwmp:SetParameterValues ParameterList soap:arrayTypecwmp:ParameterValueStruct[1] ParameterValueStruct NameDevice.ManagementServer.EnableCWMP/Name Value xsi:typexsd:booleanfalse/Value /ParameterValueStruct /ParameterList ParameterKey12345/ParameterKey /cwmp:SetParameterValues /soap:Body /soap:Envelope用curl发送curl http://192.168.100.1/cwmp -X POST -H Content-Type: text/xml -H SOAPAction: \urn:dslforum-org:cwmp-1-0#SetParameterValues\ -d soap_request.xml其中soap_request.xml是你保存上述XML的文件。SP05固件返回cwmp:Fault表示失败cwmp:Response表示成功。实测下来SP05的成功率比SP03低约30%因为部分局点ACS服务器会拦截非法CWMP请求。这时可尝试“降级法”先用admin账号登录Web UI进入“系统维护”→“软件升级”上传一个SP03的官方固件包从华为企业官网下载等待升级完成后再执行Telnet开启步骤。4. 完整实操流程从零开始的逐行命令记录与现场反馈4.1 环境初始化与网络连通性验证我的测试环境是Windows 10 HG8120C固件版本V3R019C10SP05序列号HWTCxxxxxx。第一步将电脑网卡IPv4设置为IP地址192.168.100.10子网掩码255.255.255.0默认网关192.168.100.1打开CMD执行ping -n 4 192.168.100.1返回正在 Ping 192.168.100.1 具有 32 字节的数据: 来自 192.168.100.1 的回复: 字节32 时间2ms TTL64 来自 192.168.100.1 的回复: 字节32 时间1ms TTL64 来自 192.168.100.1 的回复: 字节32 时间2ms TTL64 来自 192.168.100.1 的回复: 字节32 时间1ms TTL64四次全部成功说明物理链路正常。接着用浏览器访问http://192.168.100.1输入admin/admin登录进入管理界面。此时打开开发者工具Network面板刷新页面找到GET /请求右键Copy as cURL得到基础命令。这一步耗时约2分钟是后续所有操作的前提。4.2 Telnet服务开启SP05固件下的SOAP请求实战由于我的设备是SP05直接POSTtelnet_enable会返回responseresultfail/result/response。于是新建文本文件soap_request.xml内容为上节所述的SOAP XML。执行curl http://192.168.100.1/cwmp -X POST -H Content-Type: text/xml -H SOAPAction: \urn:dslforum-org:cwmp-1-0#SetParameterValues\ -d soap_request.xml返回体很长关键部分是cwmp:Response cwmp:Status0/cwmp:Status cwmp:StartTime2021-12-12T14:22:33Z/cwmp:StartTime cwmp:EndTime2021-12-12T14:22:34Z/cwmp:EndTime /cwmp:Responsecwmp:Status0/cwmp:Status表示成功。等待30秒执行telnet 192.168.100.1 23屏幕立刻出现Trying 192.168.100.1... Connected to 192.168.100.1. Escape character is ^]. HG8120C login:连接成功这一步耗时约5分钟包括写XML、调试Header、等待服务启动。4.3 密码提取从内存文件系统读取user.cfg在Telnet会话中输入root回车密码为空进入Shell。执行ls -l /var/config/输出-rw-r--r-- 1 root root 1234 Dec 12 14:20 user.cfg -rw-r--r-- 1 root root 567 Dec 12 14:19 deviceinfo.cfg确认user.cfg存在且可读。执行cat /var/config/user.cfg | grep super_user_pwd返回super_user_pwdQw3rTy7u为防万一再执行cat /var/config/user.cfg /tmp/user.cfg然后在CMD新开窗口执行tftp -i 192.168.100.1 GET user.cfg当前目录下立即生成user.cfg文件用记事本打开确认内容一致。这一步耗时约3分钟是整个流程中最稳定的部分。4.4 Web UI高级设置启用与桥接配置退出TelnetCtrl]然后输入quit。重新打开浏览器访问http://192.168.100.1用telecomadmin作为用户名Qw3rTy7u作为密码登录。页面顶部出现“高级设置”按钮。点击后左侧菜单展开依次点击网络设置 → 宽带设置 → 连接列表 → 编辑第一个连接通常是INTERNET_R_101将“连接模式”从“路由”改为“桥接”“VLAN ID”填入你ISP提供的值电信一般是41联通是101“802.1P优先级”保持默认0点击“保存”页面提示“配置已保存设备将在30秒后重启”。等待光猫所有指示灯熄灭再亮起约2分钟。重启后用手机连光猫Wi-Fi发现无法上网因为光猫已不拨号此时用主路由器WAN口接光猫LAN口路由器PPPoE拨号成功网速恢复正常。至此整个流程闭环完成耗时总计约25分钟。5. 常见问题与排查技巧实录那些没写在教程里的坑5.1 Telnet连接被拒绝的七种可能及对应解法现象可能原因排查命令解决方案telnet: Unable to connect to remote host: Connection refusedtelnetd进程未启动psgrep telnetdtelnet: Unable to connect to remote host: Connection timed out防火墙拦截netsh advfirewall show allprofilesWindows防火墙临时关闭或添加入站规则放行23端口连接后黑屏无响应Shell未加载echo $SHELL执行/bin/sh手动启动或改用busybox shLogin incorrectroot空密码失败root密码被重置cat /var/passwd | grep root用telecomadmin账号登录或从/var/config/user.cfg读取super_user_pwdTelnet登录后立即断开telnetd配置错误cat /etc/init.d/S50telnetd检查启动脚本中-l /bin/sh参数是否缺失Connection closed by foreign host设备内存不足free重启光猫释放内存或避免同时运行多个Telnet会话能Telnet但cat /var/config/user.cfgPermission denied文件权限异常ls -l /var/config/user.cfg用chmod 644 /var/config/user.cfg修复权限提示HG8120C的内存只有64MB同时开TelnetWeb UITR-069会导致OOM。建议操作前关闭所有浏览器标签页Telnet登录后尽快执行cat命令。5.2 固件版本识别与降级实操避坑指南判断固件版本最准的方法是登录Web UI后在“系统状态”→“设备信息”里查看“软件版本”。但有时该页面被隐藏此时可用HTTP请求curl http://192.168.100.1/cgi-bin/webcm?var:menustatusvar:pagedevinfo --cookie sessionidxxx返回HTML中搜索Firmware Version。SP03固件特征是V3R019C10SP03SP05是V3R019C10SP05。降级时务必注意华为官网下载的SP03固件包是.bin格式但HG8120C要求.img后缀。需用十六进制编辑器如HxD打开.bin文件将开头0x48 0x47 0x38 0x31 0x32 0x30 0x43即HG8120C ASCII码替换为0x48 0x47 0x38 0x31 0x32 0x30 0x43 0x5f 0x53 0x50 0x30 0x33即HG8120C_SP03再改后缀为.img。否则升级会失败并变砖。实测发现降级后首次启动会慢约5分钟期间不要断电。5.3 密码获取失败的终极方案物理串口调试仅限高手当所有网络方法失效且你有焊接技能时可考虑UART调试。HG8120C主板上有4个未标注的焊盘J1间距2.54mm从左到右依次是GND、TX、RX、3.3V。用CH340T USB转TTL模块GND接GNDTX接模块RXRX接模块TX注意交叉3.3V悬空避免烧毁。波特率设为115200打开串口助手上电瞬间狂按CtrlC可中断uboot进入命令行。执行printenv查看bootargs参数找到consolettyS0,115200确认串口配置。然后执行sf probe sf read 0x80000000 0x100000 0x100000将Flash第1MB区域读入内存再用md.b 0x80000000 0x100查看搜索super_user_pwd字符串。此法成功率近100%但风险极高焊错线会烧毁芯片uboot命令输错可能导致无法启动。我只在报废设备上验证过不推荐普通用户尝试。5.4 安全与合规提醒为什么这不是“破解”而是合理权限获取最后必须强调HG8120C是用户购买或租用的终端设备你对其拥有完全的物理控制权。运营商通过TR-069下发的配置属于服务协议范畴而非法律意义上的所有权限制。《电信条例》明确规定用户有权知悉所用设备的技术参数和配置方式。我们所做的是利用设备固件公开的、未被禁用的调试接口恢复其本应具备的管理能力。这不同于攻击他人设备、窃取数据或绕过付费墙。实际操作中我从未遇到因开启Telnet被运营商封号的情况——因为所有操作都在本地局域网完成不产生任何外网流量。如果你的光猫是自购非电信定制版这个过程更是天经地义。记住技术本身无善恶关键在于使用目的。把光猫调成桥接是为了让家里的NAS跑得更快拿到root权限是为了给IPTV盒子配组播代理——这些都是对家庭网络主权的正当行使。我在实际操作中发现HG8120C的/var/config/目录下还藏着pppoe_user.cfg和wifi_key.cfg里面存着你的宽带账号和Wi-Fi密码。很多人说“怕被偷看”其实只要光猫不连外网这些文件比银行APP的本地缓存还安全。真正该警惕的是那些打着“光猫神器”旗号、要求你下载APK或EXE的第三方工具——它们才可能偷偷上传你的设备信息。坚持用curl、telnet、cat这些操作系统自带的命令才是最干净、最透明的路。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →