这台中国移动的 H50G 是朋友那边淘汰下来的:四个千兆口、没有无线、没有电话口,白色小方盒一个。铭牌上写着福建星网锐捷代工,2022 年 11 月生产。外观没什么好讲的,真正有信息量的东西全在板子上,和它开机那几十秒的日志里。

开写之前先摊个牌。网上现在能搜到的光猫「拆解」,绝大多数是看图说话——把芯片丝印抄下来,往搜索引擎一贴,然后把同系列资料里的「主频 900MHz、内存 256MB」直接搬过来。这么写不能说错,但那些数字是那颗芯片能做什么,不是你这台机器实际是什么。板子上到底焊了多大内存、闪存里塞了什么、系统怎么起来的、运营商又往里塞了多少私货,丝印一个字都不会讲。

所以这台机器我没停在「看芯片」。板子上留了调试串口,我给它焊了个排针,从头到尾把启动日志录了一份。日志是设备自己一步一步吐出来的,比任何反推都靠得住。这篇文章一半是拆解,一半是读日志——读到后面你会发现,有些结论真的只有日志能给。最后留个尾巴:下一篇我会在不拆机、不用超级管理员的前提下,用普通用户能拿到的权限把宽带账号密码取出来,再把 telnet 打开,一路拿到 root。这篇先把这台机器彻底看穿。

先说结论

  • 主控是中兴微电子的 ZX279127S。丝印写得明白:ZXIC / ZX279127S / AE10114TTX / THWG6800 / 2224/FHE03009。ZXIC 就是中兴微电子,这是一颗 GPON 网关 SoC,ARM Cortex-A9 内核。有意思的是它有两副面孔:U-Boot 阶段自报家门是 ZX279127S@A9,进内核后又变成 ZTE ZX279128S。同一颗芯片两套叫法,光靠看丝印是吵不出结果的,下面用日志把这事说清。
  • 内存 512MiB,闪存 256MiB,都是日志报的实测值。内存是三星一颗 SEC K4B4G16,DDR3 颗粒;闪存是铠侠 TC58BVG1S3HTA00 SPI NAND。日志里 DRAM: 512 MiB、ddr rate is 1066 Mbps、nand: 256 MiB, SLC, page size: 2048, OOB size: 64,连闪存的两个出厂坏块都标出来了。
  • 这台是「4 口纯有线」版本,没有无线,也没有语音。正面指示灯里根本没有 WiFi 灯,日志也一直在刷 Get_Wifi_Type:e_wifi_type=0x0、g_Wlan_Card_Max=0,无线芯片压根不存在;语音这边日志报 slic type:[unknown]、slic total_line_num: 0,SILC 没识别到。所以别指望拿它当无线路由用。
  • 系统三件套:U-Boot 2013.04 + Linux 4.1.25 + Buildroot 2017.05。内核编译于 2023 年 11 月 21 日,构建机 root@workStation,gcc 4.9.4。这台 2022 年出厂的猫,固件在 2023 年底还刷过一次。
  • 闪存被切成 15 个分区,而且核心分区都是 A/B 双份。kernel0/kernel1、osgi/osgi1、phoneapp/phoneapp1 各存两套,跑坏一套切另一套,这是运营商设备「刷不死」的底气。
  • 最劲爆的一条:telnet 的开关、端口、账号密码,原文就印在启动日志里。do action with cfg:enable=1,port=23,maxcon=6,usr=admin,pwd=chzhdpl@246。你没看错,是明文。这就是我一开始说的「日志比拆解更底层」——硬件反推永远推不出这条。
  • 地区是广东。日志里 region code:310、region name:Guangdong,配置项 WANCPPP 也写着 GuangDong。移动是按省定制的,同一型号不同省固件不一样,这一点铭牌同样看不出来。

先看壳子:一台没有无线的移动光猫

拆之前先把外壳看一圈。这类方盒光猫的外观信息其实很密集,指示灯和接口的排布本身就在暗示它的定位。

中国移动 H50G 光猫正面:一排指示灯,依次是电源、注册/光信号、上网、1、2、3、4、USB
正面:底部一排指示灯,从左到右是电源、注册/光信号、上网、1–4、USB。注意这里没有 WiFi 灯,也没有电话灯,第一眼就说明它不是「无线+电话」那类全功能款

这一排灯里有两个决定了这台机器能不能用:「注册/光信号」决定的是它有没有在运营商的 OLT 上挂上号,「上网」决定的是拨号有没有成功。这两个灯不对的时候,你去重启路由器是没有意义的,问题根本不在你这边。

H50G 接口面:4 个千兆网口(丝印 4/3/2/1-千兆)、DC 电源插座、红色电源开关,底部是光口
接口面:四个网口丝印标成 4/3/2/1-千兆,全是千兆口,这点比很多只给一个千兆口的猫厚道;右边是电源插座和红色电源开关,底部独立一个光口

接口标签写得挺实在,四个口全部标了「千兆」,没有掺百兆。旁边是电源插孔和一个红色自锁开关,最下面单独留了光口。整体就是一台很朴素的有线网关。

H50G 背面铭牌:设备型号 H50G、GPON ONU、默认账号 user、管理地址 192.168.1.1、厂商福建星网锐捷、进网许可等
背面铭牌:型号 H50G、设备名称「吉比特无源光纤接入用户端设备(GPON ONU)」、默认账号 user、管理地址 192.168.1.1,厂商一栏写着福建星网锐捷通讯股份有限公司。二维码和条码里是整机序列号与 GPON SN,这两处下面都打了码

铭牌是整机信息量最大的地方,把常用的参数列一下。注意这里所有信息都是厂商印上去的「标称」,和板子上真实焊了什么,是两回事。

项目铭牌参数说明
设备型号H50G中国移动「智能家庭网关 类型十一」,GPON ONU
制造商福建星网锐捷通讯股份有限公司整机代工厂,但主控是中兴微的方案
用户口4×GE + 1×USB四个千兆网口,无电话口、无无线
默认账号user / 密码印在铭牌注意这是普通用户,不是超级管理员
管理地址192.168.1.1网页后台入口
电源12V ⎓ 1A板上有 12V1 丝印,与铭牌一致
生产日期2022-11-09铭牌右上角
进网许可19-7748-213516蓝色许可标签

拆开看板子:丝印能告诉你什么,不能告诉你什么

拆机没什么技术含量,背面就一颗螺丝,拧掉之后拿撬板沿着边缘慢慢撬一圈,上下盖就分开了。第一次拆最好用塑料撬棒,金属的容易在壳子上留印。

H50G 拆解:上盖与主板分离,用撬板沿边缘撬开,光纤尾纤从光口连到面板
拆解:一颗螺丝 + 撬板沿边缘撬。注意那根白色光纤尾纤是从主板光组件连到前面板光口的,翻板子的时候别硬拽

打开之后,板子整体规整,主控上压着一块散热片。这块板的分区思路很典型:一颗主控管所有,外围就是内存、闪存、光组件和网络变压器。

H50G 主板正面:主控上覆盖铝制散热片,左上角是光组件,左下是光口,右侧是 USB 与网络口
主板正面:中间那块就是主控,压着一片铝散热片,说明它确实有点功耗;左上角连着尾纤的是光组件,右侧是 USB 口和网口变压器区
H50G 主板全局:光组件、主控、内存、闪存与各接口在板上的位置关系
主板全局:光组件(左上带尾纤)、主控、内存、闪存在板上的相对位置一目了然

板子右边是网口区和电源区。四个网口下面各配了一组网络变压器,作用是把主控出来的信号和网线上的差分信号隔离开,顺便做阻抗匹配和防雷,这几颗小方块虽然不起眼,但网口稳不稳全看它们。电源那一片能看到 12V 输入、几颗标着 4R7 的功率电感和一圈稳压电路,整板的电就从这儿分下去。还有左上角那根从光组件引出来的白色尾纤,它一路绕到前面板的光口,翻板子、拧螺丝的时候千万别硬拽,这东西又细又脆,扯断了这台机器基本就报废了。

接下来把板上有丝印的主器件逐颗看过来。这一段就是绝大多数拆解文章的全部内容——但请留意,丝印只能告诉你「型号」,告诉不了你「参数」。

主控芯片丝印:ZXIC ZX279127S AE10114TTX THWG6800 2224/FHE03009,旁边是内存与光组件
主控:丝印 ZXIC / ZX279127S。ZXIC 是中兴微电子,这是一颗集成度很高的 GPON SoC。丝印能告诉你它叫什么,但主频多少、塞了几个核,得看日志

主控旁边那颗大的就是内存。三星的颗粒,丝印 SEC K4B4G16。懂行的人能从这个料号算出容量——K4B4G16 是 4Gbit 的 DDR3,等于 512MB。但网上不少拆解会直接写成 256MB,原因就是没算、抄了错资料。这颗到底是不是 512MB,日志一句话就定死了。

内存芯片丝印:SEC K4B4G16 4E6 BCMA,三星 4Gbit DDR3 颗粒
内存:三星 SEC K4B4G16,4Gbit DDR3 颗粒,单颗即 512MB。板子上只有这一颗,容量一目了然
闪存芯片丝印:KIOXIA J63019 TC58BVG1S3HTA00,铠侠 SPI NAND
闪存:铠侠 KIOXIA / TC58BVG1S3HTA00,一颗 SPI NAND。按料号看是 2Gbit,也就是 256MB,和日志报的 256 MiB 对得上
光组件:带尾纤的 BOSA 光模块,白色标签上是光模块自己的二维码与序列号
光组件:一根尾纤连着的那块就是 BOSA,白标签上印满了二维码和序列号,那些是光模块自己的标,跟整机序列号不是一回事

看到这儿,你手里已经有四个型号了:主控、内存、闪存、光组件。现在问题来了——光凭这些丝印,你能说出这台机器的主频、内存实际容量、闪存分区、装载的系统版本和地区吗?说不出来。芯片型号只是起点,真正决定这台机器「是什么」的那些参数,全在它开机时自己报出来的日志里。而想读到日志,得先在板子上接一个 TTL 口出来。

焊一个 TTL 口:从「听不到」到「能听到」

板子上厂家预留了调试串口的焊盘,丝印写得明明白白:RX TX GND VCC,四个孔一字排开。这就是接串口的入口。

TTL 焊盘:四个通孔,丝印标注 RX TX GND VCC,靠近电源部分
TTL 接口:四个通孔,丝印 RX/TX/GND/VCC。它离电源部分不远,旁边那颗大电解电容和 12V1 是供电区

为什么不直接用探针顶、用夹子夹,非要焊?因为串口是长时间实时通信,不是点一下就读完的数据。探针一滑就断,夹子夹不牢还会碰到旁边元件,日志读一半断掉最气人。焊上排针之后,插上杜邦线就稳了,想读几次读几次。

电平是 3.3V TTL,波特率日志里早就写好了——内核命令行是 console=ttyAMA0,115200n8,也就是 115200、8 数据位、无校验、1 停止位。这两点先记住,一会儿接线要用。

动手之前先把工具说清楚,这事比手艺更影响成败。一把能调温的恒温烙铁或者焊台就够用,烙铁头建议选刀头或马蹄头,接触面大、好控锡,尖头反而容易把锡抖飞;焊锡用带松香芯的有铅锡,熔点低、流动好,比无铅锡好上手得多;助焊剂松香或膏状的都行;清理用洗板水配吸锡带。工具对了,成功率立刻上一个台阶。

焊接本身不难,但「能亮」和「焊得好看又可靠」之间差着几个细节。我把自己这套流程拆成五步,对着图讲。

第一步,先给烙铁头镀锡。烙铁头裸露在空气里会氧化发黑,氧化层不吃锡,你拿它去焊东西只会越焊越脏。所以升温之后先蘸点焊锡,把整个工作头裹上一层亮锡,这一步纯粹是为了保护烙铁头、让后面上锡顺畅。

焊接第一步:给烙铁头镀一层锡,防止氧化,方便后续上锡
第一步:烙铁头先镀锡。亮亮的一层锡裹住烙铁头,既防氧化,也让后面上锡更顺。这里用的是刀头,接触面大好控锡

第二步,处理焊盘。这四个孔看着是新的,其实表面有氧化层和出厂阻焊残留,直接上锡会「挂不上」。做法是先用细砂纸轻轻磨一下焊盘,磨掉氧化层,再用洗板水擦干净,然后拿吸锡带(铜编织带)贴着焊盘、用烙铁压上去,把焊盘重新吃一层薄锡。吸锡带在这里的作用不是吸锡,是帮你把焊盘表面「带干净」。

焊接第二步:砂纸轻磨焊盘,洗板水清洗,用吸锡带配合烙铁给焊盘上锡
第二步:砂纸轻磨 + 洗板水清洗 + 吸锡带配合烙铁给焊盘上锡。吸锡带在这里的作用是把焊盘表面清理干净,让新锡能真正吃上去

第三步,确认焊盘均匀上锡,涂助焊剂。上完锡之后看一眼焊盘,要四个都均匀发亮,不能有黑点、不能有没吃上锡的地方。确认没问题了再涂一层助焊剂(松香或膏状都行),助焊剂的作用是降低表面张力、隔绝氧化,一会插针的时候锡才会「顺着流」而不是缩成一坨。

焊接第三步:焊盘均匀上锡完成,并涂上助焊剂
第三步:四个焊盘都均匀上锡,再涂一层助焊剂。这一步是为了让插针时锡能顺滑流开,而不是堆成一坨

第四步,插针、上锡。把排针插进孔里,烙铁头贴住针脚和焊盘的接缝处,给一点锡,让熔化的锡自己顺着针脚往下流、把焊盘和针脚裹住。这里的关键是「贴住等它化」而不是「拿锡去抹」——你把锡丝往烙铁头上一送,锡会比较自然地形成一个饱满的小圆锥,这就是想要的焊点形态。

焊接第四步:烙铁头贴住针脚给锡,让液态锡自然贴合针脚与焊盘
第四步:烙铁头贴住针脚,给锡,让熔锡自然铺满焊盘与针脚。这是全流程里最出效果的一步,焊点圆不圆、亮不亮,全看这儿

第五步,洗板水收尾。焊完之后焊点周围会残留助焊剂和被打掉的阻焊,看着脏,时间长了也会吸潮。用洗板水(或无水酒精)刷干净,成品就是四个圆润、发亮、没有毛刺的焊点。这样焊出来的口子,插拔几十次也不会松。

焊接第五步:用洗板水去除残留,四个焊点圆润饱满,最终成果
第五步:洗板水清掉残留,最终成果。四个焊点都是饱满的圆锥形,光亮、无拉尖、无虚焊,这才叫焊得漂亮

补几句焊接里最容易翻车的地方,都是血泪:温度别太高,有铅锡 300–350℃ 就够,温度高了焊盘铜箔容易翘;时间别太长,一个点两三秒解决,烙铁压在焊盘上超过五秒就是在烤板子;助焊剂一定要洗,不洗时间长了会漏电、发黑;最怕虚焊——焊点看着圆,其实锡没真正爬进孔里,串口偶尔通偶尔不通,多半就是它。判断虚焊的办法很简单:拿镊子轻轻拨一下针脚,会晃就返工。

焊完之后接线:买一个 CH340 之类的 USB 转 TTL 小板,开发板的 TX 接转接板的 RX、开发板的 RX 接转接板的 TX,GND 对 GND,VCC 千万别接(板子自己有电,接了 VCC 可能顶电打架)。交叉接是新手最容易卡住的地方,接反了就是一片乱码或者一点反应都没有。接好之后电脑上会多一个串口,波特率设 115200、8N1,打开就能看到日志了。

TTL 日志实录:从上电到系统起来

下面按时间顺序,把这次录到的日志关键段贴出来。日志很长,我只挑信息量大的部分。

最先出来的是上电自检那几行,芯片还没引导系统,已经在报自己的硬件底子了:

串口日志:Boot NAND、非安全启动、DDR 初始化速率 1066 Mbps、DDR 容量 0x20000000
上电第一屏:Boot NAND、non secure boot(注意这四个字,说明它没开安全启动),DDR 初始化 rate is 1066 Mbps,容量 0x20000000——换算过来正好 512MB

紧接着是 U-Boot 的横幅,把 CPU、内存、闪存的实参一股脑报了出来:

U-Boot 横幅:U-Boot 2013.04、1000MHZ、CPU ZX279127S@A9、DRAM 512 MiB、NAND boot mode 1
U-Boot 横幅:CPU : ZX279127S@A9, Board: ZXIC zx279127sevb、1000MHZ、DRAM: 512 MiB。主频、内存容量,这一屏全给了
U-Boot 2013.04 (Nov 21 2023 - 03:41:26)
1000MHZ
CPU  : ZX279127S@A9,Board: ZXIC zx279127sevb
CONFIG_SYS_SDRAM_SIZE = 0x20000000
DRAM:  512 MiB
NAND:  boot mode: 1
Manu ID: 0x98, Chip ID: 0xda (Toshiba NAND 256MiB 3,3V 8-bit)
256 MiB

然后是识别 NAND、读分区表、初始化 GPON 光口这一段:

串口日志:NAND 识别为 Toshiba 256MiB、读取 mtdpart、ZXIC_SOFT_VID、gpon serdes init
NAND 识别与分区读取:Toshiba NAND 256MiB 3,3V 8-bit、ZXIC_SOFT_VID:0x00050002,最后 gpon serdes init——光口串行器开始初始化

再往下从闪存读内核镜像,把要启动的系统和内核命令行都报了出来:

串口日志:从闪存读取内核镜像,Image Size 25.3 MiB,Load Address 40008000
读内核:Image Name: Linux Kernel Image、Data Size: 26497323 Bytes = 25.3 MiB。内核本体 25.3MB,加载地址 40008000
串口日志:内核命令行 console=ttyAMA0,115200n8 rdinit=/sbin/init mem=512M
内核命令行:console=ttyAMA0,115200n8 rdinit=/sbin/init mem=512M。串口参数(115200 8N1)、根文件系统位置、内存大小全在这一行里
====commandline:console=ttyAMA0,115200n8 rdinit=/sbin/init mem=512M; U-Boot 3.0.16 20231121044948=====
----------------------
|-->setup versioninfo tag...
Starting kernel ...

内核起来之后有一屏参数区的初始化,把厂商 VID 原始数据 dump 了出来:

串口日志:zxic_param_init,ZXICVID 参数区十六进制 dump
参数区初始化:开头的 INFO zxic_param_init 和那片 5a 58 49 43 49 44(ASCII 就是「ZXICID」)是厂商私有参数区,用来存这台机器的定制标识

最后进用户态,挂载分区、读出固件版本、探测光组件和语音芯片:

串口日志:挂载 mtdblock13/14、verinfo 报 ZXIC 1GPON UNI SGUV2.0.0B05、GN25L95 found、slic 探测
用户态:挂载 /GN25L95_datas、verinfo 报出固件标识 ZXIC 1GPON UNI SGUV2.0.0B05,光组件 GN25L95 found,语音这边则一路 slic type:[unknown]

日志到这儿基本把整机交代完了。接下来是重头戏——把这些日志和「看丝印猜参数」放在一起比,看看差距在哪。

日志给出的结论:硬件反推推不出来的那些

我把这次从日志里读到的、以及铭牌和丝印给不出的东西,整理成一张对照表。左边是硬件能看到的,右边是日志说的。你会发现右边明显更具体、更可信。

项目硬件反推(看丝印)TTL 日志(实测)
主控ZXIC ZX279127S,Cortex-A9,主频未知U-Boot 报 ZX279127S@A9、1000MHZ;内核 device tree 报 ZTE ZX279128S
内存三星 K4B4G16,需自己算容量DRAM: 512 MiB、ddr rate is 1066 Mbps
闪存铠侠 TC58BVG1S3HTA00,容量靠查料号256 MiB, SLC, page size: 2048, OOB size: 64,并报出 2 个出厂坏块
分区看不到15 个 MTD 分区,含 kernel0/1、osgi/1、phoneapp/1 双份
系统版本看不到U-Boot 2013.04 + Linux 4.1.25 + Buildroot 2017.05
固件标识看不到ZXIC 1GPON UNI SGUV2.0.0B05
地区看不到region code:310 = 广东
无线板上没无线芯片,但也许是没焊g_WifiType=0、无 wlan 卡,是软件层面确认没有
语音板上有 PHONE 丝印slic type:[unknown]、total_line_num: 0,确认没启用
telnet完全看不到enable=1,port=23,usr=admin,pwd=****,明文

挑几条展开说,这几条最能说明「为什么要读日志」。

第一,主控有两套名字。U-Boot 说它是 ZX279127S,内核的 device tree 说它是 ZTE ZX279128S。同一颗芯片,引导程序和操作系统两边的叫法不一样。这个细节如果你只看丝印、只翻同系列资料,是永远对不上的。日志告诉你的是:以芯片丝印为准,同时记住它在软件里的平台代号,两个都得知道,后面折腾固件才不容易懵。

第二,内存和闪存是精确值,不带猜。DRAM: 512 MiB、256 MiB, SLC,连闪存的两个坏块位置(Bad eraseblock 1536、1537)都标出来了。你要是靠丝印算,能算对,但慢,而且容易算错——网上一堆把 K4B4G16 写成 256MB 的,就是这么来的。

第三,15 个分区是「防砖设计」。U-Boot、kernel0、kernel1、osgi、osgi1、phoneapp、phoneapp1、wlan、usercfg……全套 A/B 双份。运营商推固件的时候先写备用区,校验过了再切过去,写坏了还能回滚。这种「刷不死」的机制决定了这台机器一旦玩崩了,还有救回来的余地——而这一点,从板子上是绝对看不出来的。

Creating 15 MTD partitions on "denali-nand":
0x000000000000-0x000010000000 : "whole flash"
0x000000000000-0x000000200000 : "u-boot"
0x000000200000-0x000002200000 : "kernel0"
0x000002200000-0x000004200000 : "kernel1"
0x000004800000-0x000004c00000 : "parameter tags"
0x000004c00000-0x000005400000 : "usercfg"
0x000005400000-0x000005800000 : "middleware"
0x000005800000-0x000005c00000 : "wlan"
0x000005c00000-0x000005e00000 : "phoneapp"
0x000005e00000-0x000006000000 : "phoneapp1"
0x000006000000-0x000007e00000 : "osgi"
0x000007e00000-0x000009c00000 : "osgi1"
0x000009c00000-0x00000ff60000 : "plugin_data"
0x00000ff60000-0x000010000000 : "GN25L95_datas"

第四,这台机器没有无线,也没有语音,是软件盖章确认的。板上没看到无线芯片,可能是「没焊」,也可能是「焊了但没启用」,光看板子分不清;但日志里 g_WifiType=0、g_Wlan_Card_Max=0,语音那边 slic total_line_num: 0,等于软件层已经告诉你「这里没有」。一台移动光猫买回来当千兆交换机用,心里就有数了。

第五,也是最有意思的一条:telnet 配置是明文。日志里有一行,把 telnet 的开关、端口、账号、密码原样打了出来:

[telnetd][Error] do action with cfg:enable=1,port=23,maxcon=6,usr=admin,pwd=chzhdpl@246,ProcType=0
[telnetd][Warn ] telnetd lan should be Stop
[telnetd][Warn ] stop lan telnetd success

注意这行日志的奇特之处:它一边把 telnet 的凭据打得清清楚楚,一边下一句又把 telnet 停了(telnetd lan should be Stop)。也就是说这台机器默认 telnet 是关着的,但它的账号密码藏在固件里,并且会随着启动流程被打进日志。这就是「读日志」和「看芯片」的本质差别——芯片给你型号,日志给你凭据。至于这个 admin 账号到底能登到哪一层、进去之后是不是 root,那是下一篇要拆的事。

还有一条只有日志肯说的:这台机器的四个千兆口,并不是外挂交换芯片给的,而是主控内部自带的交换模块吐出来的。日志里明明白白写着 Init switch module、zy uni num:4、switch config 9127/9128 GPON mode,意思是这颗 SoC 内部一共有 7 个交换端口,对外放出 4 个 UNI 口给用户。旁边那行 VendorId=38c,ChipModel=1271,Revision = 28 也印证了同一件事——交换模块的厂商标识和芯片型号都指向中兴微这颗主控。也就是说,这台猫的网络转发能力,上限就锁死在主控自己身上,跟外挂交换芯片的老式猫是两种结构。

最后再把日志第一屏那句话拎出来说:non secure boot。翻译过来就是没开安全启动,引导的时候 U-Boot 不会去校验内核镜像的数字签名。对日常上网没有任何影响,但对后面想动固件的人意义很大,它意味着通过校验的门槛比很多人以为的要低。这种信息,铭牌不会写,丝印也看不出来,只有设备自己开机时那句日志会老老实实告诉你。

另外还有一屏信息值得记一笔:这台机器跑着一整套中国移动的插件。日志里能看到 Felix OSGi 框架、Java 运行环境,以及 andlink、appcore、cmccdpi、wuyougateway 这几个智能网关组件,JVM 堆上限被压到 -Xmx128M。说白了,光猫早就不是「一块光电转换的板子」了,它是一台跑着 Java、跑着移动全家桶的小电脑。这些插件是干什么用的、要不要关掉,是另一个话题。

最后把整机的真实规格收个尾,这些才是这台机器「实际是什么」:

  • SoC:中兴微 ZX279127S(内核平台代号 ZTE ZX279128S),ARM Cortex-A9,1000MHz
  • 内存:512MiB DDR3,频率 1066Mbps
  • 闪存:256MiB SLC SPI NAND(铠侠 TC58BVG1S3HTA00),15 个分区、A/B 双系统
  • 光:GN25L95 光组件,GPON,厂商标识 ZTE_B+_G
  • 业务口:4×GE + 1×USB2.0,无无线、无语音
  • 系统:U-Boot 2013.04 / Linux 4.1.25 / Buildroot 2017.05,固件 SGUV2.0.0B05
  • 地区:310 广东

还没完:下一步,普通权限拿宽带账号密码,再上 root

到这儿,这台 H50G 的硬件和系统已经被摆得明明白白。但真正麻烦的部分还没开始——我现在手里只有一个铭牌上印着的普通账号 user,超级管理员是进不去的,因为它被运营商改过密码。而普通用户能看到的界面里,最关键的那个东西(宽带拨号的账号和密码)恰恰是藏起来的。

下一篇我要做的,就是顺着今天读到的这些线索往下走。大致几步:先在不拆机、不用超级管理员的情况下,从普通用户能碰到的范围里把宽带账号和密码取出来;然后想办法把 telnet 打开,用今天日志里那套 admin 凭据登进去;最后进去之后做提权,拿到 root。今天日志里那句明文配置,就是这条路的起点之一。

至于结果能不能一路走通、中间会踩哪些坑,等实操完再写。提前说一句:这些操作只在自己名下的设备上折腾,动别人的光猫、拿别人的宽带账号,是另一回事,别混为一谈。

写这些内容需要耗费大量的时间和金钱,觉得有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力。