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中list列表的高级函数
May 17 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
python网络爬虫学习笔记(1)
Apr 09 Python
对python3 urllib包与http包的使用详解
May 10 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
Python list运算操作代码实例解析
Jan 20 Python
Python web如何在IIS发布应用过程解析
May 27 Python
python与pycharm有何区别
Jul 01 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
基于Python正确读取资源文件
Sep 14 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
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
详解vue使用插槽分发内容slot的用法
2019/03/28 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
Python应用库大全总结
2018/05/30 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Keras自定义IOU方式
2020/06/10 Python
Python pip 常用命令汇总
2020/10/19 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
大学生最常用的自我评价
2013/12/07 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
电影雷锋观后感
2015/06/10 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python