本人也不会,请期待其他网友答复。
抱愧!
那类软件多半都是穷举法的暴力破解,就是用无数了密码挨个去试验。若是压缩包的密码很长,并且密码数字混合,搞欠好要一个月才气试出来,就算是6位的,也要好几天,所以仍是别破解了
若是必然要破解能够下载解压包密码破解东西,停止破解,网上良多,但是木马也良多,留意杀毒和用影子系统庇护你的电脑
间接转载看雪论坛一篇帖子中关于此事的部门,楼主看了就会大白的
一、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两种算法互相牵造,而两种算法当前都无法破解,至少目前还没有法子秒破。