中兴B600机顶盒软件升级
中兴B600机顶盒支持远程升级软件,升级服务器地址在机顶盒的配置界面中预先设置。
升级服务器实际上是Web服务器,机顶盒在每次启动时,自动检查升级服务器上是否有新的软件,如果有则提示更新软件。
具体过程是:下载更新服务器上的文件zteSTBVer.cfg,该文件记录了各种机顶盒的软件的版本号。
官方升级服务器
- 上海电信iTV机顶盒升级服务器地址:http://218.83.166.81:8080/b600v2/upgrade/
- 江苏电信iTV机顶盒升级服务器地址:
1.0平台的升级服务器:http://221.231.144.27/b600/ 2.0平台的升级服务器:http://221.231.144.114/sz32407/ 或 http://221.231.144.114/32207/ http://221.231.144.114/lcsts32407/zteSTBVer.cfg http://221.231.144.114/lcsts32707/zteSTBVer.cfg http://221.231.144.114/sts32961/zteSTBVer.cfg http://221.231.144.114/tvms32833/zteSTBVer.cfg http://221.231.144.114/32961/zteSTBVer.cfg http://221.231.144.114/33080/zteSTBVer.cfg http://221.231.144.114/sts33080/zteSTBVer.cfg
B600V4升级包分析
升级包文件名:allmtd_40024801.jpg,文件大小:12.7 MB (13,377,536 字节)
下载地址:http://218.83.166.81:8080/b600v2/upgrade/allmtd_40024801.jpg
这个升级包有三部分构成,可用文件分割器分离:
- 内核 - 0x00000000~0x0017FFFF 0x00180000 1536KB /dev/mtd6
- 根文件系统 - 0x00180000~0x0037FFFF 0x00200000 2048KB /dev/mtd7 (jffs2)
- 扩展文件系统 - 0x00380000~0x00CC1FFF 0x00942000 9480KB /dev/mtd8 (cramfs)
B600V4A的升级包与B600V4有很大的差别,在升级包中增加了ECC信息,也就是以512个字节为一个块,计算出ECC,然后在后面增加16个字节的内容,其中的字节[0][1][2]为前256字节的3bit ECC,字节[3][6][7]为后256字节的3bit ECC。字节[4]为0x00或0xFF(如果ECC全为0xFF时),其余字节均为0xFF。去ECC后,再进行分割,偏移量和长度分别为:
- 内核 起始:0x00000000 长度:0x00280000
- 根文件起始:0x00280000 长度:0x00380000
- cramfs开始:0x00600000 长度:0x00F3C000
B600V4C的升级包:
- 内核 起始:0x00000000 长度:0x00280000
- 根文件起始:0x00280000 长度:0x00400000
- cramfs开始:0x00680000 长度:0x00A6F000
B600V4H的升级包:
- ECC与V4A不同,2048字节后跟64字节的ECC
- 内核 起始:0x00000000 长度:0x00300000
- 根文件起始:0x00300000 长度:0x00480000
- cramfs开始:0x00780000 长度:不定
B700V2的升级包:
- 内核 起始:0x00000000 长度:0x00180000
- 根文件起始:0x00180000 长度:0x00200000
- cramfs开始:0x00380000 长度:不定
B700V2A的升级包:
- 内核 起始:0x00000000 长度:0x00300000
- 根文件起始:0x00300000 长度:0x00480000
- cramfs开始:0x00780000 长度:不定
内核部分有长度为0x44的首部:
55 66 77 88 6B 65 72 00 00 00 00 00 00 00 00 00 ----------- ----------- ----------- ----------- MAGIC WORD ker 00 00 00 00 56 34 30 30 32 34 38 30 31 20 32 30 ----------------------------------- 版本信息:V40024801 20 30 38 2D 30 37 2D 31 30 00 00 00 00 00 00 00 00 ----------------------- 08-07-10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 8C E0 00 00 00 0C 84 40 10 00 ----------------------------------- 内核从0x44开始
用QQ群共享中的文件分割工具SplitFile.exe把allmtd_40024801.jpg分割成三个文件kernel.bin, jffs2.bin和cramfs.bin。具体方法为:
1. 内核的起始位置是:0x00000000 结束位置不输入,长度是:0x00180000,文件另存为:kernel.bin
2. 根文件系统的起始位置是:0x00180000 结束位置不输入,长度是:0x00200000,文件另存为: j2ffs.bin
3. 扩展文件系统的起始位置是:0x00380000 结束位置不输入,长度是:0x00942000,文件另存为:cramfs.bin
内存文件的首部有版本号,用UltraEdit等支持二进制编辑的软件把版本号改成40024802。
把cramfs文件系统解压到目录cramfs中:
sh4-linux-cramfsck -x cramfs cramfs.bin
修改cramfs/bin/start文件,在其中增加两行,目的是开启FTP和Telnet服务器:
ftpd & /usr/sbin/telnetd -l /bin/sh
把cramfs目录中的文件打包到cramfs.bin文件中
sh4-linux-mkcramfs cramfs cramfs.bin
合并三个文件为allmtd_new.jpg
cat kernel.bin j2ffs.bin cramfs.bin >allmtd_40024802.jpg
创建升级包描述文件zteSTBVer.cfg:
[Model=ZXB600V4(STBSC-ST5202-000)] AppName=allmtd Version=40024802 Location="allmtd_40024802.jpg" Destination="/dev/mtd6" Rules={Y(!40024802)}
把zteSTBVer.cfg和allmtd_40024802.jpg复制到Web服务器的根目录中,然后把机顶盒的升级服务器地址设置成自己的Web服务器地址,就能实现机顶盒升级修改过的升级包。
mtdblock6的分析
try find normal kernel: 0xa0000000 found normal kernel:0xa0320000 name :ker len :0x00168ce0 load addr :0x84401000 entry point :0x84402000 version :V40024601 2008-06-17 crc :0x00b10000 reserver1 :0x0000005c reserver2 :0x00000010
00000000h: 55 66 77 88 6B 65 72 00 00 00 00 00 00 00 00 00 ; Ufw坘er......... ----------- ----------------------------------- Magic Word 分区名 0x10 字节 00000010h: 00 00 00 00 56 34 30 30 32 34 36 30 31 20 32 30 ; ....V40024601 20 ----------- ---------------------------------- 详细名称0x40字节 00000020h: 30 38 2D 30 36 2D 31 37 00 00 00 00 00 00 00 00 ; 08-06-17........ ----------------------------------------------- 00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................ ----------------------------------------------- 00000040h: 00 00 00 00 00 16 8C E0 00 00 00 0C 84 40 10 00 ; ......屶....凘.. ----------- ----------- ----------- ----------- 内核长度 未知1 加载地址 00000050h: 84 40 20 00 00 60 00 B1 00 00 00 5C 00 00 00 10 ; 凘 ..`.?..\.... ----------- ----- ----- ----------- ----------- 入口地址 头长度 CRC 保留1 保留2