固件提取
命令
hexdump:
-b 将每个字节显示为8进制
-c 将每个字节显示为ASCII字符
-C 每个字节显示为16进制和相应的ASCII字符
-d 每两个字节显示为10进制
-o 每两个字节显示为8进制
-x 每两个字节显示为16进制
-s 从偏移量开始输出
-n 只格式化输入文件的前length个字节
hexdump -C wr886nv7.bin | less
dd if=wr886nv7.bin of=A200.lzma bs=1 skip=41472 count=757630
lzma -d ./A200.lzma
hd A200.lzma -s 0 -n 700 //从偏移为0 处 查看700字节数据
从上图可以看到,除了一个比较明显的uImage header 头以外还有一大堆的LZMA数据信息。通过使用binwalk或直接使用dd命令对包中的uImage镜像进行提取。
#UImage = image_header + kernel
#count = sizeof(image_header):0x40 + lzma包的长度
count = 20788 + 64 = 20852
dd if=wr886nv7.bin of=uboot_0x366c.img bs=1 skip=13932 count=20852
使用binwalk继续分析uboot的镜像,可以发现这个uboot镜像的Data部分使用了LZMA进行压缩。
解压uboot的LZMA数据
dd if=uboot_0x366c.img of=uboot.lzma bs=1 skip=64
由于uboot image中缺乏符号表且大小只有52K不到,因此此处暂时不对其进行进一步的分析
VxWorks 系统固件分析
在wr886nv7.bin中除了uImage外,还有一个2M多的有趣的lzma压缩数据。
确定文件系统
binwalk 解压固件
binwalk -Me ./wr886nv7.bin
有如下输出信息:
#image
Scan Time: 2020-02-26 03:35:46
Target File: /home/mira/test/vxworks/wr886nv7-V1.1.0/_wr886nv7.bin.extracted/36AC
MD5 Checksum: a26046acdb2729cde979b969d2f33a56
Signatures: 396
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
44976 0xAFB0 U-Boot version string, "U-Boot 1.1.4 (May 8 2016 - 07:42:44)"
45248 0xB0C0 CRC32 polynomial table, big endian
#Vxwork