通告 欢迎访问爱刷机(原爱搜路由、爱搜啊博客aisoa.cn)

提取路由器固件中的squashfs文件系统unsquashfs提取方法

2021-01-25
0评论
/
阅读
管理员

squashfs文件系统unsquashfs提取方法

squashfs 文件系统简介

squashfs 是一个高度压缩的只读文件系统,它可以将高达 2-3GB 的数据压缩到一个只有 700M 的文件中。如果你有使用到 Linux 的 Live CD ,那么你会看到 squashfs 的身影。

当一个 Live CD 启动时,它将加载整个 Linux 系统环境。Live CD 所使用的正是这种高度压缩的只读 squashfs 文件系统,其中的 root 文件系统就被压缩存放在这个文件系统之中。

squashfs 系统支持以回环(loopback)的方式挂载,然后便可以访问其上的文件了,在访问这些文件时,它们就会被解压缩并装载在 RAM 中,而不需要将整个文件解压缩后才去访问其中的文件,这样一来访问速度就快多了。

提取路由器固件中的squashfs

之前用binwalk -Me提取固件中的squashfs,但会生成大量的压缩包等,只提取文件系统的话,可以定位squashfs的文件头(hsqs)位置,然后用dd将它分离出来,然后在unsquashfs解压出来。

比如手头上有个路由器固件,文件名为hc6361.bin

hexdump -C hc6361.bin | grep hsqs

得到结果为

00190000  68 73 71 73 5e 0b 00 00  7c 5a 03 58 00 00 04 00  |hsqs^...|Z.X....|

可见hsqs的开始位置是0x190000,dd命令是不支持16进制的,先转换为10进制,0x190000转为10进制后为1638400,接着可以构建dd命令了。

dd if=hc6361.bin of=hc6361.squashfs skip=1 bs=1638400

这样就得到了hc6361.squashfs文件了,解压squashfs文件需要用到unsquashfs命令

unsquashfs hc6361.squashfs

运行该命令后,会在当前目录生成文件夹squashfs-root,里面就是解压出来的文件系统


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


于2021-01-25发布