本页目录
介绍
大家也许碰到过这种情况,从网络上下载了一个 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 打开文件,同一个文件压缩后的体积是否相同。如果相同,基本可以说明你用的压缩算法是正确的。如果不同,就尝试另一种压缩算法。
现在,你有了两个文件:
-
加密了的目标文件 crypt.zip
-
你获取到的明文(readme.txt)生成的 zip 包 plain.zip
假设两个文件的结构如下:
Crypt.zip |--folder1 >-- file1.txt |-- folder2 >-- readme.txtPlain.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
版权声明:本文为博主原创文章,转载请附上博文链接!
