我在研究过程中遇到了一个问题。我有一个从互联网上下载的固件文件,im试图解压它以模拟固件。好消息是,我成功地完成了一次,但我恢复了我的机器,现在我不能重新创建这个过程。
首先,文件不能被任何工具提取,因为你会得到一个错误,少于2个布局块被找到。
在那之后,我转储了ubi文件的一些信息:
==> app_ubifs <==
1 named volumes found, 2 physical volumes, blocksize=0x20000
== volume b'bakfs' ==
-rw-r--r-- 1 0 0 37879808 2020-04-22 01:27:47 ubifs所以,从我获得这个成功的时刻起,我就知道在bakfs卷中有另一个可以被公共工具成功提取的ubifs图像。
我测试了很多挂载这个镜像的方法,但是挂载总是失败。
modprobe ubi
modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa \
third_id_byte=0x00 fourth_id_byte=0x15我相信这是blocksize=0x20000的正确配置。
ubiformat /dev/mtd0 -f app_ubifs
ubiformat: mtd0 (nand), size 268435456 bytes (256.0 MiB), 2048 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
libscan: scanning eraseblock 2047 -- 100 % complete
ubiformat: 2048 eraseblocks have valid erase counter, mean value is 0
ubiformat: flashing eraseblock 282 -- 100 % complete
ubiformat: formatting eraseblock 2047 -- 100 % complete 同样,格式化和闪存也能正常工作。
在这之后的下一部分我真的不明白。网上有100种不同的方法,但我似乎无法让它起作用。
如果有人能在这个过程中帮助我,我将不胜感激。
正如我所说的,我已经有了文件系统的解压版本。但我现在不能重新创建拆包过程。所以我知道这是可能的。
发布于 2021-04-30 21:39:40
--解决方案
modprobe nandsim first_id_byte=0x2c second_id_byte=0xac third_id_byte=0x90 fourth_id_byte=0x15为blocksize=0x20000制作设备。
检查它是否设置好了。
cat /proc/mtd让我们把它弄干净。
flash_erase /dev/mtd0 0 0现在格式化并刷新图像。
ubiformat /dev/mtd0 -f image.ubi -O 2048然后连接设备。
modprobe ubi
ubiattach -p /dev/mtd0 -O 2048现在我可以挂载它了。
mount -t ubifs /dev/ubi0_X /mnt/ubifs在我的例子中,它是ubi0_1,请确保在/dev上查看。
https://stackoverflow.com/questions/67332866
复制相似问题