|
本帖最后由 keke1023 于 2023-6-14 17:01 编辑
感谢237176253和thunder35的指点,已经成功啦~
终于成功了,为这个想了一晚上哈哈哈
交换机正常,wan口终于能用了
分区正常,实际上没有最后三个,是忘了改360T7后面这部分所以遗留下来的
------------------------------------------------------求助的分割线-------------------------------------------------------------
之前看到了CETRON出的CT3003这个型号的路由器,在闲鱼上113包邮买到一台,因为猜测它和360T7的配置一样,就想看看能不能研究出不拆机开telnet并且刷入360T7固件的方法
两者实在像的离谱
先说结论,经过研究可以做到不拆机开telnet,但不能直接使用360T7的固件,虽然硬件配置一样,不过交换芯片MT7531AE的配置不同
下来就一步一步跟大家分享一下整个探索的过程,可能会对新手有些启发
首先拆机后和360T7进行对比,相信大家都会认为这两个机型只是换壳(甚至壳都很像),应该是一回事
硬件配置完全相同,就连ttl接口的位置都一样,于是为了研究就先焊上插针以备连接
先看一下原厂的系统,这里比较奇怪啊,我看到别人发的截图,这个机型是有一个跟360T7界面基本一致只是颜色不同的固件的,而我手里这台并不是
原厂固件也是基于openwrt的luci做了一些改动,对于各种可以输入的地方都有很严格的数据格式以及长度的判定,所以没找到什么注入的点
就转头先从ttl下手,通过跟360T7一样的中断进入failsafe模式然后mount_root,进行文件的修改,这里不同于360T7,并没有local debug参数,所以直接就passwd root修改一下密码
然后正常启动系统,从ttl进行登录,再通过
/etc/init.d/telnet enable
/etc/init.d/telnet start
打开telnet就行了,现在可以用电脑通过telnet连接上去进行进一步的探索和修改
首先看了一下/usr/lib/lua/luci/controller/,找到了一个隐藏页面,但很可惜不是用来打开telnet或者ssh的,是一个file browser,而且只能看目录结构里的文件名,也不可以下载或者查看其他信息
然后就开始测试配置的备份和恢复,通过/usr/lib/lua/luci/controller/SystemTools/SystemTools.lua找出备份的脚本为/bin/config_save
再通过/bin/config_save了解到备份的过程是先正常备份再通过openssl base64编码
于是把正常备份出来的文件打开看了一下,是包括rc.local的,那么就可以通过构造一个合适的启动运行的指令来每次启动打开telnet,这样其他的设备只需要恢复配置然后重启即可实现,不再需要拆机了
结果测试了几次发现并没有运行rc.local里的指令,仔细一下rc.local原本是没有执行权限的,难怪不运行,得先chmod +x /etc/rc.local
然后又发现就算/etc/init.d/telnet enable后,/etc/rc.d/里确实已经有telnet了,但是开机依然是没有自动打开的,后来发现是原本设定的优先级START=90还不够靠后,需要改成99,但是备份文件里是不包括init.d文件夹的,所以需要通过rc.local执行一个sed指令来实现
sed -i 's/START=90/START=99/' /etc/init.d/telnet
而且修改后需要重新建立到rc.d的链接,就先disable再enable一下,就会在rc.d下看到S99telnet的链接了
最后rc.local里是这四条指令
/etc/init.d/telnet disable
sed -i 's/START=90/START=99/' /etc/init.d/telnet
/etc/init.d/telnet enable
/etc/init.d/telnet start
实测恢复出厂设置后,通过恢复配置文件,可以成功打开telnet(就是恢复完会自动重启一次,这一次是首次启动还不能打开,要等首次启动完成后再重启一次)
打开telnet后,还可以进一步联网安装dropbear来打开ssh,会更加方便操作
echo arch aarch64_cortex-a53 300 >> /etc/opkg.conf
cd /tmp
wget https://downloads.openwrt.org/re ... ch64_cortex-a53.ipk
opkg install ./dropbear_2019.78-2_aarch64_cortex-a53.ipk -f /etc/opkg.conf --force-depends
/etc/init.d/dropbear enable
/etc/init.d/dropbear start
下来就可以通过scp来备份一下各个mtd分区的内容
通过cat /proc/mtd可以看到,它和360T7的分区布局有一点不同,实际上ubi开始后面的不用管,因为刷了改版108M的FIP后面的都会变,主要看的就是前面的分区,CT3003多了一个art分区,但是art+Factory总的大小和360T7的Factory大小一样,也就是如果要刷360T7的固件,这里需要修正一下两个分区的内容(因为也并不能直接用360T7的固件,这里就无所谓了,知道一下怎么判断就行)
修正后,刷入FIP和固件
启动正常,无线正常(这就是为什么要修正Factory的原因),LAN正常,WAN在交换机里可以看到识别出了连接,但是没有数据传输无法获取地址
换了好几个固件,甚至都刷成WR30U,情况都一样,我开始以为是硬件问题,网变坏了?将WAN绑定到其他端口时也一样不能使用,但是这些端口作为LAN都正常
只好在uboot下把原厂的整个闪存备份刷回去,
setenv serverip 192.168.1.100
setenv ipaddr 192.168.1.1
tftpboot 0x46000000 mtd0.bin
mtd erase spi-nand0
mtd write spi-nand0 0x46000000 0x0 0x8000000
WAN口又正常了,说明不是硬件问题,而是dts的问题
我这才仔细的对比了两个机型的交换芯片MT7531AE周边的接线,发现确实不同,具体的差异在于交换芯片到主控的两路sgmii(分别是P5和P6),360T7接了两路,而CT3003只接了一路P6
也就是说360T7的WAN(eth1)是通过P5连接到主控的,直接使用它的固件那么WAN相当于跟主控断开,所以没有数据
下来就开始着手从原厂固件里提取CT3003的dts,这里实际上能提取到的是dtb文件,通过搜索它固定的文件头D00DFEED找到它的开端,再通过后面的totalsize来确定它的文件大小,剪切出来后用dtc转成dts格式就可以开始阅读了
确实dts里也显示出了它WAN和LAN都是通过P6连接到主控的,P6对应的eth0本身就是4个LAN口,划分出一个给了WAN,刚好这个机型一共就4个网口
研究进行到这里,我测试使用hanwckf大佬的源码+原厂提取的dts(按照源码其他机型dts修改了一下)进行固件的编译,也同时使用他的FIP源码修改了一个CT3003的大分区FIP,结果还是没能正常的驱动网口,现在是WAN和LAN都不能用也没有wifi了哈哈哈,ttl下看到的日志停留在14秒左右不再进行,可以进控制台,下来就得求助一下@237176253 大佬, 这个dts和02network到底该怎么写啊我写的ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "lan4"
附件里包括原厂系统的/etc/config/network的内容,原厂提取的dts,改写后的dtsi(两个不同分区的dts没放),以及启动失败的log,如果各位对这方面比较了解的话请不吝赐教
过程中看到了佐大的这篇OpenWrt MAC、PHY、MDIO、MMD寄存器相关概念 - OpenWrt开发者之家很有帮助,希望这次能借机搞明白这几个概念
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|