一、ZXHN F4607PF/ZXHN 7607P光猫
ZXHN F4607PF/ZXHN 7607P光猫是中兴推出的全光智能网关,其原有FTTH基础上,采用Wi-Fi 6全光产品替换原有网关及路由器等设备,搭配光纤取代传统的网络传输介质,为用户带来全覆盖、高网速、无缝切换的极致生活体验。 真千兆网络体验:光纤传输损耗少,完美解决传统网线组网的损耗问题,搭配Wi-Fi 6高性能组网设备,实际测速超千兆。 全区域无缝漫游:支持全光网关与光路由器EasyMesh组网,实现全屋1张网和毫秒级智能漫游,构建无处不在、极速智能的家庭网络。(官网介绍)其最大的优点是含有一个原生2.5G的LAN电口,从而可以解决千兆LAN因物理限制而千兆宽带只能跑到950Mbps速度的问题。在众位大神的共同努力下先后研究出来了XGPON模式改成10G EPON模式、移动版刷联通版、移动版刷电信版、联通版刷电信版等骚操作,并将这些操作整理集合成教程共享了出来,在此表示特别的感谢。本着共享的目的,本文章特意整理了相关的教程,使其更加完整和完善。
关于ZXHN F4607PF/ZXHN 7607P的拆解和测评,acwifi站长发布已经详细拆机和测试文章,我就在此不献丑了。有兴趣的可以移步:2.5G LAN口光猫中兴F7607P拆机。
重要提示:刷机有风险,刷前需谨慎!!!
二、移动版固件、联通版固件、电信版固件区别
- 由于硬件相同,软件功能基本差别不大。
- 电信版固件在网页后台可以自由切换XGPON和XEPON模式。联通版和移动版则需要通过Telnet进行修改。
三、Telnet的开启和永久固定
zte_factroymode.py是实力网友@douniwan逆向固件后的开源python工具。十分感谢!
TelnetONU FactoryMode是网友@mayi5147以zte_factroymode为核心编译而成本地离线工具。十分感谢!
从而使Telnet的开启和永久固定变得异常简单,再次感谢大佬们努力!
由于软件需要相应的运行库,如果没有运行库请先安装运行库,运行库安装包以放置文末。
TelnetONU FactoryMode软件介绍:
- 1、增加了内置账号及密码,支持比如云南移动这种特殊账号密码。
- 2、支持默认超密情况下自定义IP地址及端口的输入。
- 3、支持全手工输入自定义信息进行获取。
- 4、整合Telnet调试终端,支持自定义IP地址及端口登录。
- 5、配合Frp或者公网IP支持远程连接。
- 6、内置永久开启Telnet命令,连接并成功登录后自行输入所有命令并保存。
Telnet的开启
第一步:确保光猫通电后可以正常登录,并且超级密码为默认值,如果非默认值可尝试通过复位孔对光猫进行复位后在进行开启。
第二步:启动软件后,选择对应的对应的固件版本。
第三步:按需选择执行地址(192.168.1.1)获取或自定义执行,依次输入光猫的IP地址及端口号(如果远程连接输入公网IP地址以及转发出去的光猫http端口号,注:移动和联通为80端口,电信为8080端口)。
第四步:程序自动运行完成连接和临时账号密码的获取。(临时账户为user=和&之间的8个字符,临时密码为pass=和\x00之间的8个字符)5分钟之内有效。
如:b'FactoryModeAuth.gch?user=e7cvt74z&pass=0hrRIVv0\x00'
,则其中临时账户为e7cvt74z
,临时密码为0hrRIVv0
。
第五步:此时可以选择使用内置的telnet终端登录也可以使用其它的,如果失败则可以返回重新获取。
Telnet的永久固定
选择使用内置的终端进行登录,则正确输入后内置终端会启动并自动登录并开始执行永开telnet命令,等待结束即可。此时,Telnet登录账号:root
Telnet登录密码:Zte521
如果选择其他的终端登陆Telnet,这里以Xshell 7为例,第四步获取的账号密码登录,并依次输入下列命令(一条一条输入避免出错):修改代码中的Zte521可以修改密码,但要俩个要修改为相同内容。
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
sendcmd 1 DB save
killall telnetd
完成后,Telnet登录账号:root
Telnet登录密码:Zte521
(如果进行修改则为修改过的)
到此,已完成了Telnet的开启和永久固定!
四、版本的互换
备份原机闪存
折腾任何机器的第一步永远是备份,对于F7607P来说犹如此。从目前已知的信息看,此机器CPU为ZX279132s,属于高安芯片,带secure boot,闪存内的uboot被加密和签名过,且其中绑定了CPU id或NAND id,具体哪个还未知,已知的就是自己的uboot只能在自己的机器上用,别人的uboot分区备份在自己的机器上启动不了,所以一定要备份好自己的uboot分区,万一挂了又没有备份的话就会彻底变砖,编程器也救不了。
插入NTFS或FAT32格式的U盘,Telnet登陆后可以使用如下命令备份完整闪存,
移动固件:dd if=/dev/mtd0 of=/mnt/usb1_1/f7607p_dd.bin
cat /dev/mtd0 > /mnt/usb1_1/f7607p_cat.bin
nand kread /dev/mtd0 0x0 0x10000000 /mnt/usb1_1/f7607p_nand.bin
联通固件:
cat /dev/mtd0 > /mnt/USB1_disc1/f7607p_cat.bin
nand kread /dev/mtd0 0x0 0x10000000 /mnt/USB1_disc1/f7607p_nand.bin
电信固件:
cat /dev/mtd0 > /mnt/USB_disc1/f7607p_cat.binnand kread /dev/mtd0 0x0 0x10000000 /mnt/USB_disc1/f7607p_nand.bin
保险起见可以几种方式都备份2次。
固件分区介绍
联通版固件的分区结构:
/# cat /proc/mtd
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 "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"
电信版固件的分区结构:
/ # cat /proc/mtd
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"
其中kernel1和kernel2完全一样,uboot启动时会读取mtd2中的BootImageNum值,其为0的话就从kernel1启动,1的话从kernel2启动,如果被选择的分区无法通过crc和rsa等校验,则会从另一个kernel分区启动。rootfs分区是kernel分区内的一部分。framework和framework1是插件分区,也完全相同,互为备份。移动版固件要改为联通版,只用核心功能的话,只需要替换mtd7和mtd8就行,要完整替换的话还需要替换mtd9和mtd10插件分区,mtd12由于被包含在mtd7或mtd8之内,所以不需要再单独额外替换,和移动与联通版不同,电信版的kernel分区改为了mtd9和mtd10,但实际在闪存中的地址不变,还是0x1600000-0x3e00000和0x3e00000-0x6600000,大小也还是0x2800000,rootfs的结构也一样,所以可以继续使用上面的方法替换,只需稍加改动。
刷联通版固件
第一步,检验联通版固件,对比下hash值以防分区数据出错,kernel分区差一个字节也无法启动。
第二步,将kernel.bin、framework.bin
两个文件放入NTFS或FAT32格式的U盘根目录(注意:最好将U盘进行格式化,避免刷机出现问题),插入光猫USB接口,进入Telnet
,运行fw_flashing
,会报错并给出当前启动的内核分区,如:baseaddr:1600000, curpdev=/dev/mtd7, offset=0
其中mtd7为当前启动的内核分区:
当启动分区为mtd7时,执行命令upgradetest switchver 1
当启动分区为mtd8时,执行命令upgradetest switchver 0
作用是下一次启动时切换到另一个分区,把固件写入另一个当前没有被使用的分区,避免直接对正在运行中的Kernel分区做覆盖,很可能会写入失败并且产生大量坏块。
第三步,严格按顺序执行以下命令,一次一行避免出错!【注意:U盘目录名移动版默认为usb1_1,联通版默认为USB1_disc1,电信版默认为USB_disc1。】
当启动分区为mtd7时,执行以下命令:
cd /mnt/usb1_1
echo 2 > /proc/zteinfo/factory/factorymode
touch /userconfig/nanddebug
nand kerase /dev/mtd8 0x0 0x2800000
nand kwrite /dev/mtd8 0x0 0x2800000 ./kernel.bin
当启动分区为mtd8时,执行以下命令:
cd /mnt/usb1_1
echo 2 > /proc/zteinfo/factory/factorymode
touch /userconfig/nanddebug
nand kerase /dev/mtd7 0x0 0x2800000
nand kwrite /dev/mtd7 0x0 0x2800000 ./kernel.bin
完成后执行reboot
进行重启,重启完成后再次进入Telnet继续按顺序执行以下命令:
再次运行fw_flashing
得到当前启动的内核分区:
当启动分区为mtd8时,执行以下命令:
cd /mnt/USB1_disc1
echo 2 > /proc/zteinfo/factory/factorymode
nand kerase /dev/mtd7 0x0 0x2800000
nand kwrite /dev/mtd7 0x0 0x2800000 ./kernel.bin
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
nand kerase /dev/mtd11 0x0 0x7900000
nand kerase /dev/mtd6 0x0 0x600000
rm /userconfig/nanddebug
当启动分区为mtd7时,执行以下命令:
cd /mnt/USB1_disc1
echo 2 > /proc/zteinfo/factory/factorymode
nand kerase /dev/mtd8 0x0 0x2800000
nand kwrite /dev/mtd8 0x0 0x2800000 ./kernel.bin
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
nand kerase /dev/mtd11 0x0 0x7900000
nand kerase /dev/mtd6 0x0 0x600000
rm /userconfig/nanddebug
第四步,修改区域信息,使用cat /etc/init.d/regioncode
查看区域码对照表,找到想要的区域代码,例如内蒙古为331,然后用命令upgradetest sdefconf 331
切换区域为内蒙古。
300:Jiangsu
301:Xinjiang
302:Hainan
303:Tianjin
304:Anhui
305:Shanghai
306:Chongqing
307:Beijing
308:Sichuan
309:Shandong
310:Guangdong
311:Hubei
312:Fujian
313:Suzhou
314:Zhejiang
315:Shanxi
316:Hunan
317:Yunnan
318:Xizang
319:Heilongjiang
320:Guizhou
321:Shanxi2
322:Hebei
323:Ningxia
324:Guangxi
325:Jiangxi
326:Gansu
327:Qinghai
328:Xian
329:Liaoning
330:Jilin
331:Neimeng
332:Henan
切换后猫会自动重启,加载内蒙古地区的默认配置,当然telnet又被关闭了,有需要可以再次重新开启。
另须注意:北京联通没有超级管理员账户,不建议将区域设置为北京
刷电信版固件
第一步,检验电信版固件,对比下hash值以防分区数据出错,kernel分区差一个字节也无法启动。
第二步,将kernel.bin、framework.bin
两个文件放入NTFS或FAT32格式的U盘根目录(注意:最好将U盘进行格式化,避免刷机出现问题),插入光猫USB接口,进入Telnet
,运行fw_flashing
,会报错并给出当前启动的内核分区,如:baseaddr:1600000, curpdev=/dev/mtd7, offset=0
其中mtd7为当前启动的内核分区:
当启动分区为mtd7时,执行命令upgradetest switchver 1
当启动分区为mtd8时,执行命令upgradetest switchver 0
作用是下一次启动时切换到另一个分区,把固件写入另一个当前没有被使用的分区,避免直接对正在运行中的Kernel分区做覆盖,很可能会写入失败并且产生大量坏块。
第三步,严格按顺序执行以下命令,一次一行避免出错!
当启动分区为mtd7时,执行以下命令:
cd /mnt/usb1_1
echo 2 > /proc/zteinfo/factory/factorymode
touch /userconfig/nanddebug
nand kerase /dev/mtd8 0x0 0x2800000
nand kwrite /dev/mtd8 0x0 0x2800000 ./kernel.bin
当启动分区为mtd8时,执行以下命令:
cd /mnt/usb1_1
echo 2 > /proc/zteinfo/factory/factorymode
touch /userconfig/nanddebug
nand kerase /dev/mtd7 0x0 0x2800000
nand kwrite /dev/mtd7 0x0 0x2800000 ./kernel.bin
完成后执行reboot
进行重启,重启完成后再次进入Telnet继续按顺序执行以下命令:
再次运行fw_flashing
得到当前启动的内核分区:
当启动分区为mtd9时,执行以下命令:
cd /mnt/USB_disc1
echo 2 > /proc/zteinfo/factory/factorymode
nand kerase /dev/mtd10 0x0 0x2800000
nand kwrite /dev/mtd10 0x0 0x2800000 ./kernel_CT.bin
umount /opt/upt/apps/mnt1(移动版刷电信固件不用这一步)
umount /opt/upt/apps/mnt2(移动版刷电信固件不用这一步)
nand kerase /dev/mtd6 0x0 0x1000000
nand kwrite /dev/mtd6 0x0 0x1000000 ./framework_CT.bin
nand kerase /dev/mtd7 0x0 0x1000000
nand kwrite /dev/mtd7 0x0 0x1000000 ./framework_CT.bin
nand kerase /dev/mtd8 0x0 0x600000
nand kerase /dev/mtd11 0x0 0x7900000
rm /userconfig/nanddebug
当启动分区为mtd10时,执行以下命令:
cd /mnt/USB_disc1
echo 2 > /proc/zteinfo/factory/factorymode
nand kerase /dev/mtd9 0x0 0x2800000
nand kwrite /dev/mtd9 0x0 0x2800000 ./kernel_CT.bin
umount /opt/upt/apps/mnt1(移动版刷电信固件不用这一步)
umount /opt/upt/apps/mnt2(移动版刷电信固件不用这一步)
nand kerase /dev/mtd6 0x0 0x1000000
nand kwrite /dev/mtd6 0x0 0x1000000 ./framework_CT.bin
nand kerase /dev/mtd7 0x0 0x1000000
nand kwrite /dev/mtd7 0x0 0x1000000 ./framework_CT.bin
nand kerase /dev/mtd8 0x0 0x600000
nand kerase /dev/mtd11 0x0 0x7900000
rm /userconfig/nanddebug
第四步,修改区域信息,使用cat /etc/init.d/regioncode
查看区域码对照表,找到想要的区域代码,例如内蒙古为231,然后用命令upgradetest sdefconf 231
切换区域为内蒙古。
200:Jiangsu
201:Xinjiang
202:Hainan
203:Tianjin
204:Anhui
205:Shanghai
206:Chongqing
207:Beijing
208:Sichuan
209:Shandong
210:Guangdong
211:Hubei
212:Fujian
214:Zhejiang
215:Shanxi
216:Hunan
217:Yunnan
218:Xizang
219:Heilongjiang
220:Guizhou
221:Shanxi2
222:Hebei
223:Ningxia
224:Guangxi
225:Jiangxi
226:Gansu
227:Qinghai
229:Liaoning
230:Jilin
231:Neimeng
232:Henan
234:TelecomInstitute
切换后猫会自动重启,加载内蒙古地区的默认配置,当然telnet又被关闭了,有需要可以再次重新开启。
另须注意:
- 电信版中兴系统的登陆入口不是80端口,而是8080。80端口为插件内的系统,直接访问8080端口会自动跳转到80端口登陆,所以电信版没有插件分区无法进入网页后台。
- 电信版某些省份的默认配置限制较多,建议使用区域代码
234
电信研究院。
U-boot下写入固件
如果两个kernel分区都已经损坏无法启动的话,只能接TTL在uboot下写入分区备份。(左上角四个空孔从左到右1、空 2、TXD 3、RXD 4、GND)
安装OpenTFTP或tftpd64等tftp服务端软件,将分区备份放入tftp的工作目录内,给光猫通电,然后迅速按任意键中断启动,进入U-boot控制台:
设置本机和TFTP服务器IP:
setenv ipaddr 192.168.2.2
setenv serverip 192.168.2.3
saveenv
然后开始下载分区备份到内存并写入到NAND中对应的位置,三家运营商的版本kernel分区的位置大小一样,写入命令一样,但移动版的osgi分区与联通电信版的framework分区位置和大小不同,注意!!!
移动/联通/电信版写入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
重启
附加设置(以下修改均在Telnet中进行)
ITMS注册
电信固件和联通固件部分省份没注册ITMS服务器的话会劫持所有DNS请求的结果到192.168.1.1,使用如下命令手动欺骗ITMS注册结果:
sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save
修改超级密码
- 修改超级帐号:
sendcmd 1 DB set DevAuthInfo 0 User XXXXXX
- 修改超级密码:
sendcmd 1 DB set DevAuthInfo 0 Pass XXXXXX
修改用户限制
sendcmd 1 DB p CltLmt
sendcmd 1 DB set CltLmt 8 Max 20 (修改最大用户数为20,可以改成其他数目,最大数目不超过255)
sendcmd 1 DB set CltLmt 8 Enable 0
sendcmd 1 DB save
修改MAC、SN等
查看当前信息:setmac show2
修改格式:setmac 1 [ID]
[内容] 绿色为对应条目的ID号,蓝色为修改内容。
如修改PONMAC命令为:setmac 1 32769 MAC地址
五、相关下载
Onedrive网盘:点击打开 密码:6666- 百度网盘:https://pan.baidu.com/s/1E0z4MXCH8iM27q1HujAkaA?pwd=6666 提取码: 6666
- 阿里云盘:https://www.alipan.com/s/c8ruADrmHCr 提取码: am79
你好 无法下载呢 没有下载地址
已更新
软件分享一下
已更新