中兴B600机顶盒软件升级

来自IPTV爱好者
跳转至: 导航搜索

中兴B600机顶盒支持远程升级软件,升级服务器地址在机顶盒的配置界面中预先设置。

升级服务器实际上是Web服务器,机顶盒在每次启动时,自动检查升级服务器上是否有新的软件,如果有则提示更新软件。

具体过程是:下载更新服务器上的文件zteSTBVer.cfg,该文件记录了各种机顶盒的软件的版本号。

官方升级服务器

  • 江苏电信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