TP-LINK路由器固件结构分析(ver. 2.0版本)

之前我们讲述了ver. 1.0版本的固件结构,本文分析一下ver. 2.0版本的固件。ver. 2.0版本的固件,binwalk无法识别出固件头,所以得具体分析,可以参考 mktplinkfw3

这里分析的型号为TL-W8980,硬件版本v1,固件版本1_0.6.0_1.7,发布时间140619。首先我们用16进制工具查看固件头部0x200字节数据:

根据mktplinkfw3的文档说明,解析之后结果为:

序号偏移说明
10x00-0x03固件头版本,值为0x03000000
20x04-0x33固件版本类型,字符串为ver. 2.0
30x34-0x37产品ID,值为0x89800001,解析型号为8980,硬件版本v1
40x38-0x3B产品版本,值为0x0000000E
50x3C-0x3F填充数据,值为0x00000000
60x40-0x4F固件校验值,值为144F033A1F5365C25109847D96076CD1
70x50-0x53填充数据,值为0x00000000
80x54-0x63内核校验值
90x64-0x67填充数据,值为0xFFFFFFFF
100x68-0x6B内核加载地址,值为0x80002000
110x6C-0x6F内核入口点,值为0x800061B0
120x70-0x73固件总长度,值为0x7C0200
130x74-0x77内核偏移,值为0x200
140x78-0x7B内核长度,值为0x139689
150x7C-0x7F文件系统偏移,值为0x140000
160x80-0x83文件系统长度,值为0x5F91B2
170x84-0x87bootloader偏移,值为0
180x88-0x8Bbootloader长度,值为0x0168EB
190x8C-0x8Dmagic,值为0x55AA
200x8Esver主版本号,值为1
210x8Fsver次版本号,值为7
220x90magic,值为0xA5
230x91主版本号,值为0
240x92次版本号,值为6
250x93小版本号,值为0
260x94-0xCF未知数据
270xD0-0x14F签名校验 (boot)+kernel+rootfs
280x150-0x1C0签名校验,未使用值为0
290x1D0-0x1FF填充数据,值为0

根据解析的偏移,可以编写binwalk的识别方法(添加在binwalk目录的magic/firmware文件):

TP-Link firmware header structure v2.0
4 string ver.\x202.0 TP-Link firmware header v2.0,
0x91 byte x firmware version: %d.
0x92 byte x \b%d.
0x93 byte x \b%d_
0x8E byte x \b%d.
0x8F byte x \b%d,
0x70 ubelong x image size: 0x%X bytes,
0x34 ubelong x product ID: 0x%08X,
0x38 ubelong x product version: 0x%08X,
0x3C ubelong x additional hardware version: 0x%08X,
0x68 ubelong&0xff 0x80
0x68 ulelong x kernel load address: 0x%X,
0x68 ubelong&0xff !0x80
0x68 ubelong x kernel load address: 0x%X,
0x6C ubelong&0xff 0x80
0x6C ulelong x kernel entry point: 0x%X,
0x6C ubelong&0xff !0x80
0x6C ubelong x kernel entry point: 0x%X,
0x74 ubelong x kernel offset: 0x%X,
0x78 ubelong x kernel length: 0x%X,
0x7C ubelong x rootfs offset: 0x%X,
0x80 ubelong x rootfs length: 0x%X,
0x84 ubelong x bootloader offset: 0x%X,
0x88 ubelong x bootloader length: 0x%X

使用本站的固件分析工具可以分析固件结构:

最终根据固件头可以知晓固件的结构:

序号偏移说明
10x0-0x200TP v2固件头1
20x200-0x51FFBootloader,实为uboot
30x5200-0x523FuImage头1
40x5240-0x101FF压缩的内核1 kernel
50x10200-0x10247uImage头2
60x10248-0x201FF压缩的内核2 kernel
70x20200-0x203FFTP v2固件头2
80x20400-0x1601FF文件系统 rootfs

一条评论

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注