能力值:
( LV2,RANK:10 )
|
-
-
2 楼
中兴和华为的光猫都自带基于lxc容器技术的OpenWRT子系统,能在里面折腾的就不要在宿主机上折腾,这个容器的权限和宿主系统同级没必要折腾宿主系统,进入openwrt是这个命令 `saf console` 华为的是`saf-huawei console`进入密码自己逆向 (镜像路径/opt/upt/framework/saf/rootfs 原则上最好不要修改这个路径里的文件但可以修改这个路径的文件/opt/upt/apps/apps 这个路径的文件会被bind挂载覆盖rootfs里的文件)进入这个openwrt系统后可以安装ipk的包。
最后于 2023-4-25 06:54
被微启宇编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
微启宇
中兴的光猫自带基于lxc容器技术的OpenWRT子系统你可以在里面折腾这个容器的权限和宿主系统同级没必要折腾宿主系统,进入openwrt是这个命令 `saf console` 进入密 ... 感谢分享,我的这个光猫实际上,只是用了中兴的芯片,里边的系统是被阉割过了的,所以是没有saf命令了,同时/opt/upt/framework/目录下都是空的,/opt/upt/apps/下也都是空的,折腾也是不得已。
最后于 2023-4-24 09:14
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
感谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
如果有人能找到该固件通过使用数据库配置能启动busybox的crond服务的话,那也是极好的,至少能实现不少事情了,运营商的这种芯片的光猫市占率极高。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
说一个另外的思路,从已有固件中获得内核版本,然后将cpio的文件系统放入内核源码,编译为zImage,然后和dtb一起制作成uImage,uImage就是系统uboot可引导的固件类型,这样也许就要替换uboot了。
我自己根据原版固件的版本通过源码编译的kernel制作成的zImage和uImage已经放在分享的云盘里了,这个zImage和uImage的rootfs里的/etc/init.d/rcS里的末尾加了一个自启的shell入口,即:/userconfig/init.sh,另外还加入了crond的服务器启动,配置路径也在/userconfig/crond。 文件系统是基于原版固件的最新版本制作的,仅加了如下内容: if [ -x /userconfig/init.sh ]
then
/userconfig/init.sh
fi
crond -c /userconfig/crond 编译后的数据放在了complie目录了。
最后于 2023-4-29 09:58
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
XYUU
微启宇
中兴的光猫自带基于lxc容器技术的OpenWRT子系统你可以在里面折腾这个容器的权限和宿主系统同级没必要折腾宿主系统,进入openwrt是 ... 用usb转串口接到光猫然后用串口工具看看uboot启动时的日志,看看uboot是否正常载入内核和报啥错误。
最后于 2023-4-25 07:14
被微启宇编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
微启宇
这有官方的固件,建议折腾官方可升级的固件而不是自己dump下来的, 自己dump下来然后在刷入会有无法启动的风险(我以前就这样玩废好几台光猫)。 [固件]& ... 我有串口小板的,这个帖子的固件我下过,没花猫币就找到了,而且我还测试过,他的固件只是比我的版本早些而已,大概是2021年6月20日的。
说一下最终结论吧,实际上到这里,固件的解密工作已经完成得差不多了。有dtb和rootfs了,然后放到相应得kernel源码里编译一份zImage就完成了。 所有的校验工作都是在uboot里,我把uboot载入到IDA里看了一下,uboot有Hash和RSA校验 ROM:00006E0B 0000000E C HASH timeout\n ROM:00006E19 0000000D C RSA timeout\n ROM:00006E26 0000000D C AES timeout\n 同时会根据固件头的Magic Number去找uImage的入口
ROM:00023974 DCB 0x99,0x99,0x99,0x99,"DDDDUUUU",0xAA,0xAA,0xAA,0xAA ROM:00024134 DCB 0x99,0x99,0x99,0x99,"DDDDUUUU",0xAA,0xAA,0xAA,0xAA ROM:00024B18 DCB 0x99,0x99,0x99,0x99,"DDDDUUUU",0xAA,0xAA,0xAA,0xAA 与这个uboot相匹配的CPU还有 ROM:0005446F 00000014 C CPU : ZX279128@A9, ROM:00054483 00000015 C CPU : ZX279128S@A9, ROM:00054498 00000015 C CPU : ZX279127S@A9, 验证通过后会跳到 ROM:00006E84 0000000C C verify OK!\n 如果出现问题则会 ROM:00006EA3 00000016 C code hash error !! \n 否则,则会 ROM:00006EB9 00000012 C code hash ok !! \n uboot的版本信息 ROM:0005122B 00000030 C U-Boot 2013.04-svn1633 (Oct 19 2021 - 10:18:42) 启动参数 ROM:00051296 00000082 C bootcmd=setenv bootargs mem=512M console=$(console) ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs init=/linuxrc ro;bootm 0x42000100 ttl波特率 ROM:00051324 00000010 C baudrate=115200 串口参数 ROM:0005140D 00000019 C console=ttyAMA0,115200n8 载入地址 ROM:000513B5 00000014 C loadaddr=0x44000000 相关的文件名: ROM:00051426 00000013 C bootfile=uboot.bin ROM:00051439 0000001E C bootloaderfile=bootloader.bin ROM:00051457 00000016 C linuzfile=vmlinuz.bin ROM:0005146D 00000015 C fullfile=upgrade.bin 配置文件: ROM:0005148D 0000001E C configfile=zxic_pubconfig.bcb 接下来会校验zImage的magic number: ROM:0005489D 0000001D C Bad Linux ARM zImage magic!\n 内置了gzip解压算法 ROM:00054B04 00000051 C GUNZIP: uncompress, out-of-mem or overwrite error - must RESET board to recover\n 也内置了lzma解压算法 ROM:00054B55 00000046 C LZMA: uncompress or overwrite error %d - must RESET board to recover\n 其他压缩格式会提示 ROM:00054B9B 00000023 C Unimplemented compression type %d\n 验证uImage的magic number ROM:00054BF7 00000012 C Bad Magic Number\n uImage头部crc32验证 ROM:00054C09 00000015 C Bad Header Checksum\n uImage数据crc32验证 ROM:00054C39 0000000E C Bad Data CRC\n 后面就是从tftp载入镜像的内容,也会校验上述逻辑 支持的芯片代号: ROM:0005C1FC 0000001A C Board: ZXIC zx279127sevb\n ROM:0005C216 0000001A C Board: ZXIC zx279128sevb\n ROM:0005C230 00000019 C Board: zxic zx279128evb\n ROM:0005C249 00000019 C Board: zxic zx279127evb\n 支持的8脚闪存颗粒: ROM:00059D2A 0000001F C SPI NAND FM25G02B 256MiB 3,3V ROM:00059D49 0000001F C SPI NAND PN26G01A 128MiB 3,3V ROM:00059D68 00000024 C SPI NAND GD5F1GQ4UAYIG 128MiB 3,3V ROM:00059D8C 00000023 C SPI NAND F50L1G41A (2Y)128MiB 3,3V ROM:00059DAF 00000023 C SPI NAND MX35LF1GE4AB 128MiB 3,3V ROM:00059DD2 00000023 C SPI NAND MX35LF2GE4AD 256MiB 3,3V ROM:00059DF5 00000024 C SPI NAND GD5F1GQ4UBYIG 128MiB 3,3V ROM:00059E19 00000026 C SPI NAND TC58CVG1S3HXAIX 256MiB 3,3V ROM:00059E3F 00000023 C SPI NAND BWM73D044SNF 256MiB 3,3V ROM:00059E62 0000001E C SPI NAND BWJX08U 256MiB 3,3V ROM:00059E80 0000001E C SPI NAND BWET08U 256MiB 3,3V ROM:00059E9E 00000023 C SPI NAND HYF2GQ4UHCCAE 256Mib 3,3V ROM:00059EC1 00000023 C SPI NAND HYF2GQ4UAACAE 256Mib 3,3V ROM:00059EE4 00000023 C SPI NAND XT26G02AWSEGA 256Mib 3,3V ROM:00059F07 0000001F C SPI NAND W25M02GV 256MiB 3,3V ROM:00059F26 00000020 C SPI NAND AFY2G08U0A 256MiB 3,3V ROM:00059F46 00000026 C SPI NAND MT29F2G01ABAGDSF 256MiB 3,3V ROM:00059F6C 00000021 C SPI NAND ZD35X2GAXXX 256MiB 3,3V ROM:00059F8D 00000020 C SPI NAND F50L2G41LB 256MiB 3,3V ROM:00059FAD 0000001E C SPI NAND FM25S02A 256MiB 3,3V 以及一些48脚闪存颗粒 ROM:0005B0AA 00000011 C Hynix H27U1G8F2B ROM:0005B0BB 00000010 C MX30LF1G08AA-TI ROM:0005B0CB 00000013 C MT29F1G08ABAEAWP:E ROM:0005B0DE 00000010 C esmt F59l1G81MA ROM:0005B0EE 00000015 C WINBOND W29N01GVSIAA ROM:0005B103 00000014 C Hynix HY27U1G6F2C1R ROM:0005B117 00000012 C ST NAND256W3A2BN6 ROM:0005B129 00000013 C Hynix HY27UF082G2B ROM:0005B13C 00000013 C Hynix HY27UT084G2M ROM:0005B14F 00000013 C Hynix HY27UV08BG5M ROM:0005B162 00000012 C Samsung K9F208U0B ROM:0005B174 00000013 C Samsung K9K8G08U0D ROM:0005B187 00000013 C Hynix H8BCS0SI0MBR ROM:0005B19A 00000013 C Samsung K9G8G08U0M ROM:0005B1AD 00000012 C XTX-PN27G01ABGITG ROM:0005B1BF 00000011 C S34ML02G200TF100 ROM:0005B1D0 0000000D C W29N02GVSIAA ROM:0005B1DD 0000000F C F59L2G81A-25TG ROM:0005B1EC 0000000D C MX30LF2G18AC ROM:0005B1F9 0000000F C TC58VG1S3ETA00 ROM:0005B208 00000011 C MX30LF2G018AC-TI ROM:0005B219 00000012 C HY27UF082G2A-TPCB ROM:0005B22B 0000000D C MT29F2G08ABA ROM:0005B238 00000010 C H27U2G8F2CTR-BC ROM:0005B248 0000000C C FMND2G08U3D ROM:0005B254 00000012 C FS33ND04GS108BFI0 ROM:0005B266 0000000C C ZD35X2GAXXX ROM:0005B272 0000000D C MX30LF2G28AD 今天就分析这些,等焊油到了补一下ttl针脚开始调试了。
最后于 2023-4-26 17:37
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
建议备份一下出厂时 /GN25L95_datas bob校准数据 /wlan wifi校准数据。校准丢失会影响光猫性能
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
我全盘都备份过的,那些地方我不会去动它的。
所以理论思路就是,找到这款芯片的uboot相关的编译参数配置,然后将参数配置放到uboot源码中编译,编译完成后放入仿真环境测试,没问题后刷入uboot。然后就可以愉快的引导uImage的镜像固件了(uImage是由rootfs放入内核编译获得zImage然后与dtb合成)。此后的标准固件就都可以用了,对于官方原版固件则可以通过我的解包程序解出uImage,刷入即可使用。
另一种思路则是patch掉官方uboot的校验code hash校验内容,其他crc32的校验内容倒可以还原。
最后于 2023-5-3 10:13
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
先尝试patch一下uboot放到仿真环境测试一下效果,所以这一步就是找到uboot的基址,目前数据中大部分字符串我已手工恢复。接着就是找一个arm的uboot编译过去,然后IDA打开找找特征。
我又用自己编写的工具解了一个吉比特GM693-R的光猫固件,也是这个芯片的,固件除了最后rootfs.cpio的压缩格式是gzip的之外,解包工具基本可以通用,而且gzip解包找结束偏移的特征也很明显,就是gzip结束后的对齐字节紧跟着就是gzip的块长度值。lzma的特征则是块结束后的对齐字节的值就是结束位置的offset。
也就是rootfs和kernel组合生成zImage的特征基本是同一套编译器生成的。
最后于 2023-4-25 19:47
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
给你上传一下这芯片的数据手册, 有这份资料的话可以知道针脚分布也可以自行画pcb板。
最后于 2023-4-28 00:16
被微启宇编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
ChatGPT回答:
使用IDA pro打开uboot程序的bin文件,设置正确的处理器类型和加载地址,然后使用IDA pro的反汇编功能分析bin文件的结构和代码。 在IDA pro中,找到uboot程序的入口点,通常是.text段的开头,然后跟踪执行流程,找到第一个BL指令,该指令调用了main函数。 在IDA pro中,观察R2寄存器的值,该值就是main函数的地址,然后按g键输入R2的值,就可以跳转到main函数的位置。
我使用该方法没有找到基址。
最后于 2023-4-26 11:18
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
你的分析已经超过绝大部分人了
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
龙岱客
你的分析已经超过绝大部分人了[em_13]
可我目前还是没有搞定 ,如果厂商能提供uboot编译的配置文件,也就能自己编译uboot了,这块我也没搞到,唉。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
按照帖子的方法: https://bbs.kanxue.com/thread-267719.htm 找了一下uboot的基址,大概是:0x47EE0000
先调出string窗口,找到 ROM:47F34BF7 00000012 C Bad Magic Number\n 搜字符串4BF7能看到: ROM:47F0F128 sub_47F0F018 LDR R0, =0x47F34BF7 ROM:47F0F22C dword_47F0F22C DCD 0x47F34BF7 ; DATA XREF: sub_47F0F018+110↑r 和 ROM:00054BF7 aBadMagicNumber DCB "Bad Magic Number",0xA,0 然后0x47F34BF7-0x54BF7=0x47EE0000 果然在字符串中发现了,x47ee0000 接着下面有一行0x47f00000,这大概就是入口的地址了,跳过去按C,好激动。
最后于 2023-4-26 20:29
被XYUU编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
XYUU
可我目前还是没有搞定[em_13],如果厂商能提供uboot编译的配置文件,也就能自己编译uboot了,这块我也没搞到,唉。
给配置编译了也用不了, uboot里有芯片厂商独有的代码但这是不能公开的比如各个模块的初始化。不是芯片厂商给的代码属于公版编译了就算run起来也只是arm核心run而已。
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
微启宇
给配置编译了也用不了, uboot里有芯片厂商独有的代码但这是不能公开的比如各个模块的初始化。不是芯片厂商给的代码属于公版编译了就算run起来也只是arm核心run而已。
以我对GPL2.0协议的理解,凡是使用了uboot代码的项目就必须开源,否则就违反了协议,所以芯片厂商有不能公开的内容就不能使用uboot源码,而我从二进制代码中发现了大量uboot的常量字符串能证实使用了uboot源码。
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
XYUU
以我对GPL2.0协议的理解,凡是使用了uboot代码的项目就必须开源,否则就违反了协议,所以芯片厂商有不能公开的内容就不能使用uboot源码,而我从二进制代码中发现了大量uboot的常量字符串能证实 ...
那你可以试试去问光猫设备的生产商要源码。
|
能力值:
( LV5,RANK:70 )
|
-
-
22 楼
博主文中说修改完固件后重启失败,能上传一下启动过程中的完整串口log吗
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
Q老Q
博主文中说修改完固件后重启失败,能上传一下启动过程中的完整串口log吗
焊油刚到,我处理好了再发出来。
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
修改固件起不来应该是uboot对kernel的rsa签名校验过不了,如果只是crc就好弄
最后于 2023-4-27 17:06
被龙岱客编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
龙岱客
修改固件起不来应该是uboot对kernel的rsa签名校验过不了,如果只是crc就好弄 应该不是,我看是我处理掉了一个crc32的值,然后我又重新处理了,结果直接ttl显示start kernel...后就死机了,大概率是我动了kernel的内容,估计是我自己把kernel改坏了。我打算自己去编译一个kernel,然后在给里边内置一个lxc的openwrt,我目前的进展是进入到了kernel里去了,我已经感觉到我大概率成功了。
带着这些欣喜,我有尝试过了,昨晚又搞了大半夜,自己编译的内核刷进去后卡在start kernel的位置,而且rootfs编译的和原版固件差了0.4m多的体积,目前的猜测应该是uboot里做了手脚。
最后于 2023-4-29 09:37
被XYUU编辑
,原因:
|
|
|