照顾没有接触过Python编程的同学,行文可能会有些啰嗦。

废话少说,我们进入正题。

2.1准备基本材料

/home/ziptest/目录下,我创建了两个文件,一个test.zip,是一个设置了密码的zip包,密码为456789。

dict.txt文件是一个字典文件,简单的配置了几个密码。

下面我们打开开发工具,开始编写测试代码。

2.2 ZIPFILE

在python中操作zip文件,最简单的方式就是使用zipfile模块,使用该模块可以用来判断一个文件是否是压缩文件,创建、解压文件,获取zip文件的元数据信息。可以使用python的help方法查看该模块的使用方法。

这里我们首先关注下ZipFile类

该类用来打开,读取,修改,解压zip文件。我们想要操作一个zip文件,第一步就是初始化ZipFile实例。下面我们打开我们准备好的text.zip文件。

import  zipfile

zFile = zipfile.ZipFile("/HOME/TEST.ZIP");

我们只传了一个路径参数进去,从帮助文档我们可以看到,后面三个参数都有默认值,这里我们使用默认值就够了。

下面我们关注下ZipFile类的extractall方法。

extractall方法,是把压缩包里面的内容都解压出来,三个参数,path是解压的路径,members是需要解压出来的文件,pwd是密码。

现在我们可以测试下文件解压了。

import  zipfile

zFile = zipfile.ZipFile("/HOME/ZIPTEST/TEST.ZIP");zFile.extractall("/HOME/",pwd="456789");

运行这个脚本。

密码正确的话,会正常解压文件。如果密码不正确会出现什么情况呢?我们在代码中输入一个错误的密码。

import  zipfile 

zFile = zipfile.ZipFile("/HOME/ZIPTEST/TEST.ZIP");zFile.extractall(path="/HOME/ZIPTEST",pwd="4567890");

结果如下:

程序会抛出“bad password”的异常。

我们可以通过捕获异常,测试多个密码。

2.3  读取字典文件

在Python中打开文件,使用open方法,这是一个内置方法,查看open的帮助文档,可以看到该方法的参数说明。

open方法返回一个file对象,利用file对象,我们可以读取文件的具体内容。下面我们在代码中测试一下。

import  zipfile

passFile = open('/HOME/ZIPTEST/DICT.TXT');for line in passFile.readlines():password = line.strip('N');print(password);

运行结果如下:

下面我们利用读取到的密码来暴力测试zip文件。

import  zipfile

zFile = zipfile.ZipFile("/HOME/ZIPTEST/TEST.ZIP");passFile = open('/HOME/ZIPTEST/DICT.TXT');for line in passFile.readlines():password = line.strip('N');try:zFile.extractall(path="/HOME/ZIPTEST",pwd=password);print("PASSWORD IS:"+password);exit(0);except:pass;

在上面的代码中,我们使用try—except进行异常捕获,密码不正确的时候,程序跳过继续执行。密码正确的时候打印密码,终止程序。运行结果如下:

到目前为止,我们的脚本已经具备了暴力破解zip文件的功能,大家可以看到只有十几行的代码。下面我们为了提升程序的可用性,重构一下这个脚本,利用函数划分功能。

2.4  重构  用函数划分功能

首先定义一个extractFile函数,该函数接收三个参数,一个zipfile对象,解压的目标路径,密码,如果解密成功则返回密码。

def extractFile(toPath,zFile,password):try:zFile.extractall(path=toPath,pwd=password);return password;except Exception,e:return;

下面我们再声明一个main方法

def main():zFile = zipfile.ZipFile("/HOME/ZIPTEST/TEST.ZIP");passFile = open('/HOME/ZIP/TEST/DICT.TXT');for line in passFile.readlines():password = line.strip('N');guess = extractFile("/HOME/",zFile,password);if guess:print('SCUCESS'+password);exit(0);

main方法中,首先初始化了zipfile对象,然后打开字典文件,循环读取密码,传给extractFile方法调用。

分离 了两个方法之后,我们需要在程序的入口处调用main方法,完整代码如下:

import  zipfile

def extractFile(toPath,zFile,password):try:zFile.extractall(path=toPath,pwd=password);print('SCUCESS'+password);return password;except Exception,e:return;def main():zFile = zipfile.ZipFile("/HOME/ZIPTEST/TEST.ZIP");passFile = open('/HOME/ZIPTEST/DICT.TXT');for line in passFile.readlines():password = line.strip('N');guess = extractFile("/HOME/",zFile,password);if guess:print('SCUCESS'+password);exit(0);if __name__=='__MAIN__':main();

这样一来,代码清晰了很多,但是我们更换zip文件和字典文件的时候,还是需要修改代码,很不方便,正常的程序都应该可以传递参数的,ok,下面我们引入optparse库

2.5 OPTPARSE

Python 有两个内建的模块用于处理命令行参数:

一个是 getopt,《Deep in python》一书中也有提到,只能简单处理 命令行参数;

另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合Unix/Posix规范的命令行说明。

首先先引入optparse模块,然后强制添加两个参数,zip文件名和字典文件名。先看代码:

def main():parser = optparse.OptionParser("usage%prog "+"-f <zipfile> -d <dictFile>");parser.add_option('-f',dest='zname',type='string',help='specify zip file');parser.add_option('-d',dest='dname',type='string',help='specify dict file');(options,args)=parser.parse_args();if(options.zname==None)|(options.dname==None):print parse.usage;exixt(0);else:zname=options.zname;dname=options.dname;zFile = zipfile.ZipFile(zname);passFile = open(dname);for line in passFile.readlines():password = line.strip(' ');guess = extractFile("/home/",zFile,password);if guess:print('scucess'+password);exit(0);

首先初始化一个OptionParser对象,然后添加两个选项——“-f”和“-d”。之后在程序运行的时候通过parse_args方法获取输入的参数,如果参数为空,则打印使用方法,退出程序。

下面使用终端来测试这个程序。

无参数情况下:

输入参数:

2.6 小结

这个程序本身并没有什么难点,但是通过这个入门案例,我们可以体验Python编程的基本方法,如何查看帮助文档,如何引入模块,初始化对象,操作zip文件,打开本地文件,命令行参数设置。

Python:暴力破解zip!相关推荐

  1. Python 暴力破解zip文件密码(相对简单的密码)

               Python 暴力破解zip文件密码(相对简单的密码) 密码的使用范围很广,首先,我们要明确密码的作用,其次要明白密码的类型. 密码的作用是进行权限的限制,判断用户的合法性,(不 ...

  2. python暴力破解压缩包密码(python暴力破解zip压缩包)

    python暴力破解压缩包密码 简介 简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料.ZI ...

  3. python暴力破解Zip文件,就是不讲道理

    本次实验将带领大家用Python的zipfile模块实现Zip文件的暴力破解,涉及的知识点包括:zipfile.argparse的用法等等. 一.实验说明 1. 实验简介 我们在网上好不容易下载到一个 ...

  4. python暴力破解zip加密文件

    目录 前言: 一.破解zip加密文件的思路: 1.准备一个加密的zip文件. 2.zipfile模块可以解压zip文件. 3.itertools.permutations实现全字符的全排列. 二.实操 ...

  5. python 暴力破解zip文件

    基本原理: 暴力破解(一)--python脚本暴力破解 加密的zip压缩文件简介:zip格式是常见的压缩文件格式,它支持压缩时设置解压密码:有两种加密方式:1传统加密方式和普通的加密方式.传统加密方式 ...

  6. 使用python暴力破解zip压缩包的密码

    如果你有压缩包的密码忘记了,并且压缩包的加密算法采用的是ZipCrypto,并且压缩参数如下图所示: 那么你就可以使用本文中的方法进行破解. 压缩包的加密,是根据输入的密码进行运算加密,输入不同的密码 ...

  7. 【脚本工具】Python暴力破解ZIP文件

    # -*-coding:utf-8-*- import itertools import time import zipfilefilepath = "文件路径" uncompre ...

  8. python暴力破解zip密码文件

    原理非常简单,不说了直接上代码 update:说一些注意点,python3.x 下的string不支持bytes编码方式,而python2.x下是支持的.encode(),和decode()方法就是进 ...

  9. Python暴力破解zip文件

    具体解决问题: 下载的zip文件被加锁,密码未包含特殊字符.假设密码是4-8位. 解决方案: 先设定可能出现的字符,存放在一个字符串中.用参数代表密码的长度,然后循环遍历的模式遍历所有可能性. 具体代 ...

  10. Python黑客入门:暴力破解zip,零基础也可以学会!

    照顾没有接触过Python编程的同学,行文可能会有些啰嗦. 废话少说,我们进入正题. 2.1准备基本材料 在/home/ziptest/目录下,我创建了两个文件,一个test.zip,是一个设置了密码 ...

最新文章

  1. 数据库服务器跟网站服务器间传输慢的问题
  2. select刷新后保存原先选择的信息
  3. where to park your bike?
  4. 9开头的两位数相乘速算法
  5. 函数动态参数实现format
  6. 20个堪称神器的Linux命令行软件
  7. Bootstrap中过渡效果(Transition)模态框插件的使用案例
  8. 三层业务类(DAL)必用的通用方法之一
  9. 计算机视觉 滑动窗方法,图像分割相关技术之滑动窗口、RPN以及anchor box简介
  10. php require 输出乱码,php输出乱码
  11. TightVNC进行远程控制
  12. JSP获取浏览者真实IP地址方法
  13. python 读取excel失败 可以转换成csv文件
  14. Flume案例之采集特定目录的数据到HDFS
  15. 卸载pip包并卸载其依赖包
  16. XDT——基于Python的XSS自动化检测工具
  17. 如何用数学课件制作工具推导圆面积公式
  18. vscode中的maven_在VSCode中使用Maven进行JUnit测试
  19. Vulnhub Typhoon-v1.02提权
  20. 【大学生辩论赛】如何练习自己的辩论口才

热门文章

  1. 1-7信号调制与PCM基础(物理层)
  2. CANopen伺服控制-服务数据对象(SDO)详细解析
  3. CN00-复杂网络学习笔记
  4. Kafka SSL服务配置及客户端使用(Linux+Pykafka)
  5. 联想y7000p2020H重装系统后少了各种驱动的解决办法。
  6. Android 高仿墨迹天气“我”页面
  7. 校企合作培育未来新工匠
  8. 成都网站建设SEO 成都网站SEO优化方案制作
  9. 电脑出现无法完成更新,正在撤销更改怎么解决
  10. 【Linux】CentOS7 无法打开终端