小米路由固件格式
来自Jack's Lab
(版本间的差异)
(以“== 概述 == 路由固件的格式,基本是基于 openwrt 的 trx 这个简单的二进制文件格式 <br><br> == 小米格式 == 小米自己改了一个打...”为内容创建页面) |
|||
| 第43行: | 第43行: | ||
vmlinuz.trx | vmlinuz.trx | ||
</source> | </source> | ||
| + | |||
| + | |||
| + | 参考 carabob001 在这个页面对 [http://www.iptvfans.cn/wiki/index.php/%E5%B0%8F%E7%B1%B3%E8%B7%AF%E7%94%B1%E5%99%A8%E5%9B%BA%E4%BB%B6%E5%88%86%E6%9E%90 小米路由固件的分析] | ||
| + | |||
| + | |||
| + | 以 [http://bigota.miwifi.com/xiaoqiang/rom/brcm4709_hdk_0.2.62.bin 0.2.62] 固件为例: | ||
| + | |||
| + | <source lang=bash> | ||
| + | $ hexdump -C brcm4709_hdk_0.2.62.bin | head -n 3 | ||
| + | 00000000 48 44 52 30 21 90 62 02 54 20 9e 15 04 00 02 00 |HDR0!.b.T ......| | ||
| + | 00000010 20 00 00 00 21 a0 37 02 21 a0 37 02 21 a0 37 02 | ...!.7.!.7.!.7.| | ||
| + | 00000020 5d 00 00 01 00 00 00 00 08 00 00 00 00 00 00 6f |]..............o| | ||
| + | </source> | ||
| + | |||
| + | <pre> | ||
| + | 第1~4字节:ASCII字符串“HDR0”,作为固件的标识; | ||
| + | |||
| + | 第5~8字节:4字节整型数0x0311D464,表示固件的大小:51500132字节; | ||
| + | |||
| + | 第9~12字节:固件的检查和; | ||
| + | |||
| + | 第13~14字节:0x0005,表示固件中包含哪些部分; | ||
| + | |||
| + | 第15~16字节:0x0002,表示固件格式版本号; | ||
| + | |||
| + | 第17~20字节:0x00000020,表示固件第一部分在整个固件中的偏移量,0.4.85固件的第一部分是brcm4709_nor.bin,也就是Flash中除0xfe0000-0xff0000的board_data外的全镜像; | ||
| + | |||
| + | 第21~24字节:0x00FE0020,表示固件第二部分在整个固件中的偏移量,0.4.85固件的第二部分是root.ext4.lzma,也就是硬盘中128M固件的压缩包; | ||
| + | |||
| + | 第33字节开始是固件的正式内容开始 | ||
| + | </pre> | ||
| + | |||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
| + | <br><br> | ||
2014年6月4日 (三) 22:04的版本
1 概述
路由固件的格式,基本是基于 openwrt 的 trx 这个简单的二进制文件格式
2 小米格式
小米自己改了一个打包工具 mkxqimage,要知道其固件格式,需要分析一下这个工具
0.5.56 版固件下的工具,先看一下内部字符串:
$ strings /bin/mkxqimage ...... /usr/share/xiaoqiang/public_ssh.pem /usr/share/xiaoqiang/public.pem error fopen public key error PEM_read_RSAPublicKey error EVP_PEKY_new error EVP_PKEY_st1_RSA ...... -:x:t:o:f:p:S:I ...... upsetting.sh brcm4709_nor.bin root.ext4.lzma upsetting_fac1.sh fac_mode.bin upsetting_fac2.sh fac_mode.bin upsetting_fac3.sh fac_mode.bin root.ext4.lzma root.squashfs vmlinuz.trx upsetting.sh brcm4709_fac_update_nor.bin nvram_fac.bin root.ext4.lzma root.squashfs ramfsz vmlinuz.trx
参考 carabob001 在这个页面对 小米路由固件的分析
以 0.2.62 固件为例:
$ hexdump -C brcm4709_hdk_0.2.62.bin | head -n 3 00000000 48 44 52 30 21 90 62 02 54 20 9e 15 04 00 02 00 |HDR0!.b.T ......| 00000010 20 00 00 00 21 a0 37 02 21 a0 37 02 21 a0 37 02 | ...!.7.!.7.!.7.| 00000020 5d 00 00 01 00 00 00 00 08 00 00 00 00 00 00 6f |]..............o|
第1~4字节:ASCII字符串“HDR0”,作为固件的标识; 第5~8字节:4字节整型数0x0311D464,表示固件的大小:51500132字节; 第9~12字节:固件的检查和; 第13~14字节:0x0005,表示固件中包含哪些部分; 第15~16字节:0x0002,表示固件格式版本号; 第17~20字节:0x00000020,表示固件第一部分在整个固件中的偏移量,0.4.85固件的第一部分是brcm4709_nor.bin,也就是Flash中除0xfe0000-0xff0000的board_data外的全镜像; 第21~24字节:0x00FE0020,表示固件第二部分在整个固件中的偏移量,0.4.85固件的第二部分是root.ext4.lzma,也就是硬盘中128M固件的压缩包; 第33字节开始是固件的正式内容开始