admin管理员组

文章数量:1531792

2024年7月3日发(作者:)

2010年第02期,第43卷 通 信 技 术 Vol.43,No.02,2010

总第218期 Communications Technology No.218,Totally

RAR编码文件格式分析

孙文歌, 刘立柱, 刘伟华

(信息工程大学 信息工程学院,河南 郑州 450002)

【摘 要】网络数据在传输过程中要先经过RAR编码进行压缩,节省传输时间。RAR格式的数据压缩编码在信息存储、信

息管理、通信及保密方面得到广泛应用。其编码生成的压缩文件,存储格式复杂并且独特,包含有不同的数据块。根据RAR编

码的显著特点,对RAR文件二进制码流块所包含的比特位做了定位分析,为研究其译码以及纠错译码算法奠定了基础。

【关键词】RAR;压缩编码;块;CRC

【中图分类号】TP911.21 【文献标识码】A 【文章编号】1002-0802(2010)02-0083-02

Analysis on RAR Compressed Format Files

SUN Wen-ge, LIU Li-zhu, LIU Wei-hua

(Institute of Information Engineering, PLA Information Engineering University, Zhengzhou Henan 450002, China)

【Abstract】Network data must be first compressed through RAR coding in the process of transmission, and thus

the transmission time could be reduced. RAR compressed format files are widely used in processing, running,

communication, information hiding and so on. The compressed format files are intricate and particular, and contains

different data blocks. The article, based upon the distinct characters of RAR coding, makes location analysis

on the bit contained in the binary code stream block, thus laying a foundation for the decoding and error-correct

decoding algorithm in RAR compressed format files.

【Key words】RAR;compression code;HEAD;CRC

0 引言

计算机及相关学科的出现使得多媒体数据处理迅速发

展并得到普遍应用。目前,多媒体数据处理已经成为工程

学、计算机科学、信息科学、社会科学等领域中各学科研

究的对象,多媒体数据处理的需求与日俱增

[1-6]

。要很好地

利用数字多媒体数据,首先要把数据保存下来,目前常用

的保存方法是按照一定的格式要求将数据保存成文件的形

式。因此,无论是实际使用,还是理论仿真,只要想对数

字多媒体数据进行利用或者处理,就要对多媒体数据的文

件格式分析研究

[7-10]

应该指出:在网络数据传输过程中,一般都首先经RAR

编码进行压缩,节省传输时间。但由于网络环境复杂多变,

经RAR编码后的数据很难抗御传输误码带来的灾难性的后

果,用常规的解压软件往往打不开,为研究更好的纠错译码

收稿日期:2008-11-30。

作者简介:孙文歌(1982-),男,助理工程师,硕士研究生,主要研究

方向为信号与信息处理;刘立柱(1949-),男,教授,博士

生导师,主要研究方向为信号与信息处理;刘伟华(1986-),

女,助理工程师,硕士研究生,主要研究方向为信号与信息

处理。

算法,进行文件格式对比分析是有意义的。

该论文对当前应用最广泛的RAR格式文件进行了较深

入研究,给出了其特点分析,讨论了压缩编码算法,重点研

究了各数据块的具体参数及代表的意义。

1 RAR的特点

RAR 是一个强力压缩工具,允许你管理和控制压缩文

件。压缩文件通常是一个带有 ".rar" 扩展名的文件。RAR 的

特点包括:

① 高度成熟的原创压缩算法;

② 对于文本、声音、图像和32位和64位 Intel 可执行

程序压缩的特殊优化算法;

③ 获得比类似工具更好的压缩率,使用'固实'压缩;

④ 自解压压缩文件和分卷压缩(SFX);

⑤ 对物理损伤的压缩文件的恢复能力。

固实(Solid)压缩方式是RAR压缩编码的一个显著特

点。固实压缩文件是RAR的一种特殊压缩方式存储的压缩

文件,它把压缩文件中的全部文件都当成一个连续数据流来

83

看待,从而找到更多的冗余信息。

个字节0X0000为RESERVED1即保留字节,紧跟着的

0X00000000为RESERVED2即为第二部分保留备用字节,

在大量压缩实验条件下两段均保留字节全为0。至此压缩文

件头每比特位分析结束,所有的RAR编码文件该数据块大

小均为13字节。

第三块为文件头,该数据块包含压缩前的原文件大小、

文件名、文件格式等信息,详细分析如下:块校验HEAD_CRC

(2 字节)从 HEAD_TYPE 到 FILEATTR 的 CRC 结构和

HEAD_FLAGS

文件名。HEAD_TYPE(1 字节)头类型

: 0x74。

(2 字节)位标记:0x01 – 文件在前一卷中继续,0x02 – 文

件在后一卷中继续,0x04 – 文件使用密码加密,0x08 – 文

件注释存在(RAR 3.x 使用分开的注释块,不设置这个标

记)。0x10 – 前一文件信息被使用(固实标记),7 6 5 位(对于

RAR 2.0 和以后版本)如表1。

表1 压缩字典

0 0 0

字典

大小

64 KB

0 0 1

字典

大小

128KB

0 1 0

字典

大小

256KB

0 1 1 1 0 0

字典

大小

512KB

字典

大小

1 0 1 1 1 0

字典

大小

字典

大小

4096KB

1 1 1

文件

作为

字典

2 RAR码流分析

RAR格式文件由可变长度的块组成。这些块的顺序可

以变化,但是第一块必须是一个在档案文件头后的标记块。

这里通过实例详细分析每个数据块的参数:下面为压缩后

的.text码流。

RAR压缩编码后的文件通常有以下数据块组成:

HEAD_TYPE=0x72标记块,HEAD_TYPE=0x73压缩文件

头,HEAD_TYPE=0x74文件头,HEAD_TYPE=0x75旧风格

的注释头,HEAD_TYPE=0x76旧风格的用户身份信息,

HEAD_TYPE=0x77旧风格的子块,HEAD_TYPE=0x78旧风

格的恢复记录,HEAD_TYPE=0x79旧风格的用户身份信息,

HEAD_TYPE=0x7a子块,注释块实际上只在其它块中使用,

并不存在单独的块。HEAD_TYPE=0x7b为最后的结束块,

标记压缩文件结尾。每一块由下列结构开始,详细参数如下:

HEAD_CRC(2 字节)所有块或块部分的CRC;HEAD_TYPE

(1 字节)块类型;HEAD_FLAGS(2 字节)块标记;

HEAD_SIZE(2 字节)块大小;ADD_SIZE(4 字节)可选

结构–增加块大小。对比编码后的数据,原文件大小为

0X00000020h个字节,压缩后为0X00000061h个字节,压缩

比或压缩率约为3.02,由于压缩后的文件格式发生变化生成

一定的压缩文件头,文件头占居一定的空间,出现负压缩。

下面分析每块的编码特点。

第一块为标记块(MARK_HEAD),其数据为:52 61 72 21

1A 07 00,其中0X6152(字节间高低字节的排列顺序并不是

从左到右的,而是与正常的顺序相反,从右到左,高字节在

右,低字节在左)2字节为HEAD_CRC,每一块均从

HEAD_CRC开始,所有的RAR都以0X6152开头。72占1

字节为块类型(HEAD_TYPE),所有文件均保持不变。0X1A21

为块标记(HEAD_FLAGS)占2

字节 ,该块最后2字节表

示块的大小0X0070即52 61 72 21 1A 0X07 00共占7个字节。

所有的文件格式经RAR压缩编码后其标记块均保持不变。

第二块为压缩文件头(MAIN_HEAD),和标记块一样,

其中0X00D0表示该块共占13个字节,如下所示。

通过对大量的不同类型文件其中包括BMP,GIF,

JPEG,JP2,PSD,WAVE,MIDI,MPG,AVI,MOV,PDF,

MP3,MPA,MID,WMA,TM,PCX等格式的文件的压缩

实验,在标准RAR压缩编码模式时,HEAD_CRC为0X90CF

占2字节,而在固实模式下为0XD03B占2字节。同样的实

验条件下,块标记(HEAD_FLAGS)占2 字节在固实模式

下为0X0008,在非固实模式下为0X00000。块大小后面两

84

1024KB 2048KB

0x100 – HIGH_PACK_SIZE 和 HIGH_UNP_SIZE 结构

存在。这些结构仅用在非常大(大于 2GB)的文档,对于小文

件这些结构不存在。0x200 – FILE_NAME 包含用 0 隔开的

普通的和 Unicode 编码的文件名。所以 NAME_SIZE 结构

长度等于普通文件名的长度加 Unicode 编码文件名的长度

再加1。如果此标记存在,单 FILE_NAME 不包含 0 字节,

它意味文件 使用 UTF-8 编码。0x400 – 头在文件名后包含

附加的8位,它对于增加加密的安全性是必需的。(所谓

的’Salt’)。0x800 – 版本标记。它是老文件版本,版本号作

为’;n’附加到文件名后。0x1000 – 扩展时间区域存在。0x8000

– 此位总被设置,所以完整的块的大小HEAD_SIZE +

PACK_SIZE(如果 0x100 位被设置,再加上

HIGH_PACK_SIZE)。HEAD_SIZE(2 字节)文件头的全部

大小(包含文件名和注释)。PACK_SIZE(4 字节)已压缩文

件大小。UNP_SIZE(4 字节)未压缩文件大小。其中

HOST_OS(1 字节)保存压缩文件使用的操作系统,其中0

代表MS DOS ,1 代表OS/2, 2 代表Win32, 3 代表

5代表 BeOS。FILE_CRC(4 字节),

Unix ,4

代表Mac OS,

为文件的CRC。FTIME(4 字节),为MS DOS 标准格式的

日期和时间。UNP_VER(1 字节),解压文件所需要最低

RAR 版本,版本编码方法 10 * 主版本 + 副版本。

METHOD(1 字节)压缩方式如表2。

表2 压缩方式

0x30

存储

0x31

最快压缩

0x32

快速压缩

0x33 0x34 0x35

最好压缩标准压缩 较好压缩

NAME_SIZE(2 字节),文件名大小。ATTR(4 字节),

文件属性。HIGH_PACK_SIZE(4 字节),压缩文件大小 64

(下转第88页)

楼、体育楼采集了4个站点,系统运行良好,能精确定位

(10 m以内)和提前报站,但系统复位后,就不能自动报站了;

经过分析发现在程序初始化中,读FLASH时地址不对,把程

序修改好后,就能在学校内正常报站了;于是将系统在衡阳

市的3路公交线路上做测试,采集了16个站点,在测试中

发现,当速度在30 km/h以下时也能精确定位和提前报站,

但是当速度超过30 km/h 时,要在公交车过了站点后才报站,

通过比较速度与报站的分析,在程序中加了速度的判断,在

速度超过30 km/h 后加大了提前报站的距离;同时还加上了

超速报警的功能,当公交车的速度超过50 km/h时就提醒司

机减速。

参考文献

[1] 郑忠楷.依托unsp 内核的语音GPS的开发[J].电子技术,2004(10):

46-48.

[2] 王晴婉,宋家友.基于GPS_GPRS车辆监控终端设计与实现[J].通信

技术,2009,42(09):121-123.

[3] 龙安国.基于GPS/GPRS 的智能公交系统的设计与实现[J].通信技

术,2009,42(01):326-330.

[4] Wayne A, Kurt K. GPS navigation trends and applications[J].

National Conference Publication -Institution of Engineers,

Australia,2004,92(09):73-77.

[5] 董作民,姜木霖,陈晓青,等. MCS251单片机与GPS2O EM 板数据通讯

的研究与应用[J].湖北汽车工业学院学报,2000,14(03):37-41.

[6] Tadashi M. Polyhedral GPS receiver system for attitude

determination[C].Japan: IEEE 60th Vehicular Technology

Conference,VTC2004-Fall: wireless Techno1ogies for Global

Security,2004:4108-4112.

[7] 李晓白,秦红磊,朱俊杰,等.凌阳16位单片机C语言开发[M].北京:

北京航空航天大学出版社,2006:224-225.

[8] 刘海成,秦进平,韩喜春.MCU-DSP型单片机原理与应用[M].北京:北

京航空航天大学出版社,2006:130-148.

4 结语

通过对GPS进行研究,对软硬件进行设计的GPS自动

语音报站系统,采用先进的卫星定位技术与嵌入式语音单

片机相结合的方式,彻底改变了传统公交车语音报站器必

须由司机操控才能工作的落后方式。定位精度和语音播报

已经实现,达到了研究开发利用GPS进行语音报站的要求。

下一步要做工作是把该系统进一步完善,达到实际应用的

要求。

(上接第84页)

位值的高4字节。可选值,只有 HEAD_FLAGS 的0x100 位

被设置才存在。HIGH_UNP_SIZE(4 字节),未压缩文件大

小64位值的高4字节。可选值只有 HEAD_FLAGS 中的

0x100 位被设置才存在。FILE_NAME(8 字节),文件名 –

NAME_SIZE 字节大小字符串SALT,如果 (HEAD_FLAGS

& 0x400) != 0 则存在。EXT_TIME(可变大小),如果

(HEAD_FLAGS & 0x1000) != 0 则存在。

第四部分为压缩后的数据块,其码流如下所示。

程中难免损坏,进行文件格式对比分析为研究纠错译码算法

提供了参考。

参考文献

[1] 傅祖芸.信息论-基础理论与应用[M].北京:电子工业出版社,2007:

305-340.

[2] 姜楠,王健.常用多媒体文件格式与压缩编准解析[M].北京:电子工

业出版社, 2005:9-16.

[3] 李小平.数据压缩及传输编码软件[M].北京:科学出版社,2000:

38-130.

原始数据经无损压缩编码即上述的短语式和编码式后

由原来的32字节减小到19字节,但是由于压缩后的文件带有

压缩文件头,所以要比原文件要大些。该数据快包含有

BLOCK_LZ,BLOCK_PPM块,对此块数据进行反推分析,可以深

入研究该文件所用到的具体压缩算法。最后一块C4 3D 7B

00 40 07 为结束块, 该块共7字节,在任何压缩模式下压缩

均保持不变。

[4] Slepian D, Wolf J. Noiseless Coding of Correlated Information

Sources[J].IEEE Transitions, on Information Theory,1973,

19(04):471-480.

[5] Pradhan S S, Ramchandran K. Distributed Source Coding Using

Syndromes (DISCUS): Design and Construction[C]// In the Proc.

of the 1999 IEEE Data Compression Conference, USA:1999.

[6] Verdu S. Fifty Years of Shannon Theory[J].IEEE Franstactions,

44(06),1998:2057-2078.

[7] Gibson D J, Berger T. 多媒体数字压缩原理与标准[M].北京:电

子工业出版社,2000:77-104.

[8] 吴乐南.数据压缩原理与应用[M].北京:电子工业出版社,2003:

38-130.

[9] 姜丹.信息理论与编码[M].合肥:中国科技大学出版社,1992:65-72.

[10] 吴乐南.数据压缩[M].北京:电子工业出版社,2004:289-312.

3 结语

对RAR压缩文件格式的分析,一方面了解了不同数据块

对应比特位的大小及所代表的意义,另一方面为研究探索具

体数据块编码原理与规律奠定了基础。在网络数据传输过程

中,网络环境时常复杂多变,经RAR编码后数据在传输过

88

本文标签: 压缩编码文件数据