有部分来源标注,我仅仅只整理。由于年代久远,可能有的地区相关方法已经失效。但是依然是一个技术参考。
# 中兴 F7607P(F4607P)技术整理指南
来源: 菜鸟编程论坛
作者: piaoxue888
发布时间: 2023-04-03
浏览量: 3718
一、认识中兴 F7607P(F4607P)
产品链接
二、开启 Telnet
前提条件: 必须知道正确的超级账号及密码才能开启 Telnet 功能。
方法 1: 在线开启临时 Telnet
方法 2: 本地开启临时 Telnet
环境准备(Windows)
# 下载 Python https://www.python.org/downloads/windows/
python -m pip install --upgrade pip
pip install requests
pip install pycryptodome
pip install pyinstaller
# 如果下载慢,可换清华源
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip list
# 打包成 exe 文件
pyinstaller -F H:\zte_modem_tools-main\zte_factroymode.py
# 图形化打包工具
pip install auto-py-to-exe
auto-py-to-exe
# 反编译工具
pip install uncompyle6
python pyinstxtractor.py 包名.exe
uncompyle6 包名.pyc > 包名.py
精简绿色版 Python
# 下载解压 https://www.python.org/ftp/python/3.11.3/python-3.11.3-embed-amd64.zip
# 下载 get-pip.py 放入 python 目录内
# 修改 python311._pth 文件,去掉 import site 前的#
cd python-3.11.3-embed-amd64
python get-pip.py
python .\Scripts\pip3.exe install requests
python .\Scripts\pip3.exe install pycryptodome
python .\Scripts\pip3.exe list
下载脚本并执行
# 下载 https://github.com/douniwan5788/zte_modem_tools
python zte_factroymode.py telnet # 用内置账户和密码开 telnet
# 默认 IP: 192.168.1.1,端口 80
# 内置账户列表
factorymode, CMCCAdmin, CUAdmin, telecomadmin, cqadmin, user, admin, cuadmin, lnadmin, useradmin
# 内置密码列表
nE%jA@5b, aDm8H%MdA, CUAdmin, nE7jA%5m, cqunicom, 1620@CTCC, 1620@CUcc, admintelecom, cuadmin, lnadmin
# 指定账户、密码、IP、端口
python zte_factroymode.py --user lnadmin --pass lnadmin --ip 192.168.0.1 --port 80 telnet open
各运营商超级密码
| 运营商 | 地址 | 超级用户名 | 超级密码 |
|---|---|---|---|
| 移动 | http://192.168.1.1 | CMCCAdmin | aDm8H%MdA |
| 联通 | http://192.168.1.1/cu.html | cuadmin (浙江/内蒙/河北) | cuadmin |
| 联通 | - | lnadmin (辽宁) | lnadmin |
| 联通 | - | qhuniadmin (青海) | - |
| 联通 | - | CUAdmin#HGU (湖南) | - |
| 联通 | - | cqunicom (重庆) | cqunicom |
| 联通 | - | 123qweasdzxc (北京) | - |
| 联通 | - | cu@HNunicom (海南) | - |
| 联通 | - | 8MCU@HLJ (黑龙江) | 8MCU@HLJ |
| 联通 | - | Gx@123gx (广西) | - |
| 电信 | http://192.168.1.1:8080 | telecomadmin | nE7jA%5m |
广东部分地区: 账号 CUAdmin + 密码 cuadmin + 光猫背面 MAC 前 6 位小写
方法 3: 集成工具
方法 4: sendcmd 命令永久开启 Telnet
# 必须在 5 分钟内执行以下命令
sendcmd 1 DB p TelnetCfg
sendcmd 1 DB set TelnetCfg 0 Lan_Enable 1 # 局域网登录允许
sendcmd 1 DB set TelnetCfg 0 TS_UName root
sendcmd 1 DB set TelnetCfg 0 TSLan_UName root
sendcmd 1 DB set TelnetCfg 0 TS_UPwd Zte521
sendcmd 1 DB set TelnetCfg 0 TSLan_UPwd Zte521
sendcmd 1 DB set TelnetCfg 0 Max_Con_Num 99 # 最多登录用户数
sendcmd 1 DB set TelnetCfg 0 ExitTime 999999
sendcmd 1 DB set TelnetCfg 0 InitSecLvl 3
sendcmd 1 DB set TelnetCfg 0 CloseServerTime 9999999
sendcmd 1 DB set TelnetCfg 0 Lan_EnableAfterOlt 1 # 插上光纤后不自动关闭 telnet
sendcmd 1 DB save
killall telnetd
Telnet 账号: root / Zte521
方法 5: 中兴其他老光猫开启 Telnet
http://192.168.1.1/usr=CMCCAdmin&psw=aDm8H%25MdA&cmd=1&telnet.gch
http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch
Telnet 账户: CMCCAdmin / aDm8H%MdA
三、修改参数
版本切换命令
| 运营商 | 命令 |
|---|---|
| 移动 | - |
| 联通 | http://192.168.1.1/hidden_version_switch.gch |
| 电信 | - |
常用命令
# 查询国家地区代码
upgradetest gdefconf
# 查看区域码对照表
cat /etc/init.d/regioncode
# 修改为上海(若 upgradetest 不成功,请修改为 siupgrade)
upgradetest sdefconf 205
# 查看对应的 ID
setmac show2
# 进入工厂模式
echo 2 > /proc/zteinfo/factory/factorymode
# 修改 MAC 地址
setmac 1 32769 94:0B:19:43:4A:7A
# 修改 SN
setmac 1 512 UMTC0805C8DC
# 修改 ProductSn
setmac 1 2197 DCC64B51B314
# 修改为 10G EPON 模式
setmac 1 40960 5
# 退出工厂模式
echo 0 > /proc/zteinfo/factory/factorymode
# 查看超密
sendcmd 1 DB p DevAuthInfo
# 修改超密
sendcmd 1 DB set DevAuthInfo 0 User telecomadmin
sendcmd 1 DB set DevAuthInfo 0 Pass nE7jA%5m
sendcmd 1 DB save
# 解密配置文件
sendcmd 1 DB decry /userconfig/cfg/db_user_cfg.xml # 解密后存放在/tmp/debug-decry-cfg
cat /tmp/debug-decry-cfg | grep Pass
# 保存回写到配置文件
sendcmd 1 DB save # /userconfig/cfg/db_user_cfg.xml
sendcmd 1 DB saveasy # /userconfig/cfg/db_backup_cfg.xml
# TFTP 传输配置文件
cd /userconfig/cfg
tftp 192.168.1.3 -pl db_user_cfg.xml # 下载到 PC
tftp 192.168.1.3 -gr db_user_cfg.xml # 上传覆盖
cp -f db_user_cfg.xml db_backup_cfg.xml
# ITMS 配置
sendcmd 1 DB set MgtServer 0 ConnectionRequestUsername hgw
sendcmd 1 DB set MgtServer 0 ConnectionRequestPassword hgw
sendcmd 1 DB set MgtServer 0 UserName itms
sendcmd 1 DB set MgtServer 0 Password itms
sendcmd 1 DB save
# 强制注册,防跳主页
sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save
# 修改最大设备连接数量限制
sendcmd 1 DB p CltLmt
sendcmd 1 DB set CltLmt 8 Max 99
# PPPoE 连接数限制
sendcmd 1 DB p WANCPPP
sendcmd 1 DB set WANCPPP 0 MaxUser 99
sendcmd 1 DB save
# 禁用 TR069 远程控制
sendcmd 1 DB p MgtServer
sendcmd 1 DB set MgtServer 0 URL http://127.0.0.1
sendcmd 1 DB set MgtServer 0 Tr069Enable 0
sendcmd 1 DB save
# 删除 TR069
sendcmd 1 DB p WANC
sendcmd 1 DB delr WANC 0
sendcmd 1 DB save
# 删除 WiFi 名前缀(移除 CMCC_和 ChinaNet_前缀)
sendcmd 1 DB set WLANCfg 0 ESSIDPrefix
sendcmd 1 DB set WLANCfg 4 ESSIDPrefix
sendcmd 1 DB save
# 关闭下行 GPON 光口和 WiFi
ip link set mini-olt down
rmmod optical
rmmod mtlk
rmmod mtlkroot
# 开启下行 GPON 光口和 WiFi
insmod /kmodule/optical.ko
insmod /kmodule/mtlkroot.ko
insmod /kmodule/mtlk.ko
# 关闭防火墙
sendcmd 1 DB set FWLevel 0 Level 0
sendcmd 1 DB save
系统信息查询
# 获取两个 kernel 分区中固件的版本号
upgradetest getver
# 输出 kernel 分区的固件版本号和编译日期部分
# 移动联通为 mtd7 和 mtd8,电信为 mtd9 和 mtd10
hexdump -C -s 0x180 -n 128 /dev/mtd7
# 查看硬件配置信息
cat /proc/capability/boardinfo
# 示例输出:
# system:LINUX
# cpufac:ZXIC
# cpumod:ZX279132
# 2gwlmod:INTEL
# 5gwlmod:INTEL
# cpufre:1100MHZ
# cpunum:4
# flshcap:256MB
# ddrcap:512MB
# 查看 u 盘挂载目录
df # 移动 usb1_1,联通 USB1_disc1,电信 USB_disc1
# 查看启动分区
cat /proc/csp/versionstates
# 示例:
# baseaddress : 0x1600000
# current : 0
# version1states : 0x8f
# version2states : 0x0
# Index Running Latest CRC Integrality Type
# 0 Y Y Y Y Upg
# 1 N N N N Upg
# 查看当前活动分区
fw_flashing
# baseaddr:1600000, curpdev=/dev/mtd7, offset=0
四、备份与更换固件
1. 备份完整闪存
注意: U 盘不得用 PE 系统,格式化成普通的 FAT32 或 NTFS 格式!
# 查看挂载目录
df
# 三种方式都备份一次
dd if=/dev/mtd0 of=/mnt/usb1_1/f7607p_dd.bin # 联通和电信被阉割 dd
cat /dev/mtd0 > /mnt/usb1_1/f7607p_cat.bin
nand kread /dev/mtd0 0x0 0x10000000 /mnt/usb1_1/f7607p_nand.bin
# ⚠️ 不能备份活动分区 kernel,否则备份的 kernel 启动时通不过 CRC 校验!!!
# 移动版备份
cd /mnt/usb1_1
nand kread /dev/mtd8 0x0 0x2800000 /mnt/usb1_1/kernel.bin # 非活动分区
nand kread /dev/mtd9 0x0 0x3200000 /mnt/usb1_1/osgi.bin # 插件分区
# 联通版备份
cd /mnt/USB1_disc1
nand kread /dev/mtd8 0x0 0x2800000 /mnt/USB1_disc1/kernel.bin
nand kread /dev/mtd9 0x0 0x1000000 /mnt/USB1_disc1/framework.bin
nand kread /dev/mtd11 0x0 0x7900000 /mnt/USB1_disc1/plugin_data.bin
nand kread /dev/mtd6 0x0 0x600000 /mnt/USB1_disc1/preplugin.bin
# 电信版备份
cd /mnt/USB_disc1
nand kread /dev/mtd8 0x0 0x2800000 /mnt/USB_disc1/kernel.bin
nand kread /dev/mtd9 0x0 0x1000000 /mnt/USB_disc1/framework.bin
2. 分区结构
移动版
dev: size erasesize name
mtd0: 10000000 00020000 "whole flash"
mtd1: 00200000 00020000 "u-boot"
mtd2: 00200000 00020000 "others"
mtd3: 00200000 00020000 "parameter tags"
mtd4: 00200000 00020000 "wlan"
mtd5: 00800000 00020000 "usercfg"
mtd6: 00600000 00020000 "middle"
mtd7: 02800000 00020000 "kernel1" # 核心分区
mtd8: 02800000 00020000 "kernel2"
mtd9: 03200000 00020000 "osgi1" # 插件分区
mtd10: 03200000 00020000 "osgi2"
mtd11: 03600000 00020000 "plugin_data"
mtd12: 024e0000 00020000 "rootfs"
联通版
dev: size erasesize name
mtd0: 10000000 00020000 "whole flash"
mtd1: 00200000 00020000 "u-boot" # uboot 被加密和签名绑定了 CPU id 或 NAND id
mtd2: 00200000 00020000 "others" # BootImageNum=0 从 kernel1 启动,BootImageNum=1 从 kernel2 启动
mtd3: 00200000 00020000 "parameter tags"
mtd4: 00200000 00020000 "wlan"
mtd5: 00800000 00020000 "usercfg"
mtd6: 00600000 00020000 "preplugin"
mtd7: 02800000 00020000 "kernel1" # 核心分区
mtd8: 02800000 00020000 "kernel2"
mtd9: 01000000 00020000 "framework" # 插件分区
mtd10: 01000000 00020000 "framework1"
mtd11: 07900000 00020000 "plugin_data"
mtd12: 024c0000 00020000 "rootfs" # kernel 分区内的一部分,不用刷
电信版
dev: size erasesize name
mtd0: 10000000 00020000 "whole flash"
mtd1: 00200000 00020000 "u-boot"
mtd2: 00200000 00020000 "others"
mtd3: 00200000 00020000 "parameter tags"
mtd4: 00200000 00020000 "wlan"
mtd5: 00800000 00020000 "usercfg"
mtd6: 01000000 00020000 "framework" # 插件分区
mtd7: 01000000 00020000 "framework1"
mtd8: 00600000 00020000 "dbus"
mtd9: 02800000 00020000 "kernel1" # 核心分区
mtd10: 02800000 00020000 "kernel2"
mtd11: 07900000 00020000 "plugin_data"
mtd12: 024c0000 00020000 "rootfs"
3. 刷机步骤
⚠️ 重要: 首先要判断当前活动分区是哪一个,刷机只能刷非活动分区,否则产生大量坏块,机器成砖!
# 查看启动分区
cat /proc/csp/versionstates
# 查看当前活动分区
fw_flashing
# 切换分区
upgradetest switchver 1 # 下次启动调整活动分区为 mtd8
upgradetest switchver 0 # 下次启动调整活动分区为 mtd7
移动刷入联通 firmware
# 0=mtd7(移动), 1=mtd8(联通)
cd /mnt/usb1_1
echo 2 > /proc/zteinfo/factory/factorymode
touch /userconfig/nanddebug
nand kerase /dev/mtd8 0x0 0x2800000 # 清除非活动分区 mtd8
nand kwrite /dev/mtd8 0x0 0x2800000 ./kernel.bin
reboot
完整刷入联通 firmware
cd /mnt/USB1_disc1
echo 2 > /proc/zteinfo/factory/factorymode
# 刷写 kernel
nand kerase /dev/mtd8 0x0 0x2800000
nand kwrite /dev/mtd8 0x0 0x2800000 ./kernel.bin
# 刷写 framework (mtd9、mtd10)
nand kerase /dev/mtd9 0x0 0x1000000
nand kwrite /dev/mtd9 0x0 0x1000000 ./framework.bin
nand kerase /dev/mtd10 0x0 0x1000000
nand kwrite /dev/mtd10 0x0 0x1000000 ./framework.bin
# 刷写 plugin_data
nand kerase /dev/mtd11 0x0 0x7900000
nand kwrite /dev/mtd11 0x0 0x7900000 ./plugin_data.bin
# 刷写 preplugin
nand kerase /dev/mtd6 0x0 0x600000
nand kwrite /dev/mtd6 0x0 0x600000 ./preplugin.bin
rm /userconfig/nanddebug
reboot
五、TTL 救砖
1. 硬件准备
- 在左上角焊接排针
- 使用 TTL 转 USB 小板进行调试
- 设置 COM3 口的波特率 115200
2. 进入 UBOOT 模式
连接 → 通电 → 快速回车 → 进入 UBOOT 模式
3. 刷入 kernel、osgi 分区
# 查看环境变量(默认 192.168.1.100 为 TFTP 服务器 IP,192.168.1.1 为光猫 IP)
printenv
# 设置 IP
setenv ipaddr 192.168.1.1 # 光猫 IP
setenv serverip 192.168.1.100 # TFTP 服务器 IP
saveenv
# 移动、联通、电信版写入 kernel 分区
tftp 0x88000000 kernel.bin
nand erase 0x1600000 0x2800000
nand erase 0x3e00000 0x2800000
nand write 0x88000000 0x1600000 0x2800000
nand write 0x88000000 0x3e00000 0x2800000
# 移动版写入 osgi 分区
tftp 0x88000000 osgi.bin
nand erase 0x6600000 0x3200000
nand erase 0x9800000 0x3200000
nand write 0x88000000 0x6600000 0x3200000
nand write 0x88000000 0x9800000 0x3200000
# 联通、电信版写入 framework 分区
tftp 0x88000000 framework.bin
nand erase 0x6600000 0x1000000
nand erase 0x7600000 0x1000000
nand write 0x88000000 0x6600000 0x1000000
nand write 0x88000000 0x7600000 0x1000000
reset # 重启
4. 修复坏块
# 查看闪存上标记的所有坏块
nand bad
# 清除坏块标记
nand scrub 0x3e00000 0x2800000
# 正常使用的 mtd7 分区复制到清除坏块标记的 mtd8
nand read 0x88000000 0x1600000 0x2800000
nand write 0x88000000 0x3e00000 0x2800000
reset # 进入 mtd7
# 将下次启动的分区设置为修复后的 mtd8
upgradetest switchver 1
reboot
5. 编辑器固件使用方法
- 首先备份自己光猫的 uboot 分区
- 把编辑器固件里的 uboot 分区替换为自己光猫的 uboot
- 编程器刷入
6. 开启 Telnet(UBOOT 模式下)
sendcmd 1 DB set TelnetCfg 0 TS_Enable 1 # 打开 telnet
sendcmd 1 DB set PortControl 3 PortEnable 1 # 打开 23 端口
六、注意事项(坑)
- 北京联通无超级界面
- 陕西、海南直接屏蔽了 WIFI,建议使用区域代码 234(电信研究院)
- U 盘不得用 PE 系统,格式化成普通的 FAT32 或 NTFS 格式
- 刷机不得刷入活动分区
- 电信卡 20%:换回旧猫,小翼管家 app → 网关设置 → 自助更换网关功能(部分区域未开放)
- 湖北电信 10GEPON 下发卡 40%:把 SN 和 MAC 改成我的旧光猫,可正常下发注册
- ⚠️ 不能备份活动分区 kernel,否则备份的 kernel 启动时通不过 CRC 校验!!!
- IPTV 卡顿:要设置好组播 VLAN 和 IGMP
七、下挂普通光猫
说明: 中兴主控的 GPON 即插即用,其他的需要刷机。
方法 1: VLAN 绑定
主光猫的上网 VLAN 41,把 LAN5(下行光口)改为 VLAN 绑定 41/41,待光猫注册灯常亮后,在子光猫里配置业务数据信息。
方法 2: DHCP 模式
下挂普通 GPON 光猫,待光猫注册灯常亮后,联网方式改成 DHCP 就行,VLAN 不启用,把下挂光猫改成 192.168.2.1(不能是主光猫默认地址 192.168.1.1),链路通道里的 IP 参数也要修改一下。
方法 3: 桥接模式
主光猫的上网 VLAN 桥接,绑定 LAN5(下行光口),下行口接光猫(只要不是华为猫,基本都支持,光猫类型是 hug)。光猫插上 PON 灯不闪烁后,进光猫设置 WAN 的连接设置成不启用 VLAN 模式,PPPoE 拨号填上,7607 的 IP 地址一定要改成非 192.168.1.1,基本就 OK 了。
八、F7607P 连接软路由
说明: F7607P 已成功联网,它的 LAN1(2.5G 口)连接路由的 WAN 口,路由的 LAN 口连接光猫的 LAN4 口。
具体设置:
- 新建 2 条 VLAN,都是桥接模式:
1_INTERNET_B_VID_0和2_INTERNET_B_VID_4031 - 停止光猫 LAN 侧 DHCP 服务
九、组建小型全光 OLT
十、引用文献
- https://akbwe.com/posts/an-attempt-to-replace-zte-f7607p-nand-mtdblocks/
- https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=8261258&highlight=f7607p
- https://www.cnblogs.com/xxhstudio/p/12752072.html
附录:社区补充技巧
破解刷电信后打开任意网页自动跳转 LOID 注册页面
sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save
创维 SK-D742 移动版光猫 TTL 强开 Telnet
主要步骤:
- 拆机 - 四个脚垫下面四颗螺丝,正面和侧面各一个卡口,网口面两个卡口
- 焊 TTL,主板上标注得很清楚
- 接线 CH341,驱动 CH341SER64win,接线线序 TX-RX、RX-TX、G-G
- 开机用 SecureCRT 跑码,中间有一秒可以按任意键进 UBOOT
- 找到 tty 的用户名和密码:root / aDm8H%MdA
- 输入 telnet 开启命令:
sidbg 1 DB set TelnetCfg 0 TS_Enable 1 # 打开 telnet enable sidbg 1 DB set TelnetCfg 0 Lan_Enable 1 # 打开 LAN 口 telnet sidbg 1 DB save # 保存
创维 SK-D848SU 密码获取
# 通过设备标识 SN 号获取超密
sidbg 1 DB decry /userconfig/cfg/db_user_cfg.xml && cat /var/tmp/debug-decry-cfg | sed -n '/DevAuthInfo/,/<Tb.>/p' | grep -i "User\|Pass"
用户提权为管理员
sendcmd 1 DB set DevAuthInfo 1 Level 1
sendcmd 1 DB save
指示灯控制
tso allon # 打开指示灯
tso alloff # 关闭指示灯