提取路由器固件中的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,里面就是解压出来的文件系统
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看