RAR编码文件格式分析
发布时间:2024-11-08
发布时间:2024-11-08
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