Zip加密文件破解

大家也许碰到过这种情况,从网络上下载了一个zip文件,最后却发现它是用密码保护的。或者自己用密码加密了一个很重要zip文件,但是一段时间后忘记了密码,无法打开。这个时候,可能就需要对这个加密文件进行破解了。
来源于:

https://blog.csdn.net/jiangwlee/article/details/6911087
随机计算机性能的提高,很多人可能觉得找到一个zip文件的密码是一件很简单的事情。通常,破解zip文件有三种方法:暴力破解、字典攻击,以及明文攻击。

 

在介绍这三种方法之前,我先给大家介绍几个工具:

AZPR : http://www.elcomsoft.com

UZPC : http://www.chat.ru/~m53group

PKCrack : http://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack.html

 

具体怎么使用,大家可以参照他们的文档,很详细。当然,你也可以通过搜索引擎选择其他的工具,相信还可以找到很多。好,下面开始进入正题。

 

第一步 – 了解目标文件

俗话说,知己知彼,百战不殆。在进行破解之前,全面了解加密的文件可以帮助我们获得很多有用的信息。比如,用WinRAR(windows)或者‘unzip -l’(linux)命令来获取压缩包的目录结构,和它所包含的文件信息。你时刻要提醒自己注意的是,有没有可能知道某个加密文件的部分信息。比如说,一个简单的文本文件(readme.txt),或者通用的dll文件(VBXXX.dll、MFCXX.dll),或者是一个通用的.exe文件(SETUP.EXC)。尽可能的去发现任何你可能发现的东西,这一点非常重要。如果你得不到加密文件里的任何片段,那么很遗憾,你将无法使用明文攻击这一最有效的破解利器。

 

让我们来比较一下破解的三种方法:

1.      暴力破解。这是最花时间的一种破解方式,除此之外你还能期待些什么?正如它的名字所表达的,暴力破解就是不断的去尝试所有可能的密码。如果密码比较短,或许在短时间内可以找到正确的密码。但是如果比较长,比如说用64个字符长的字符串来做密码的话,可能你重生十次后发现依然未能找到答案。

2.      字典攻击。相比于暴力破解这种弱智儿童,字典攻击大概就是三岁小孩的智商。它使用了一个字典文件,然后一一尝试文件中的每个密码。现在在网络上有很多的人相互共享自己的字典文件,这使得字典攻击比暴力破解有效率得多。尤其是当目标文件是用一个弱密码进行保护的时候,字典攻击效率较高。但是,由于字典攻击没有囊括所有可能的密码,所以对于强密码保护的zip文件,字典攻击毫无办法。

 

好,现在让我们来进入最有意思的一种方法:

3.      明文攻击。这是到目前为止最智能的一种攻击方法,但只有PKCrack可以做到。眼见为实,你可以亲自尝试一下。但是首先,你需要一些前提条件:

–         一个加密的压缩文件(这是当然的,没有它你看这篇杂记干嘛)

–         了解压缩文件的zip版本(比如加密平台、zip版本号等,可以通过文件属性了解。如果是linux平台,用unzip -v命令可以查看一个zip包的详细信息,包括加密算法等。)

–         知道压缩包里某个文件的部分连续内容(至少12字节)

–         运气

 

第二步 – 破解

如果你已经知道加密文件的部分内容,比如在某个网站上发现了它的readme.txt文件,你就可以开始尝试破解了。首先,将这个明文文件打包成zip包,比如将readme.txt打包成readme.zip。打包完成后,需要确认二者采用的压缩算法相同。一个简单的判断方法是用winRAR打开文件,同一个文件压缩后的体积是否相同。如果相同,基本可以说明你用的压缩算法是正确的。如果不同,就尝试另一种压缩算法。

 

现在,你有了两个文件:

1.      加密了的目标文件crypt.zip

2.      你获取到的明文(readme.txt)生成的zip包plain.zip

 

假设两个文件的结构如下:

Crypt.zip

|–folder1

>– file1.txt

|– folder2

>– readme.txt

 

Plain.zip

|– readme.txt

 

然后,通过控制台调用pkcrack:

pkcrack –c “folder1/readme.txt” –p readme.txt–C crypt.zip –P plain.zip

 

几个参数的意义如下:

–         C : 要破解的目标文件(含路径)

–         c :破解文件中的明文文件的名字(其路径不包括系统路径,从zip文件一层开始)

–         P :压缩后的明文文件

–         p : 压缩的明文文件中明文文件的名字(也就是readme.txt在plain.zip中的位置)

 

如下是一个解密过程的截图:

 

F:\Temp>pkcrack -c crypt -p plain -Ccrypt.zip -P plain.zip

Files read. Starting stage 1 on Thu May 1311:11:35 1999

Generating 1st generation of possiblekey2_889 values…done.

Found 4194304 possible key2-values.

Now we’re trying to reduce these…

Done. Left with 6963 possible Values.bestOffset is 24.

Stage 1 completed. Starting stage 2 on ThuMay 13 11:18:37 1999

key0=68d3ae85, key1=423d2b7c, key2=425b028e

Probabilistic test succeeded for 870 bytes.

Stage2 completed. Starting password searchon Thu May 13 12:10:36 1999

Key: XX XX XX XX…

Or as a string: ‘xxxxxxxx’ (withoutenclosing single quotes)

Finished on Thu May 13 12:10:37 1999

 

这里有一个要注意的地方:pkcrack在vista和win7下面无法正常运行,所以请保证操作系统是xp或者linux。

pkcrack还有一个重要的选项是-d,后面跟一个文件名,比如decrypt.zip,表示解密后的zip文件输出。虽然在这个例子中,我没有用到这个选项,但是强烈推荐使用这一选项。如果不用这一选项,解密的时间非常长,而使用这一选项的话,一般只要几分钟。至于为什么不用会变慢,大家可以参照它的readme文档,大概是跟一个叫做findkey的程序有关,这里就不多解释了。

 

如何简单的避免密码破解呢?

对于明文攻击,最简单有效的方法是进行两次zip加密,这样明文文件的信息就不会暴露在破解者的眼皮底下。对于字典攻击,避免使用弱密码,采用数字加字符的方式生成密码。对于暴力破解,采用7个字符以上的密码就可以让破解者见鬼去了。
———————
作者:jiangwlee
来源:CSDN
原文:https://blog.csdn.net/jiangwlee/article/details/6911087

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧