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的ORM框架SQLObject入门实例
Apr 28 Python
Python循环语句中else的用法总结
Sep 11 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
Linux下python3.7.0安装教程
Jul 30 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python实现超市商品销售管理系统
Oct 25 Python
python二维键值数组生成转json的例子
Dec 06 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
python创建字典及相关管理操作
Apr 13 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Flask数据库迁移简单介绍
2017/10/24 Python
详解Python自建logging模块
2018/01/29 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
详解Python装饰器
2019/03/25 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
如何通过python实现人脸识别验证
2020/01/17 Python
pycharm导入源码的具体步骤
2020/08/04 Python
个人简历自我评价
2014/01/06 职场文书
班主任评语大全
2014/04/26 职场文书
排查整治工作方案
2014/06/09 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
教师个人考察材料
2014/12/16 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python