发信人: Yt_Yan@bbs.ustc.edu.cn (严某人), 信区: cnhacker
标  题: 如何求取arj的口令
发信站: 中国科大BBS站 (Sat Apr  5 20:33:15 1997)
转信站: Lilac!ustcnews!ustcnews!ustcbbs

发信人: jianzi ( 甜甜的,胖胖的~~~), 信区: Computer 
标  题: 如 何 求 取 ARJ的 口 令  
日  期: Thu Oct 17 13:39:01 1996 
 
------------------------------------------------------------------------ 
如 何 求 取 ARJ的 口 令  
       北 京 5122信 箱 11号 (100094)  闵 永 明  
------------------------------------------------------------------------ 
ARJ是 目 前 被 广 泛 使 用 的 一 个 压 缩 软 件 ,因 其 压 缩 效 率 高 ,速 度  
快 ,可 供 选 择 的 参 数 多 而 深 受 用 户 喜 爱 。 其 中 有 一 个 参 数 -g,提  
供 文 件 压 缩 时 的 口 令 加 密 功 能 。 许 多 用 户 在 使 用 -g加 密 文 件  
后 ,忘 记 了 自 己 的 口 令 ,无 法 成 功 地 解 压 缩 自 己 的 重 要 文 件 。  
 
实 际 上 ,ARJ的 口 令 加 密 原 理 十 分 简 单 ,它 只 是 对 口 令 先 进 行 置  
换 ,再 用 置 换 后 的 口 令 模 2加 文 件 的 压 缩 内 容 ,而 口 令 的 置 换 是  
用 当 前 的 时 钟 变 换 后 得 到 的 常 数 模 2加 口 令 的 每 个 字 节 。 怎  
样 由 当 前 时 钟 得 到 上 述 常 数 并 不 重 要 ,因 为 该 常 数 已 存 储 于  
加 密 压 缩 文 件 的 头 信 息 中 。  
 
    假设       P=口令 
               P'=置换后的口令 
               A=待加密后的压缩文件 
               A'加密后的压缩文件 
               C=常数 
               ^=模2加 
 
根 据 P'=P^C,A'=A^P'得 到 P=C^A^A',由 于 C和 A'已 知 ,所 以 ,若 能 知 道 A  
,便 可 求 出 口 令 P。 如 何 得 到 A呢 ?如 果 你 有 待 压 缩 的 原 始 文 件  
的 备 份 ,通 过 ARJ压 缩 便 可 得 到 A,从 而 求 出 P。 但 若 没 有 原 始 文  
件 的 备 份 ,解 决 问 题 的 关 键 便 在 于 尽 可 能 准 确 地 猜 出 原 始 文  
件 中 的 起 始 内 容 ,形 成 小 文 件 ,不 加 口 令 对 该 小 文 件 进 行 ARJ压  
缩 ,得 到 的 文 件 即 是 还 原 口 令 所 需 A的 一 部 分 。 根 据 P=C^A^A',当  
A正 确 时 ,C^A^A'序 列 应 当 是 口 令 的 不 断 反 复 。  
下 面 对 压 缩 文 件 的 头 信 息 的 结 构 加 以 详 细 说 明 。  
每 个 压 缩 文 件 中 的 头 信 息 都 包 括 二 种 类 型 ,一 种 是 主 头 信 息  
(main header),一 种 是 分 头 信 息 (local header),主 头 信 息 描 述 整 个 压  
缩 文 件 (.arj,.a01等 ),分 头 信 息 描 述 每 个 具 体 的 压 缩 文 件 。  
主 头 信 息 的 结 构 如 下 :  
    字节数     描述 
    2       头信息标志=0XEA60(即十进制数60000),存放时低位在前。 
    2        
基本头信息大小=首头信息大小+文件名长+1+注释长+1或=0(如果是文件尾)。 
    1       首头信息大小 
    1       版本号 
    1       解压缩须使用的最低版本号 
    1       主机的操作系统(0=MSDOS,1=PRIMOS,2=UNIX,3=AMIGA,4=MACOS,  
            5=OS/2,6=APPLE GS,7=ATARI ST,8=NEXT,9=VAX VMS) 
    1       arj标志(0x01=未用,0x02=保留,0x04=卷标志,0x10=路径符号标志,"\"变为"/",  
            0x20=备份标志) 
    1       保留 
    1       文件类型(2=注释头信息) 
    1       保留 
    4       文件的创建日期时间 
    4       文件的修改日期时间 
    4       保留 
    4       保留 
    4       保留 
    2       在多卷压缩文件中的位置 
    ?       文件名(以空字符结束,字节数=文件长+1) 
    ?       注释(以空字符结束,字节数=注释长+1) 
    4       基本头文件信息校验码 
    2       第一个扩展头信息大小(如果没有则为0) 
    4       第一个扩展头信息的校验码,当扩展头信息大小是0时本项为空 
分 头 信 息 的 结 构 如 下 :  
    字节数     描述 
    2       头信息标志=0XEA60(即十进制数60000)存放时低位在前 
    2       基本头信息大小=首头信息大小+文件名长+1+注释长+1或=0(如果是文件尾) 
    1       首头信息大小 
    1       版本号 
    1       解压缩须使用的最低版本号 
    1       主机的操作系统(0=MSDOS,1=PRIMOS,2=UNIX,3=AMIGA,4=MAC-OS,  
            5=OS/2,6=APPLE GS,7=ATARI ST,8=NEXT,9=VAX VMS) 
    1        
arj标志(0x01=加口令文件,0x02=保留,0x04=卷标志,0x08=表示多卷压缩时文 
            件的起始位置段,0x10=路径符号标志,"\"变为"/",0x20=备份标志) 
    1       压缩方式(0=存储,1=最大压缩...4=最快压缩) 
    1       文件类型(0=二进制,1=7位文本,3=目录,4=卷标) 
    1       用于与口令进行模2加的常数 
    4       文件的修改时间日期 
    4       压缩内容大小 
    4       原始文件大小 
    4       原始文件的校验码 
    2       某个文件在当前压缩文件中的位置 
    2       文件的存取方式 
    2       主机数据(当前该2字节未用) 
    ?       4字节(当使用了arj标志中的分卷标志0x08时)或空 
    ?       文件名(以空字符结束,字节数=文件名长+1) 
    ?       注释(以空字符结束,字节数=注释长+1) 
    4       基本头文件信息校验码 
    2       第一个扩展头信息大小(如果没有则其值为0) 
    4       第一个扩展头信息的校验码,当扩展头信息大小是0时本项为空 
    ?       文件的压缩内容 
头 信 息 中 的 日 期 占 2字 节 ,时 间 占 2字 节 ,具 本 如 下 :  
    31   30   29   28  27  26   25   24   23   22   21   20   19    18   17  16 
    |<-          年-1980         ->|<-       月      ->|<-         
日        ->| 
    15     14   13   12  11  10   9     8     7    6    5     4     3   2   1 0 
    |<-       时          ->|<-        分           ->|<-          
秒/2               ->| 
 
下 面 举 例 简 要 说 明 文 件 头 信 息 (ARJ版 本 为 2.41a)。  
先 建 立 一 个 文 件 myfile,其 内 容 为 英 文 1至 10:  
one two three four five six seven eight nine ten  
用 口 令 helpme加 密 压 缩 ,arj a -ghelpme myfile.arj myfile.  
用 PCTOOLS查 看 my-file.arj,可 看 到 如 下 内 容 :  
    Displacement     Hex codes 
    0000(0000)    60 EA 2A 00 1E 06 01 00 10 00 02 CF CF 84 ED 1E 
    0016(0010)    58 46 F3 20 00 00 00 00 00 00 00 00 00 00 00 00 
    0032(0020)    00 00 4D 59 46 49 4C 45 2E 41 52 4A 00 00 22 70 
    0048(0030)    35 0E 00 00 60 EA 26 00 1E 06 01 00 11 01 00 58 
    0064(0040)    4C 46 F3 20 2E 00 00 00 34 00 00 00 06 8A 01 3D 
    0080(0050)    00 00 20 00 00 00 4D 59 46 49 4C 45 00 00 F5 49 
    0096(0060)    06 24 00 00 C0 8C 8F BA AC F5 D5 CB 82 36 24 3B 
    0112(0070)    93 EC CD C8 9A 43 FA 9D F0 F1 D2 49 CB D4 E0 A2 
    0128(0080)    FC 9E 8B 19 96 34 94 54 B0 EB 1E 0B 6A 9D 7E CC 
    0144(0090)    58 C8 60 EA 00 00 
根 据 文 件 头 信 息 可 知 ,0000-0051共 52个 字 节 为 主 头 信 息 (低 位 在  
前 ):60 EA为 主 头 信 息 标 志 ,2A 00(即 42)为 主 头 信 息 长 度 ,1E(30)为 首  
头 信 息 长 度 ,06为 当 前 A RJ版 本 号 ,01为 解 压 缩 须 使 用 的 最 低 版  
本 ,00表 示 主 机 操 作 系 统 为 DOS,10为 ARJ标 志 ,00保 留 ,02表 示 提 示 头  
,CF保 留 字 节 ,CF 84表 示 16时 38分 30秒 ,ED 1E表 示 1995年 7月 13日 ,58  
46表 示 8时 50分 48秒 ,F3 20为 1996年 7月 19日 ,00 00... 00(12个 00)为 保 留  
位 ,00 00表 示 myfile在 myfile.arj中 的 起 始 位 置 ,4D 59 46 49 4C 45 2E 41  
52 4A 00为 文 件 名 MYFILE.ARJ,00为 注 释 ,22 70 35 0E 为 主 头 信 息 校 验  
码 ,00 00为 扩 展 头 长 度 。  
 
 
0052-0099共 48个 字 节 为 分 头 信 息 (低 位 在 前 ):60 EA为 分 头 信 息 标  
志 ,26 00(即 38)为 分 头 信 息 长 度 ,1E(30)为 首 头 信 息 长 度 ,06为 当 前  
ARJ版 本 号 ,01为 解 压 缩 须 使 用 的 最 低 版 本 ,00表 示 主 机 操 作 系 统  
为 DOS,11为 ARJ标 志 ,表 示 加 密 压 缩 ,01表 示 最 大 压 缩 ,00表 示 文 件  
类 型 为 二 进 制 ,58为 模 2加 口 令 的 常 数 ,4C 46表 示 8:50"24",F3 20为  
1996年 7月 19日 ,2E 00 00 00(46)为 压 缩 内 容 大 小 (压 缩 率 为 88.5%),34  
00 00 00(52)为 原 始 文 件 大 小 , 06 8A 01 3D为 原 始 文 件 的 校 验 码 ,00  
00为 文 件 位 置 ,20 00表 示 文 件 存 取 方 式 为 归 档 ,00 00主 机 数 据 (未  
用 ),4D 59 46 49 4C 45 00为 文 件 名 MYFILE,00为 注 释 ,F5 49 06 24为 分 头  
信 息 校 验 码 ,00 00为 扩 展 头 长 度 。  
0100-0145(C0 8C 8F BA... 7E CC 58 C8)共 46个 字 节 为 myfile文 件 的 压 缩 内  
容 。  
60 EA 00 00表 示 压 缩 文 件 结 束 。  
------------------------------------------------------------------------ 

--
※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:211.499毫秒