zgm1996 发表于 2021-2-14 14:35:36

新年礼物——我家云原版dtb文件

本帖最后由 zgm1996 于 2021-2-14 14:33 编辑

春节假期,闲来无事,整理文件的时候发现了两份我家云的原版固件,一份在其它大佬分享的网盘下的,另一份是我自己的我家云里备份的。

之前看到各位大神都在努力适配我家云的dtb,想着在Linux视万物为文件,那么dtb作为一份文件也必然以某种形式存在于备份出来的固件里,就用一种静态的方法,在固件无root权限且不运行的情况下尝试提取,现将过程与大家分享!

首先感谢分享 “我家云出厂系统.7z” 的前辈,SHA-256:86C56BF4F366878C62B9181D9FAF2D25C571E8C5524F2BD6F0860F86CDC1471E
解压固件文件名为:“0_15273600_Chainedbox.IMG”。


环境:任一种Linux系统(我用了VMWare+kali 2020);
工具:binwalk、dtc;
原料:我家云原版固件。

前期虚拟机和kali都超出了矿渣的范围,就不在此说了,原版固件拖进虚拟机。


1、使用binwalk在原版固件中搜索dtb

binwalk 0_15273600_Chainedbox.IMG


重点在其中这两行:

DECIMAL       HEXADECIMAL   DESCRIPTION
--------------------------------------------------------------------------------
……

26216448      0x1900800       device tree image (dtb)
26326528      0x191B600       PC bitmap, Windows 3.x format,, 654 x 258 x 8
……


说明binwalk已经识别到了dtb在镜像中的位置,接下来就把dtb文件从固件中切出来。
   
2、使用linux dd命令截取dtb所在位置:

先说dd命令语法:
dd if=【输入文件】 bs=【读入/输出的块大小(字节)】 count=【读入/输出的块】 skip=【读取前跳过的块数】 of=【输出文件名】

首先计算目标dtb文件大小(字节):26326528-26216448=110080

bs取512字节,计算成块为:110080/512=215,就是count的值

计算skip:26216448/512=51204

所以用到的dd命令如下:
dd if=0_15273600_Chainedbox.IMG bs=512 count=215 skip=51204 of=wojiayun.dtb
执行后再用file查看以下是不是dtb文件。



到此,这个dtb文件就是已经编译的二进制设备树文件。如果要修改,就要反编译回设备树描述文件dts。

3、反编译dtb为dts文件:
需要在Linux中安装dtc工具:
sudo apt installdevice-tree-compiler

执行:
dtc -I dtb -O dts wojiayun.dtb > wojiayun.dts
输出的一堆都没关系。


这样就可以使用vim等文本编辑工具打开并进行编辑了。


最后附上已经提取的两份反编译过的dts文件,祝大家新年快乐!



brightforce 发表于 2021-2-15 00:40:48

谢谢分享

就是爱折腾 发表于 2021-2-15 10:17:16

原版的系统掉盘吗?

miwuzhise 发表于 2021-2-16 11:12:06

路过支持

wh1tequartz 发表于 2021-2-18 12:44:31

就是爱折腾 发表于 2021-2-15 10:17
原版的系统掉盘吗?

原版系统貌似不掉

adiao 发表于 2021-2-19 08:56:29

原版的系统掉盘吗?

cvx10006 发表于 2021-2-19 12:00:54

wh1tequartz 发表于 2021-2-18 12:44
原版系统貌似不掉

原系统掉得最厉害,不然局域网原系统备份照片视频看电影还蛮好用的

winthunder 发表于 2021-2-19 17:12:39

大家谁刷机了吗

kpxx 发表于 2021-2-19 21:30:21


谢谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 新年礼物——我家云原版dtb文件