![]()
标题: [原始]菜鸟的研究结果表明winrar密码不能在几秒钟内破解
作者: 问你
时间: 2008-04-11,15:41
链接: [url] [/ url]
PS: 我是菜鸟新手,这是我第一次来新手,请请专家为我提供任何错误.
研究原因:
因为有一个重要的Rar文件需要解压,所以我首先尝试了ARPC,但是解压缩速度却非常慢,只有每秒30左右,所以我打破了彻底破解的想法,但是我还是不这样做不要放弃. 我从来不提倡详尽的破解方法,除非我每秒可以运行数千万次,否则我可以尝试一下,因此我决定研究Winrar3.x密码算法,以查看是否可以破解密码. . 在查看了Internet上的信息(包括Xue FAQ中的答案)后winrar 压缩算法,他们都声称只能通过详尽的方法来破解它们. 最初,他们不理解,但是通过研究,我了解了高级薛雪在FAQ中说的原因. 让我欣赏Winrar加密思想的成熟. 尽管研究结果并不新鲜,但我还是决定与您分享我的研究结果. 那些仍然认为winrar密码可以像注册码一样被破解的人,可以通过修改文件更改过程(例如winrar弹出框)来实现. 一位跳过密码检查并提供简短说明的朋友.
首先,是Rar文件生成的过程.
Winrar加密文件时,分两个步骤:
1: 首先将源文件压缩到一个数据段中.
2: 再次加密压缩的数据段.

对于相同的源文件,未经加密,压缩后rar文件中的数据段完全相同. 但是对于相同的源文件,即使使用相同的密码,加密后的rar文件中的数据段也有所不同,这是因为加密密钥取决于存储在rar中的Salt(8字节密钥,用于加密)文件头)
因此解密rar加密文件的关键在于数据解密的步骤,然后让我们研究如何加密.
第二,加密“压缩数据段”的过程
1. 获取密钥:
纯文本密码与Salt结合使用,可以通过HASH算法生成两个16字节的密钥. (一个是KEY(AES算法的参数),另一个是initVector)
2. 使用Key和initVector加密压缩数据:
这是一种循环加密结构,每16个字节用作一个块进行加密(这可能就是为什么加密文件的长度始终是16的倍数的原因). 加密使用AES算法(RAR使用AES的rijndael的标准应用程序). 在此处注意: 在进行AES加密之前,存在一个XOR操作,该操作将对每个16字节块与先前16字节块的加密结果进行XOR,然后执行AES算法. 我使用简单的原理图代码查看说明:
; =============================================== =
packblock [0] = packblock [i] ^ initVector
encryptBlock [0] = AES(packblock [0]); (KEY是AES的密钥)
fori = 1至1号区块

packblock [i] = packblock [i] ^ encryptBlock [i-1]
encryptBlock [i] = AES(packblock [i]); (KEY是AES的密钥)
下一个
; packblock [i]表示每16个字节的压缩数据
; encryptBlock [i]表示每16个字节的加密数据
; =============================================== =
三,解密过程
由于AES算法是对称的,因此解密过程是加密过程的逆操作. 但是,解密过程中的AES算法过程与加密过程不同(因为解密过程中KEY生成的子密钥表不同). 我们仍然需要输入密码并生成两个16字节的密钥以及salt,KEY和initVector.
; =============================================== =
packblock [0] = AES1(encryptBlock [0]); (KEY是AES密钥)
packblock [0] = packblock [i] ^ initVector

fori = 1至1号区块
packblock [i] = AES1(encryptBlock [i]); (KEY是AES的密钥)
packblock [i] = packblock [i] ^ encryptBlock [i-1]
下一个
; =============================================== =
那么判断密码是否正确有什么意义呢?
解密过程是将解密的数据块解压缩,然后将其分解为源文件,然后对该文件执行CRC检查. 比较RAR文件中源文件的CRC校验码. 如果密码相同,则密码正确. 如果密码不同,则密码正确. 错误.
四,为什么它不能在几秒钟内被破坏
从上面我们了解了RAR文件的整体思想. 地球上的每个人都知道解密时必须采取步骤来判断密码是否正确. 而且winrar 压缩算法,根据过去的经验,我们也许可以移动某些判断点,从而可以减少破解的过程. RAR的这一步骤在哪里?它将验证置于最后一步. 如果我们想在几秒钟内休息,我们应该如何制造泥浆?至少我认为目前不可能.
让我们撤消解密过程:
1,CRC是否检查此修改跳转?根本没有任何意义,因为这已经是最后一步. 您可以修改RAR文件头的CRC值. 您可以将其更改为与使用任何密码提取的文件的CRC值相同,但是您的文件根本不是原始文件. 这可能是完全无法识别的. 因此,此过程不可行. CRC校验本身是不可逆的

2. 然后对压缩数据进行判断?
解压缩时,有什么方法可以判断压缩数据是否正确?压缩数据有固定的功能吗?可以用作减压判断吗?在此步骤中,我们找不到有效且可用的固定功能. 因为此步骤涉及RAR压缩算法. 即使它是源文件,即使文件的第一部分完全相同,并且仅修改了后一部分,然后在压缩后数据也完全相同. 因为压缩的数据首先是压缩表,然后是编码. 文件不同,扫描后的压缩表也不同,并且编码取决于压缩表,因此这里没有可用于判断的压缩数据的固定特性.
无论压缩数据是什么样,Winrar都会像往常一样进行解压缩,而不会判断压缩数据是否有效.
3. 如果我们破解了AES泥怎么办?
由于AES仅依赖于KEY,因此如果AES算法被破解,我们就知道KEY,我们可以提取压缩数据,但是这里有一个问题,还有一个initVector密钥,用于的前16个XOR字节块,您没有initVector参数,您的第一个16字节块的数据无法解析.
4. 您只能从第一步开始使用哈希算法
即使您可以破解哈希,但是哈希的结果是泥泞的?没有结果,您该如何回退密码.
因此,总而言之,我发现rar的加密受到两种算法的限制,即哈希算法和AES,并且目前都无法破解这两种算法,至少目前没有办法在几秒钟内将其破解,并且我了解薛雪大师的真相.
五,关于彻底提高算法效率的一些想法.
我用Hui完成了RAR穷举解密的算法模块,但是如何提高效率和优化穷举泥浆的速度呢?我有以下想法:
1. 从压缩数据中查找特征,保存解压缩,CRC校验码并生成initVector生成的代码. 目前,通过多次实验,我发现了一个功能(我不知道这是否正确),即解密后的最后16个字节块的最后一个字节必须为0. 因为经过多次实验,我发现加密数据段的长度将比未加密数据长. 然后,在解密最后的16个字节的数据块之后,多余的部分全为0,但是多余的多少个字节是多少?许多实验都有不同的长度. 我尝试从加密数据段的最后一个16字节块开始,仅解决该块以查看一个字节是否为0. 这样,只能解密16个字节的数据. 提高效率?如果可以执行此步骤,则可以通过解决所有数据来判断CRC检查.
2. 如果第一个功能不成立,则对于特定格式的压缩文件(例如doc,jpg等),某些数据是固定的. 压缩数据是否包含相互约束的数据?为了推进判断,这一步,我不知道如何找到压缩数据是否包含相互约束的数据.
(结束)
以上是一些研究,欢迎大家讨论. 关于听说美国情报机构已经完成了RAR文件的第二次破坏,我还在台湾的一个论坛上看到有人提到RAR文件被破坏了. 它很破碎,我不太相信. 我认为像美国情报局这样的组织也许可以在几秒钟内崩溃,但是它应该基于一种非常规手段,这种手段已经用尽了对应表. 只能通过查询密码来完成.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-274059-1.html
轰-6K等强力对地对海攻击飞机