ASUS路由器固件结构分析(trx格式)

ASUS即中国台湾华硕电脑股份有限公司,简称华硕,它是当前全球第一大主板生产商、全球第三大显卡生产商,同时也是全球领先的3C解决方案提供商之一,致力于为个人和企业用户提供最具创新价值的产品及应用方案。华硕的产品线完整覆盖至笔记本电脑、主板、显卡、服务器、光存储、有线/无线网络通讯产品、LCD、掌上电脑、智能手机等全线3C产品。其中显卡和主板以及笔记本电脑三大产品已经成为华硕的主要竞争实力。

ASUS路由器的固件可以在官网下载,这里分析的型号是RT-AC56U,版本3.0.0.4.382.51641,格式为trx。使用本站的固件分析工具分析固件结构:

解析后结果如下:

序号偏移说明
10x0-0x1B固件头
20x1C-0x19B363压缩的内核映像 kernel
30x19B364-0x258CFFF文件系统映像 rootfs

其中固件结构的第一部分trx固件头是比较关键的,下面我们通过本站固件分析工具的结果和16进制工具打开固件分析了解其具体结构:

序号偏移说明
10x00-0x03标识符,标记此为TRX固件,字符串为HDR0
20x04-0x07固件总大小,包括TRX头,大小0x258D000
30x08-0x0b固件校验值 CRC32,值0xAFD7C34F,不包含头的前12个字节
40x0c-0x0dflags,值为0
50x0e-0x0fversion,值为1
60x10-0x13加载器偏移,值为0x1c,实际为kernel偏移
70x14-0x17内核偏移,值为0x19B364,实际为rootfs偏移
80x18-0x1b文件系统偏移,实为空

crc32的算法,使用python实现如下:

import zlib

def crc32(data):
    return (0xffffffff - zlib.crc32(data)) & 0xFFFFFFFF

具体内容可以参考firmware-mod-kit工具中的源码 asustrx.c 。

留下评论

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