Python 黑客 --- 002 入门级 ZIP压缩文件口令暴力破解机
2016-09-02 18:58
387 查看
Python 黑客 入门级实战:ZIP压缩文件口令暴力破解机
使用的系统:Ubuntu 14.04 LTSPython语言版本:Python 2.7.10 V
编写zip 压缩文件口令破解器需要使用到Python 内自带的一个库:zipfile库。
Step 1 .
在终端中输入
python,启动Python交互终端。
aobosir@ubuntu:~$ python Python 2.7.6 (default, Jun 22 2015, 18:00:18) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
使用
help()函数来查看 zipfile 。执行下面的命令来进一步了解 zipfile 这个库。
>>> help('zipfile')
输出:(内容太多,这里只截个图,自己看吧。也可以不用看,因为下面我就使用我自己的语言来介绍这个zipfile库如何使用。)
键盘输入
q退出
help()函数。
Step 2 . 我们先建立一个加密的zip压缩文件:
创建一个文件,取名为:evil
对文件右键,选择:Compress… 压缩
选择
.zip格式,并设置密码为:secret。点击 Create 创建。
现在这个带有口令的 zip 文件就创建出来的。现在我们将原来的
evil文件删除掉:
版本1 使用正确的密码对带有口令的zip文件进行解压
Step 3 .在刚刚创建的带有口令的 zip 文件的路径下,新建一个Python脚本文件取名为:
1-4-4-zipCrack.py
现在,使用 zipfile 库来编写一个简单的解压缩文件的程序:
import zipfile zFile = zipfile.ZipFile("evil.zip") zFile.extractall(pwd="secret")
Step 4 .
接着,运行这个python脚本:
$ ls 1-4-4-zipCrack.py evil.zip $ python 1-4-4-zipCrack.py $ ls 1-4-4-zipCrack.py evil evil.zip
解压成功。
版本2 加入异常处理程序
Step 5 . 删除刚刚解压出来的文件evil
$ rm evil $ ls 1-4-4-zipCrack.py evil.zip
Step 6 . 继续完善程序,加入异常处理程序,我们给
extractall(p)函数的
pwd参数传入错误的密码:
import zipfile zFile = zipfile.ZipFile("evil.zip") try: zFile.extractall(pwd="oranges") except Exception, e: print e
Step 7 . 运行程序
$ python 1-4-4-zipCrack.py ('Bad password for file', <zipfile.ZipInfo object at 0xb742162c>)
因为口令错误,所以抛出异常。
版本3 读取一个字典文件,使用字典文件中的所有单词对带有口令的zip文件进行暴力破解
我们在程序里面读取一个字典文件(下载:dictionary.txt),里面存储的都是常用单词,对每一个单词都测试,是否是Zip文件的口令。Step 8 . 升级后的程序,如下
import zipfile zFile = zipfile.ZipFile("evil.zip") passFile = open('dictionary.txt') for line in passFile.readlines(): password = line.strip('\n') try: zFile.extractall(pwd=password) print '[+] Password = ' + password + '\n' exit(0) except Exception, e: print e
Step 9 . 运行脚本:
$ ls 1-4-4-zipCrack.py dictionary.txt evil.zip $ python 1-4-4-zipCrack.py ('Bad password for file', <zipfile.ZipInfo object at 0xb743962c>) ('Bad password for file', <zipfile.ZipInfo object at 0xb743962c>) ('Bad password for file', <zipfile.ZipInfo object at 0xb743962c>) ('Bad password for file', <zipfile.ZipInfo object at 0xb743962c>) ('Bad password for file', <zipfile.ZipInfo object at 0xb743962c>) [+] Password = secret $ ls 1-4-4-zipCrack.py dictionary.txt evil evil.zip
成功解压
版本4 整理程序,将部分功能代码模块化
Step 10 . 整理程序: 用函数将部分功能代码模块化。在程序里面并没有添加任何新的功能。import zipfile def extractFile(zFile, password): try: zFile.extractall(pwd=password) return password except: return def main(): zFile = zipfile.ZipFile("evil.zip") passFile = open('dictionary.txt') for line in passFile.readlines(): password = line.strip('\n') guess = extractFile(zFile, password) if guess: print '[+] Password = ' + password + '\n' exit(0) if __name__ == '__main__': main()
你可以自己运行试试看,这里就不运行了。
版本5 多线程同时测试字典中的多个口令
之前的版本,都是逐个测试字典词库中的单词,同一时间只测试一个单词。这次的版本利用线程同时测试字典中的多个单词。Step 11 . 删除刚刚解压出来的文件
evil
$ rm evil $ ls 1-4-4-zipCrack.py dictionary.txt evil.zip
Step 12 .
升级后的程序
import zipfile from threading import Thread def extractFile(zFile, password): try: zFile.extractall(pwd=password) print '[+] Found password = ' + password + '\n' except: pass def main(): zFile = zipfile.ZipFile("evil.zip") passFile = open('dictionary.txt') for line in passFile.readlines(): password = line.strip('\n') t = Thread(target=extractFile, args = (zFile, password)) t.start() if __name__ == '__main__': main()
Step 13 . 运行脚本
[+] Found password = secret
版本五 (终极版本) 在终端中制定zip文件 和 字典文件 的路径
Step 14 . 删除刚刚解压出来的文件evil
$ ls
1-4-4-zipCrack.py dictionary.txt evil evil.zip
$ rm evil $ ls 1-4-4-zipCrack.py dictionary.txt evil.zip
Step 15 . 最终的脚本程序
#! /usr/bin/python # -*- coding: utf-8 -*- import zipfile import optparse from threading import Thread def extractFile(zFile, password): try: zFile.extractall(pwd=password) print '[+] Found password = ' + password + '\n' except: pass def main(): parser = optparse.OptionParser("usage: python 1-4-4-zipCrack.py "+\ "-f <zipfile> -d <dictionary>") parser.add_option('-f', dest='zname', type='string',\ help='specify zip file') parser.add_option('-d', dest='dname', type='string',\ help='specify dictionary file') (options, args) = parser.parse_args() if (options.zname == None) | (options.dname == None): print parser.usage exit(0) else: zname = options.zname dname = options.dname zFile = zipfile.ZipFile(zname) passFile = open(dname) for line in passFile.readlines(): password = line.strip('\n') t = Thread(target=extractFile, args = (zFile, password)) t.start() if __name__ == '__main__': main()
Step 16 . 运行:
$ python 1-4-4-zipCrack.py -f evil.zip -d dictionary.txt
[+] Found password = secret
搞定,大功告成
讲解代码:下面这段程序是 帮助程序:
parser = optparse.OptionParser("usage: python 1-4-4-zipCrack.py "+\ "-f <zipfile> -d <dictionary>") parser.add_option('-f', dest='zname', type='string',\ help='specify zip file') parser.add_option('-d', dest='dname', type='string',\ help='specify dictionary file') (options, args) = parser.parse_args() if (options.zname == None) | (options.dname == None): print parser.usage exit(0)
使用下面的两个方式执行
1-4-4-zipCrack.py脚本就可以调用上面的
if语句下的代码。
$ python 1-4-4-zipCrack.py python 1-4-4-zipCrack.py -f <zipfile> -d <dictionary>
$ python 1-4-4-zipCrack.py -h Usage: python 1-4-4-zipCrack.py -f <zipfile> -d <dictionary> Options: -h, --help show this help message and exit -f ZNAME specify zip file -d DNAME specify dictionary file
完
相关文章推荐
- Python 黑客 --- 002 入门级 ZIP压缩文件口令暴力破解机
- python暴力破解含密码的zip压缩文件
- Python处理各种压缩文件(bzip2,gzip,zip)
- python读取zip压缩文件
- Python压缩指定文件及文件夹为zip
- python基础-文件目录压缩(zipfile模块)
- 002_010 Python 处理字符串中的Zip文件 你的程序收到了一个字符串,内容是一个ZIP文件,需要读取zip文件的信息
- python zip文件 压缩
- Python与Hack之Zip文件口令破解
- 【Python】 压缩文件处理 zipfile & tarfile
- 使用Python3解压gz、tar、tgz、zip、rar五种格式的压缩文件例子
- 002_011 Python 将整个目录压缩为Tar文件,并指定压缩方式如gz,bz2
- Python 破解zip压缩文件(来自Python绝技)
- Python压缩解压缩zip文件及破解zip文件密码的方法
- 【python】详解zipfile模块读取处理压缩文件实例
- python zip文件压缩_python
- 002_009 Python 从Zip中读取数据 直接检查一个zip格式的归档文件部分或所有文件而且不用解压
- python脚本编程:使用zip或者tar压缩和解压文件
- 使用Python3写一款轻量级的破解zip压缩文件的工具
- python zip文件 压缩