介绍:
大家也许碰到过这种情况,从网络上下载了一个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
版权声明:本文为博主原创文章,转载请附上博文链接!