建议楼主,要么持续回忆口令,要么放弃,因为 。。。
目前所有针对WINRAR加密口令号称能停止破解的东西,其实都是穷举法暴力破解(也就是理论上在你能够忍受的时间限度内,一一对所有可能的口令试用一遍----天文级此外数目 + 天文级此外时间
所有号称有智能成效的针对WINRAR口令东西,素质上就是以各类动听的名称替利用者主不雅臆断出一个缩小的范畴。
。。。。。其实实正的口令同样有50%的可能在臆断放弃的那部门里
那一切都是因为WINRAR的加密算法和流程的严谨所致
若是照旧认为破解WINRAR加密口令除了胡试试看还有此外有效法子,下面供给WINRAR的加密步调内情。。。一看就懂了
一、Rar文件生成的流程。
Winrar加密文件时,总的分两个步调:
1:先把源文件压缩,压成一段数据段。
2:再将压缩完的数据段加密。
关于统一个源文件来说,不停止加密,压缩完,其rar文件中的数据段是一模一样的。但是若是对统一个源文件来说,即便利用统一个密码,加密完rar文件中的数据段是纷歧样的,那是因为加密的密钥是依靠于一个Salt(8个字节的密钥,用来加密时利用,存放在rar文件头中里)
所以要解密rar加密文件关键在于数据解密那一步,接下来研究一下若何加密的。
二、加密“压缩完的数据段”的流程
1、获取密钥:
将明文的密码与Salt一路,通过HASH算法,生成两个16字节的密钥。(一个是KEY(AES算法的参数),一个是initVector)
2、以Key和initVector来加密压缩数据:
那里,是一个轮回加密的构造,每16字节做为一个块,停止加密(那可能恰是为什么加密完的文件长度总为16倍数的原因)。
加密接纳AES算法(RAR接纳的是AES的rijndael的尺度应用)。那里留意:AES加密前,有一个异或运算,是先将每16字节块与上一个16字节块加密成果停止异或,然后再停止AES算法的。用一个简单的示意代码看申明:
packblock[0]=packblock[i]^initVector
encryptBlock[0]=AES(packblock[0]) ;(KEY为AES的密钥)
for i=1 to 块数量-1
packblock[i]=packblock[i]^encryptBlock[i-1]
encryptBlock[i]=AES(packblock[i]) ;(KEY为AES的密钥)
next
;packblock[i]暗示压缩完的每16字节数据
;encryptBlock[i]暗示加密完的每16字节数据
三、解密的过程
因为AES算法是对称的,所以解密的过程,是加密过程的逆运算。
但解密时AES算法过程与加密所用的纷歧样(是因为解密过程中由KEY生成的子密钥表纷歧样)。仍然需要将密码输入,与salt一路生成两个16字节密钥,KEY和initVector。
packblock[0]=AES1(encryptBlock[0]) ;(KEY为AES的密钥)
packblock[0]=packblock[i]^initVector
for i=1 to 块数量-1
packblock[i]=AES1(encryptBlock[i]) ;(KEY为AES的密钥)
packblock[i]=packblock[i]^encryptBlock[i-1]
next
那判断密码能否准确的在什么处所呢?
解密的过程是解密后的数据块停止解压缩,然后解成源文件,对该文件停止CRC校验,存在RAR文件中的源文件CRC校验码比力,不异则密码准确,不不异则密码错误。
四、无法秒破的原因
从上面,根本领会了RAR文件的整体思绪。解密时,必定有个步调是来判断密码的准确与否。并且,根据以往的经历,也答应以将某些判断的点挪动,那样能够缩减破解的流程思绪。那RAR的那一步在哪里?它把校验放在了最初的一步。
若是要秒破,至少目前是不成能的。
从解密过程逆反过来看看:
1、CRC查验那一块修改跳转?底子毫无意义,因为它已经是最初一步了。你能够修改RAR文件头的CRC值,你能够将它改得和你用肆意密码解压出来的文件CRC值一样,但你的文件底子就不是本来的文件了。
可能已经完全面目全非了。所以,对那一过程不成行。CRC校验自己是不成逆的
2、那么把判断提早到压缩完的数据?
解压的时候,有没有什么来判断压缩数据能否准确?压缩完的数据,有没有固定的特征,能否能够做为解压的判断,在那一步里,也无法找到有效的可用的固定特征。
因为那一步涉及到RAR的压缩算法。即便一个源文件,即便你的文件前一部门是完全不异的,只对后面的部门停止改正,那么压缩完,数据也是完全一样的。因为压缩完的数据起首是一个压缩表,后面是编码。文件纷歧样,扫描完的压缩表也纷歧样,编码又是依靠于压缩表,所以,那里头找不到压缩完的数据有任何的固定特征能够用来判断的。
不管压缩数据是什么样的,Winrar都一如既往地停止解压,没有停止压缩数据能否有效的判断。
3、那假设破解了AES呢?
因为AES只依靠于KEY,若是AES算法被破解了,即晓得了KEY,就能够解出压缩完的数据,但是那里有一个问题,还有一个initVector密钥,用来第一个16字节块的异或,没有initVector参数,第一个16字节块的数据便无法解得出来。
4、那就只能从第一步Hash的算法动手
即便能破解hash,但hash后的成果呢?没有成果,怎么返推密码?
所以综上,rar的加密是由hash和AES两种算法互相牵造,而两种算法当前都无法破解,至少目前还没有法子秒破。
把文件发过来尝尝,azzipi@