RAR文件格式学习(了解)

365bet娱乐平台官网 ⌚ 2025-09-22 10:14:26 👤 admin 👁️ 2181 ❤️ 450
RAR文件格式学习(了解)

文章目录

RAR文件的特点RAR文件码流分析标记块(MARK_HEAD)压缩文件头(MAIN_HEAD)文件头(FILE_HEAD)结尾块

在做ctf题目过程中遇到压缩文件,所以搜索相关资料进行学习,在此用一片文章记录;

RAR文件的特点

RAR通常情况比ZIP压缩比高,但压缩/解压缩速度较慢。 分卷压缩:压缩后分割为多个文件。 固实压缩:把要压缩的视为同一个文件以加大压缩比,代价是取用包中任何文件需解压整个压缩包。 恢复记录:加入冗余数据用于修复,在压缩包本身损坏但恢复记录够多时可对损坏压缩包进行恢复。 加密:RAR 2.0使用AES-128-cbc,(rar5.0以后为AES-256CBC)。之前RAR的加密算法为私有。目前均未被直接攻破(至少没有公开),没有密码时只有暴力破解。

参考百度百科

RAR文件码流分析

下面的文件格式分析是基于RAR4.x,并不是RAR5.0 RAR 5.0签名和RAR4.x的签名不一样 RAR 5.0签名由8个字节组成: 0x52 0x61 0x72 0x21 0x1A 0x07 0x01 0x00 比较一下 RAR 4.x 签名由7字节组成: 0x52 0x61 0x72 0x21 0x1A 0x07 0x00

一个RAR4.x压缩文件由若干可变长度的块组成 常见块类型如下:

标记块: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

标记块(MARK_HEAD)

第一块为标记块(MARK_HEAD),其数据为:

52 61 72 21 1A 07 00 // 左边是低字节 ,右边是高字节,这是RAR4.x的签名

//签名即标志着该文件是由支持rar4.x版本的软件压缩而成,如果使用支持5.0版本的压缩软件压缩,其签名可能会不同

字节的说明

52 61 为头部校验和(HEAD_CRC),占两个字节,每一块均从HEAD_CRC开始,所有的RAR都以 52 61 开头

72 为 块类型(HEAD_TYPE) 占一个字节,所有文件都如此

21 1A 为 块标记(HEAD_FLAGS) 占两个字节

07 00表示块大小 ,即 52 61 72 21 1A 07 00 (标记块)共占7个字节

压缩文件头(MAIN_HEAD)

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

头类型是0x73表示压缩文件头块 位标记为0x0000 没有位被置为1 ,如果块头被加密,则位标记应该为:0x8000 文件头大小为0x0D00,由上图可以看出这个压缩文件头块占13个字节

文件头(FILE_HEAD)

RAR文件格式及其各字段含义请参考: RAR 5.0 archive format description.

接下来用rar文件来讲一下文件头部分的码流分析。

16进制软件使用winhex,hex值左边是低位,右边是高位,比如52 61 实际上就是0x6152

D5 56 :HEAD_CRC,2字节,也就是文件头部分的crc校验值

74 :HEAD_TYPE,1字节,块类型,74表示块类型是文件头

20 90 :HEAD_FLAGS,2字节,位标记,这块在资料上没找到对应的数值,不知道20 90代表什么意思。

2D 00 :HEAD_SIZE,2字节,文件头的全部大小(包含文件名和注释)

10 00 00 00 :PACK_SIZE,4字节,已压缩文件大小

10 00 00 00 :UNP_SIZE,4字节,未压缩文件大小

02:HOST_OS,1字节,保存压缩文件使用的操作系统,02代表windows

C7 88 67 36:FILE_CRC,4字节,文件的CRC值

6D BB 4E 4B :FTIME,4字节,MS DOS 标准格式的日期和时间

1D:UNP_VER,1字节,解压文件所需要的最低RAR版本

30:METHOD,1字节,压缩方式,这里是存储压缩

08 00 :NAME_SIZE,2字节,表示文件名大小,这里文件名大小是8字节(flag.txt)

20 00 00 00 :ATTR,4字节,表示文件属性这里是txt文件

66 6C 61 67 2E 74 78 74:FILE_NAME(文件名) ,NAME_SIZE字节大小,这里NAME_SIZE大小为8

再往后是txt文件内容,一直到第六行 65 结束,下面是另一个文件块的开始

这个块中存在两个crc值,一个是文件头块中从块类型到文件名这38个字节的校验,后一个则是压缩包中所包含文件的crc校验,解压时,会计算解压后生成文件的crc值,如果等于这里的crc,则解压完成,如果不同,则报错中断。

结尾块

这个结尾块和标记块字节大小和分析方法是一样的。

C4 3D :HEAD_CRC,2字节,从HEAD_TYPE到HEAD_SIZE的crc校验值

7B :HEAD_TYPE,1字节,表示该块是结尾块

00 40 HEAD_FALGS ,2字节,位标记

07 00 :HEAD_SIZE,2字节,块大小

与标记块类似的是,结尾块也是一个固定字节串的块,依次是 C4 3D 7B 00 40 07 00

参考资料:

百度百科-rarRAR 5.0 archive format description.

相关数据

落地活动是什么意思 落地活动的解释

落地活动是什么意思 落地活动的解释

1、落地活动是类似于产品推广的一个活动,在理论上落地属于策略部分。 2、任何的广告战役,都不是对着产品卖产品,为了吸引消费者的关注

08-06 365赌博是什么意思
诺亚传说称号获取全攻略

诺亚传说称号获取全攻略

种族系列 寻宝系列 杀怪系列 夺宝系列 战场系列 BOSS系列 周末活动系列 交友系列 NPC系列 新玩法系列 媒体礼包系列 7.周末活动系列 A、星河智慧

07-14 365bet手机开户
网曝交警铁骑摩托17400元?深圳交警回应了

网曝交警铁骑摩托17400元?深圳交警回应了

△受损摩托车 深圳交警也在微博上与网友互动回应,称“经初查,这部是进口摩托车,出了交通事故,最终赔付以保险公司核定为准。具体详情

08-20 365赌博是什么意思
电音打击垫教程(从零开始学习电音打击垫的使用方法)

电音打击垫教程(从零开始学习电音打击垫的使用方法)

电音打击垫教程 电音打击垫是一种创新的音乐教育工具,它集合了传统的打击乐器和现代的电子音乐技术,让学习者能够以更加有趣和互动的方

07-16 365bet娱乐平台官网
苹果处理器性能排行榜天梯图2024

苹果处理器性能排行榜天梯图2024

​​第一名A17 ProA17 Pr其大核的运行频率为 3.78GHz,小核(能效核心)为 2.11GHz,整体性能较上一代A16芯片有着10%左右的提升,在图形图像,尤其

09-21 365bet手机开户
如何为研究论文选择关键词:逐步指南

如何为研究论文选择关键词:逐步指南

1 最少阅读时间 目录 引言 关键词在研究中的重要性 选择有效关键词的步骤 常见陷阱 FlyRank 如何提供帮助 结论 常见问题解答 引言 想象一下,

09-13 365赌博是什么意思