路由器的文件系统与提取
大致分为以下3种
- 可以直接通过linux的binwalk提取的
- 由于linux对文件类型判断错误,对存储文件系统压缩包使用了错误的工具
- 固件被加密,导致需要通过一些手法来绕过或者解密固件,进行文件系统的提取的
以下会通过一些典型的例子进行讲解
常见的路由器分为几种:
直接使用binwalk提取(标准固件)
| 1 | binwalk -Me firmware.bin | 
典型案例:
- TP-Link Archer系列路由器 
- D-Link DIR系列部分型号 
- 大部分开源固件(OpenWrt等) 
常见文件系统类型:
- SquashFS:最常见,只读压缩文件系统 
- JFFS2:可写文件系统,常用于配置存储 
- CramFS:旧式压缩文件系统 
- UBIFS:用于NAND闪存的文件系统 
在binwalk -Me之后,虽然大部分情况下文件系统已经被提取出来了,但是一些软链接并没有被成功建立起来(为了安全的考量),但是对于需要进行系统模式qemu仿真情况下,我们需要保证文件系统的完整性,例如有一个squashfs-root的文件夹,我们将其
rm -r然后unsquashfs xxx.xxx,就能获得完整的文件系统拉
文件系统识别错误的处理
大部分未被加密的情况下,binwalk足以解决大部分的文件系统的提取
但是还是存在一些问题,最典型的就是binwalk对ubireader_extract_images没有正确使用
有时候在提取部分小米,Tp-link以及部分厂商的固件时会出现类似于:
| 1 | . | 
发现在提取出ubi的情况下,未出现完整的文件系统,用ubireader_extract_images 3A.ubi,然后一般会出现四个映像,正常使用unsquashfs提取最大的映像即可
加密固件的处理
经典老图:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 S1nec-1o's B1og!
