Python压缩解压缩zip文件及破解zip文件密码的方法


Posted in Python onNovember 04, 2015

python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。

例如,在py脚本所在目录中,有如下文件:

readability/readability.js
readability/readability.txt
readability/readability-print.css
readability/sprite-readability.png
readability/readability.css

将 readability 目录中的文件压缩到脚本所在目录的 readability.zip 文件中,保持相同的文件结构,然后打印出生成的压缩包 的文件列表,再用两种方式分别解压文件到脚本所在目录的 output 目录和 output/bak 目录中。

脚本如下:

#!/usr/vin/env python
# coding: utf-8
"""
压缩和解压zip文件
"""

import os
import zipfile

def compress(zip_file, input_dir):
  f_zip = zipfile.ZipFile(zip_file, 'w')
  for root, dirs, files in os.walk(input_dir):
    for f in files:
      # 获取文件相对路径,在压缩包内建立相同的目录结构
      abs_path = os.path.join(os.path.join(root, f))
      rel_path = os.path.relpath(abs_path, os.path.dirname(input_dir))
      f_zip.write(abs_path, rel_path, zipfile.ZIP_STORED)

def extract(zip_file, output_dir):
  f_zip = zipfile.ZipFile(zip_file, 'r')

  # 解压所有文件到指定目录
  f_zip.extractall(output_dir)

  # 逐个解压文件到指定目录
  for f in f_zip.namelist():
    f_zip.extract(f, os.path.join(output_dir, 'bak'))

def printdir(zip_file):
  f_zip = zipfile.ZipFile(zip_file, 'r')
  print '== printdir() ============================'
  f_zip.printdir()
  print
  print '== namelist() ============================'
  for f in f_zip.namelist():
    print f

if __name__ == '__main__':
  zip_file = 'readability.zip'
  compress(zip_file, os.path.join(os.getcwd(), 'readability'))
  printdirzip_file)
  extract(zip_file, 'output')</pre>

python暴力破解含密码的zip压缩文件
思路:

1.先自己生成一份txt的密码字典

2.然后读取出来,一个个的尝试,当密码错误是,程序会报错中断,所以密码错误,要使用pass

3.当解压缩成功后,中断程序,输出正确密码

import zipfile
import os
from threading import Thread
import time
#压缩文件的路径
path = r'C:\Users\Administrator\Desktop\moeMaid-master.zip'
#password='1234'

def pojie_zip(path,password):
 if path[-4:]=='.zip':
  #path = dir+ '\\' +file
  #print path
  zip = zipfile.ZipFile(path, "r",zipfile.zlib.DEFLATED)
  #print zip.namelist()
  try:
   #若解压成功,则返回True,和密码
   zip.extractall(path='C:\\Users\\Administrator\\Desktop\\',members=zip.namelist() , pwd=password)
   print ' ----success!,The password is %s' % password
   zip.close()
   return True
  except:
   pass #如果发生异常,不报错
  print 'error'
  
  
def get_pass():
 #密码字典的路径
 passPath='C:\\Users\\Administrator\\Desktop\\zip.txt'
 passFile=open(passPath,'r')
 for line in passFile.readlines():
  password=line.strip('\n')
  print 'Try the password %s' % password
  if pojie_zip(path,password):
   break
 passFile.close()
if __name__=='__main__':
 start=time.clock()
 get_pass()
 print "done (%.2f seconds)" % (time.clock() - start)

Python压缩解压缩zip文件及破解zip文件密码的方法

这是我解压缩一个5.4M文件的速度,其实时间都花在了解压缩上了

Python 相关文章推荐
巧用Python装饰器 免去调用父类构造函数的麻烦
May 18 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
记录Python脚本的运行日志的方法
Jun 05 Python
利用Python校准本地时间的方法教程
Oct 31 Python
Django框架模板用法入门教程
Nov 04 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
python 瀑布线指标编写实例
Jun 03 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
Python学习之time模块的基本使用
Jan 17 Python
python通过文件头判断文件类型
Oct 30 #Python
python制作花瓣网美女图片爬虫
Oct 28 #Python
python制作最美应用的爬虫
Oct 28 #Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 #Python
详解JavaScript编程中的window与window.screen对象
Oct 26 #Python
深入讲解Python中的迭代器和生成器
Oct 26 #Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 #Python
You might like
set_include_path在win和linux下的区别
2008/01/10 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
js 目录列举函数
2008/11/06 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
layui导航栏实现代码
2017/05/19 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python的高级Git库 Gittle
2014/09/22 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
几个SQL的面试题
2014/03/08 面试题
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
仓库管理制度
2014/01/21 职场文书
大学军训感言600字
2014/02/25 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Nginx配置https的实现
2021/11/27 Servers
对象析构函数__del__在Python中何时使用
2022/03/22 Python